开启智能合约新时代,Qtum-x86虚拟机优势何在?

量子链区块大康2019-11-12 21:29:43  阅读 -评论 0  阅读原文

前言

随着Qtum-x86虚拟机的设计与开发工作的不断推进,更多的开发细节逐渐浮出水面。虚拟机在区块链世界中拥有多重要的位置?Qtum-x86虚拟机在这个领域里的特别之处与优势在哪里?

进入主题之前,让我们先花一点时间,简单回顾一下区块链的历史。2009年开始运行的比特币使用操作码(opcodes)在底层操纵UTXO,实现用户在上层能够感知到的"转账"功能。实际上比特币的世界里并没有账户概念,每个用户钱包里的余额就是他所有UTXO的加总,就像你实际拥有的钱包一样,钱包的余额等于里面钞票的总和。

没过多久,"密码朋克"们开始在比特币协议上夹带私货,发明了利用OP_RETUN记录信息的omni layer和一系列彩色币,并开始改造比特币代码发行新链。这种发行方式过于复杂。随后,出现了允许用户在其链上发行资产的区块链。这类区块链给用户提供了接口,并可以输入一些币的参数,如发行量、最小单位等,大大简化了发币成本。但这种方式并没有真正流行起来,因为出现了发币更简便、功能更多元的公链——以太坊。以太坊在区块链上实现了智能合约,用户可以使用以太坊特有的Solidity语言编写代码,编译成字节码后在节点的以太坊虚拟机EVM上运行。

区块链虚拟机的进化史

从虚拟机到区块链虚拟机

虚拟机,或者说虚拟化技术,历史远长于区块链。从最开始的大型机分时系统开始,到操作系统虚拟机、编程语言虚拟机、服务器虚拟化、容器化等技术,经过了数十年的发展,此类技术已经相对成熟,并被应用于很多场景。其核心在于,将应用程序的运行环境与实际的操作系统和硬件隔离开,将计算资源抽象化,使应用程序不局限于硬件或者操作系统的环境。

回到区块链领域,在区块链上使用虚拟机主要出于两个目的:可验证与安全。

可验证才能达成共识,而共识是区块链能够实现信任的原因。普通应用程序对可验证性几乎没有要求,由于运行环境软硬件的区别,同样的程序在不同客户端的运行结果可能并不完全一致。对中心化应用来说不是问题,因为有服务器对数据进行同步,但对于去中心化的区块链来说,这种差异会造成无法达成共识,因此无法接受,所以需要一个统一的虚拟环境来确保智能合约运行结果可验证。

区块链对安全的高要求也是出于其去中心、不可逆的特性。虚拟化的运行环境能减少合约对别的合约以及区块链平台本身的影响,提高系统的安全性。

出于这些独特的要求,以太坊在创立之初设计了Solidity语言及对应的以太坊虚拟机。而Qtum量子链综合了比特币和以太坊的优势,目前也使用EVM作为平台的虚拟机。目前在区块链领域的虚拟机主要可以分为两大流派:

  • 源自EVM、运行Solidity的虚拟机
  • 运行WASM(WebAssembly)虚拟机

这两者中,EVM类的虚拟机应用得更为广泛,包括Qtum在内的很多公链都选择兼容EVM。虽然Solidity的开发与常见的编程语言设计上差别较大,但多年的发展与先发优势让其拥有了相对广泛的开发者群体,并且就区块链领域来看,其开发环境、工具链、标准框架等资源也最为成熟与丰富。

Solidity综合了JavaScript、Go、C++等多种语言的特点,整体语法类似JavaScript。使用高级语言编写完代码后将由编译器编译成EVM字节码,将字节码交给EVM进行运行。EVM是一个栈结构的虚拟机,与大部分计算机的寄存器模型有所不同,所以虚拟机执行字节码时需要进一步解释成机器码,在物理机上运行。

EVM为以太坊区块链量身定做,但这也造成了虚拟机与链的深度耦合,现有的EVM很难兼容Solidity之外的语言。而EVM与Solidity的设计较为仓促,留下了一系列被人诟病的问题,如所有的键与值都是256位,在物理机上执行时需要很多额外优化;编程语言虽然实现了图灵完备性,但缺少很多高级语言的特性;生成的字节码大,浪费区块空间;gas模型不合理,难以估计gas消耗,修改模型又会影响现有合约;合约无法升级等。EVM的升级从未停止,但困难重重,仅仅重入攻击问题就花费了很多精力,仍未彻底解决,并直接造成了君士坦丁堡硬分叉的推迟。以太坊团队在数年前就开始了对WASM的研究,并准备在ETH2.0上应用新虚拟机WASM。

为何提出Qtum-x86虚拟机?

Qtum-x86虚拟机从何而来

由于EVM的先天缺陷,就引出了区块链虚拟机的第二大类——WASM虚拟机。这一类虚拟机被很多新项目和在研究开发之中的项目所采用。WASM并不是一种高级语言,而是一种在编译过程中产生的字节码规范。WASM背后有Google、Microsoft等大公司的开发支持,初衷是作为web端JavaScript的一种补充,用来更高效地支持web应用。WASM是一项较新的技术,仍在快速发展完善之中,其代码体积较小,某些场景的运行速度也明显快于JavaScript,可以支持C/C++/Rust等多种通用高级语言。

WASM的虚拟机与EVM类似,也是利用栈的结构,在区块链虚拟机这个领域,在 QTUM 技术实验室发布的 为何Qtum 量子链要设计x86虚拟机?解释的非常全面。Qtum用AAL,以比特币的UTXO为底层,将EVM的可编程性与比特币的安全、隐私结合了起来进行创新。从一开始,Qtum就做好了兼容多虚拟机的准备,将EVM与底层进行了解耦,并规划了x86虚拟机的研发。

EOS等出块群体很小的DPoS公链不同,Qtum使用更去中心化的MPoS共识机制,不设超级节点,对出块节点的硬件要求很低,数千个节点分散在世界各地。因此,x86这种PC市场占有率超过90%的CPU架构能最大化地适应当前节点的硬件条件。与EVM或WASM不同,x86作为历史超过40年的ISA(指令集架构,为CPU设计的底层语言),一方面研究众多,工具丰富,有很多虚拟化和模拟的经验可以参考;另一方面,可以使用寄存器结构进行模拟,与物理机条件更匹配,对执行效率和费用可以做进一步优化,并且借助x86高效的指令集和虚拟机的冯诺依曼架构可以实现很多现有虚拟机无法实现的特性。

Qtum-x86 技术优势

7大优势全面解读

支持多语言,首先将支持Rust:Rust是一种近来在区块链领域十分热门的编程语言,其设计较为轻便、高效,且十分强调安全性。自从Libra选择使用Rust后,Rust引起了越来越多开发者的注意。Qtum Co-Founder Jordan Earls早在2017年就将Rust放在虚拟机优先支持的语言之中,并预言2018年将是Rust智能合约的开端。开发者使用Rust学习成本较低,并有很多工具可以使用,并可以以较少的工作量从现有编译器上改造出适用的编译器。Qtum还计划后续添加对C#、Go等热门语言的支持。

使用虚拟机使用API与区块链通信,可并行支持多虚拟机:意味着Solidity开发者也可以继续使用Solidity在Qtum上进行开发,甚至可以混合开发,互相调用。这能减少开发者的迁移成本,降低开发门槛。

优化Gas模型,使开发和使用更便宜,结合DGP,后续可以对模型进行持续优化:x86架构下,很多原本在EVM上很昂贵的操作可以变得很便宜,如strlen。同时,由于Qtum DGP的存在,可以由节点对模型进行投票修改,使设计上难以精确的Gas模型在实际应用中进一步优化。

通过存储租用模型解决状态膨胀和存储占用问题:随着时间的推移,比特币全节点的大小已经超过100G,EOS这类出块更快的区块链更是几年就能突破1T。这阻碍了普通用户加入网络验证交易,使得同步、查找、验证等都变得更困难。Qtum提出了根据合约使用的存储进行收费,详情见:Qtum-x86虚拟机实现存储区租赁,高效节省虚拟机内存。

智能合约可升级:以太坊目前的合约无法升级,开发者只能将状态与逻辑分离,在需要升级的时候重新上传合约。这不符合开发的客观要求,有更好的方案来实现区块链的不可修改特性。x86的智能合约将在不损失合约安全性和去信任的前提下可以被升级,更加贴合实际的开发需求。

更多标准库:开发者将不必在每个合约开头自己写safemath。这不仅能节约开发者的时间,也能节省区块链的空间,降低合约的费用。以类似预编合约的方式将一些常用的标准库,从而合约不需要特殊支持也可以调用。

解锁AAL的更多功能:当前AAL的很多潜力被EVM限制住了,如segwit、P2SH等等。x86虚拟机将进一步释放Qtum功能上的潜力。

以上仅仅是x86虚拟机的冰山一角,新虚拟机的还将带来合约调用、数据存储、合约功能等方面的更多革新。

少有人走的路总是更艰辛,但也会带来更多惊喜。Qtum创立之初就将Qtum-x86虚拟机的研发定为长期发展目标,并且相关GitHub代码一直保持高度活跃。随着研发与实施的逐步推进与完善,Qtum-x86虚拟机将凭借其独特优势,在区块链智能合约的赛场里拥有自己的位置,将区块链带向更广阔的舞台。

更多技术细节和设计研究请见:

  • Qtum-x86虚拟机实现存储区租赁,高效节省虚拟机内存
  • 如何在Qtum-x86虚拟机上创建智能合约?上篇
  • 如何在Qtum-x86虚拟机上创建智能合约?下篇
  • 《也来谈一谈以太坊虚拟机EVM的缺陷与不足》
  • 为何Qtum量子链要设计X86虚拟机?

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

Curve + zkSync L2:以太坊的ZK Rollup 智能合约

Curve 和 Matter Labs 团队很高兴宣布以安全且去中心化的方式向以太坊扩展迈出了一大步:今天,我们和 Curve Finance 一起发布了第一个常驻 dapp 的 zkSync L2 智能合约测试网。 为什么选择 ZK Rollup ? 扩展性是以太坊一个迫切的需求 - 隧道尽头有一个亮灯。Vitalik Buterin 刚刚宣布 Rollup 是现阶段扩展以太坊的“唯一选

区块链赋能供应链金融 | 应用优势与四类常见模式

区块链赋能供应链金融 | 应用优势与四类常见模式

自2019年10月24日起区块链的应用推广便作为了一个热门话题,其中以供应链金融领域的应用尤为突出。如下便重点分析下区块链技术能为供应链金融做些什么。供应链金融产品一直存在着较大的痛点,比如参与环节众多、链条长、关联度较高、交易场景难以识别等。区块链作为一种新型的技术组合,综合了P2P网络、共识算法、非对称加密、智能合约等新型技术,具有分布式对等、链式数据块、防伪造和防篡改、可追溯、透明可信和高可

战报出炉!一文呈现CITEX第四届合约交易赛盛况

战报出炉!一文呈现CITEX第四届合约交易赛盛况

为期八天的CITEX第四届合约交易实盘大赛仍在火热进行,BTC一路高歌猛进,更是点燃了场内外的投资情绪。CITEX恰在此时开启了第四届合约交易实盘大赛,给投资用户提供了更多的可能性。我们从数据上可以一看究竟:活动期间,单日注册用户最高超过7000人,高额的返佣机制和多重惊喜加持,吸引了众多投资者参与,目前活动只进行了5天,但邀请人数已经达到3451人,占比超过50%以上。日活跃交易人数300+,总

智能合约开发的最佳实践

软件开发的历史已有数十年之久。我们受益于半个世纪以来积累的最佳实践,设计模式和智慧。 相反,智能合约开发才刚刚开始。2015 推出的以太坊和 Solidity 仅有几年的时间。 加密空间是一个不断发展的未知领域。没有确定的工具堆栈来构建去中心化应用。对于智能合约,没有诸如设计模式[3]或代码整洁之道[4]之类的开发人员手册。有关工具和最佳实践的信息遍布各处。 你正在阅读我这份希望它已经存在的指南。

Text.finance智能合约安全漏洞分析

北京时间11月12日,CertiK安全研究团队发现DeFi项目text.finance智能合约代码部分存在安全漏洞。 分析之前,先考考大家的眼力,看看下图里面的文字说了什么。 如果看不清,不妨点击图片后把屏幕亮度调至最高。 有的时候,某些不想让你看到的因素,正是通过排版或者这样的方式,被刻意隐藏了起来。 接下来说说该项目中存在的两处漏洞。大家不妨在阅读文章的时候注意一下图中【fu

如何从Web应用程序与智能合约交互

你好!今天,我们将介绍如何构建能够与以太坊智能合约交互的web应用程序。这种互动非常吸引人,因为它将为那些希望围绕区块链构建应用程序(dapp)的web开发者打开一个新的可能性世界。 在本教程中,我们将构建一个微型智能合约来存储和检索以太坊区块链上的数据,并创建一个允许我们访问和更改智能合约上数据的web应用程序。 **智能合约** 让我们先介绍一下我们将用于构建web应用程序的智能合约。由于本文

区块链可以敲开数字经济时代的新大门?

来自天眼查的数据显示,截至11月5日,深圳有5455家企业经营范围含“区块链、数字货币”。如何找准区块链技术在数字经济时代的坐标?

比特币有什么缺点?

1.交易平台的脆弱性。比特币网络很健壮,但比特币交易平台很脆弱。交易平台通常是一个网站,而网站会遭到黑客攻击,或者遭到主管部门的关闭。2.交易确认时间长。比特币钱包初次安装时,会消耗大量时间下载历史交易数据块。而比特币交易时,为了确认数据准确性,会消耗一些时间,与p2p网络进行交互,得到全网确认后,交易才算完成。3.价格波动极大。由于大量炒家介入,导致比特币兑换现金的价格如过山车一般起伏。使得比

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑