返回目录:经济新闻
以太坊的心脏其实就是一台虚拟电脑。
以太坊虚拟机(EVM)存储在成千上万个节点上,组成了以太坊平台。EVM负责执行数不清的代币、dapp、DAO和数字小猫,这些都是以太坊区块链的组成部分。
EVM就像是推动以太坊运行的引擎,它使用一种名为“EVM字节码”的语言——一种原始的,256位的信息串,可以提供任何可以想到的方程(它在平台自我设定的限制范围内提供)。
EVM听起来很强大、很重要,是吗?那么这就意味着EVM绝对不可以出现混乱?
然而,这个以太坊基础设施的主要部分正在为彻底的重写做准备。
以太坊开发者Lane Rettig告诉CoinDesk说,
“我想说的是,我们一开始并没有大量的设计思考。这就有点像一个工具——瑞士军刀—EVM做了很多事情,但做得不太好”。
因此,当前的EVM将被一个称为eWASM的新虚拟机所取代。
eWASM是WASM(WebAssembly)代码的以太坊版本,WASM由负责维护和标准化Web的开发者团队——万维网联盟(W3C)创建。
eWASM开发贡献者Retting说,
“相比于EVM,许多高收入、非常有经验的工程师向WASM构建集的概念投入了成千上万的工作小时。”
实际上,eWASM将允许以太坊开发人员能够使用多种编程语言来编写代码——而不仅仅目前所使用的以太坊专用的语言Solidity——据说eWASM还会带来大量的性能增强。
由此,以太坊将加入几个竞争对手的行列,包括EOS和Cardano,他们已经各自部署(或计划部署)专用的虚拟机,使用WASM代码来处理去中心化计算。
对于以太坊来说,这次虚拟机切换被设定与其他一些以太坊网络更新一起执行,包括在未来几年实施的分片(Sharding)扩容解决方案和Casper,因此现在被戏称为“Shasper”。虽然这一切换的确切时间并不是固定的,但eWASM的开发正在迅速取得进展,并正准备在10月在布拉格举行的以太坊开发者大会上推出测试网络。
在谈到更换现有虚拟机时,Retting总结说:
“以太坊正处于一种过渡阶段,从一辆围绕着农场缓慢骑行的自行车转向一台能够在高速公路行驶的真正赛车。”
一条“疣状的”路
这种虚拟机切换背后存在着一种现实,那就是人们认识到,尽管EVM是一种创新技术——第一次提供了一种抗攻击的去中心化计算解决方案——但现实情况是它并不像它所能做到的那样干净利索。
举个例子,大多数dapps开发人员都在使用以太坊Solidity语言,这是一种高级编程语言,它可以自动编译成EVM字节码兼容的形式。
Rettig说,由于EVM依赖于“非常大的、广泛的指令”,即使是最微小的计算,比如基本的算术,也需要转换成256位的字符串让EVM来处理——这是一个复杂过程,即便是一次非常简单的数学运算也需要完成这个过程。
这只是在系统代码中内置的几个操作之一,还包括流行的哈希函数SHA-3,而Rettig认为这些操作不应该存在。
由于这个原因,Retting将EVM描述为“疣状的”。
以太坊的核心开发者尼克·约翰逊(Nick Johnson)也同意这一观点,他告诉CoinDesk,当他加入以太坊时,他马上就意识到,EVM是由对计算机科学有深刻理解的开发人员建造的,而这些人员在构建被广泛使用的产品方面却没有多少经验。
Johnson强调,作为一种工具,EVM“优化了理论的纯粹性,而不是实际应用。”
他说,
“EVM拥有大量的寄存器,但它们都是一样的东西,而且在内部是一致的,但它不是为了现实世界的实现建立起来的。”
相比之下,WASM代码是在考虑现实产品的情况下构建的。
Rettig说,EVM“更贴近硬件”,这意味着它运行的代码接近于实际的硬件指令,因此在翻译不同的编码逻辑上花费的工作更少。
“EVM指令非常接近实际的硬件指令,”Rettig继续说道。“这些指令可以直接映射到实际设备运行的指令,因此,理论上,您可以获得非常令人兴奋的性能改进。”
例如,在以太坊上构建的开发人员将能够使用多种语言进行编码——无论他们最喜欢哪一种——包括那些具有额外安全性优势的语言。
另一个关键优势——Rettig说,一些开发者认为这是“eWASM被选用背后的关键动机”——eWASM可能会消除所谓的“预编译”。
由于EVM是由笨拙的代码组成的,所以需要在系统内部构建某些操作——否则,操作将超过与之相关的gas成本。这被称为预编译,要使此类操作可用就需要一个系统范围的升级或硬分叉;事实证明,这样的升级是有风险的,而且是复杂的。
然而,在eWASM中,开发人员认为这些操作可以简单地编写为智能合约然后进行部署,这就跳过了硬分叉场景。
Johnson说:
“通过eWASM,它在计算方面的效率非常高,以至于大多数预编译的东西都可以被取消,取而代之的是eWASM合约。”
心碎
然而,与一个去中心化的生态系统中发生的任何其他重大更改一样,放弃EVM的努力也并非没有遭受批评。
首先,以太坊的核心开发者Greg Colvin一直致力于EVM的维护工作,他不愿意让旧代码消失。
Colvin一直在设计一个新改进的EVM代码版本,名为EVM 1.5,最初的目的就是让其成为以太虚拟机的未来。然而,在没有任何警告的情况下,他的经费被非盈利的以太坊基金会削减了。
“我很生气,”Colvin说,他帮助成立了以太坊魔术师委员会,这是一个讨论小组,致力于进一步提高以太坊的技术熟练程度,他告诉CoinDesk。
“你们连一小时8.4美元经费都不愿意付给我,而把我的工作时间从35小时减少到20小时,那么我为什么要干活呢?而在接下来的一年里,我再也没有时间进行这些志愿者工作了。”
然而,Colvin反对的原因不仅仅是自尊心。
根据他的说法,eWASM也存在技术问题。例如,由于eWASM允许多种语言,所以代码很大程度上依赖于所谓的“编译器”——Colvin认为这对于攻击者来说可能是一种单点故障。
他也不相信eWASM智能合约可以取代预编译。
此外,Colvin还有很多设计方面的批评,甚至连Rettig也同意这一点。根据这两位开发者的说法,由于某些原因,效率较低的技术通常会胜出。以Javascript为例,它是最广泛使用的编程语言之一,但它也是出了名的设计丑陋。
Rettig认为:
“在技术和计算机科学领域,似乎有一种模式,在这些领域,设计最好的东西,不仅不一定能赢,而且似乎运行的也不太好。”
更不用说,根据Colvin的说法,在WASM背后的所有开发工作中,代码仍然没有经过测试。
Colvin告诉CoinDesk:
“我不明白为什么我们想要成为实验的早期采用者,我们已经是我们自己实验的早期采用者。”
不可预见性
撇开冲突不谈,eWASM正在吸引许多以太坊的开发者的关注。
实际上,正在进行的计划是在11月以太坊开发者大会Devcon4之前部署测试网络。
然而,这并不意味着新的虚拟机将在短时间内被部署。
因为在替换EVM本身之前,eWASM将首先在一个分片或一个侧链上被推出,eWASM的推出与Shasper升级密切相关。就时间而言,这意味着开发者需要关注那些支持这些变化的研究,然后再转向eWASM。
不幸的是,这种研究的进展是不可预测的。
实际上,这类代码升级所涉及的时间模糊性正在给该平台上大量以太坊开发人员带来困惑。
“如果你正在建立一个新客户端,那就会有很多困惑:我应该使用eWASM创建吗?我应该使用EVM创建吗?还是我应该同时基于两者创建?我应该做些别的什么,”Rettig告诉CoinDesk。
对Colvin来说,缺乏清晰度是一个关键的障碍,因为当涉及到当前的EVM时,有一些性能问题很容易改进,但这些问题的解决已经被路线图的突然转变所阻碍。
“我在这一段时间感到沮丧,eWASM显然即将来临,但尽管没有太多的资源,EVM1.5同样已经就在不远处。现在,它仍然是可行的,但却被推掉了,整整一年都被浪费了。”Colvin告诉CoinDesk。
越多越好?
尽管如此,Rettig和Colvin都承认,这种不确定性是在没有任何中央领导的情况下为开源项目做出贡献的产物。
“社区层面是如此重要。如果以太坊是一家公司,那就我早就离职不干了,”Colvin对CoinDesk说。
Rettig争辩说,当谈到以太坊的改进时,就没有什么工作是浪费的。
事实上,他继续说道,因为分片升级的性质——将以太坊分割成更小、更易于管理的块——以太坊最终可以支持多种虚拟机。
在以太坊经过更新升级之后,Rettig说,
“没有单一的以太坊,没有单一的路线图,没有单一的权威,它是一个社区,是一个技术家族,我不相信未来只有一条区块链来统治这所有的一切。”
与此同时,eWASM也将开启新层次的互操作性。首先,它是建立在一种已经标准化的万维网上的语言中,所以在浏览器中添加对以太坊的支持是轻而易举的。
它还可以为不同区块链之间未被发现的互操作性铺平道路。
Rettig说:
“也许你将见到二次分片、Plasma等,也许它们在某些地方重叠,也许我们有一条与以太坊区块链通信的Dfinity链,或者通过Cosmos和Polkadot与比特币区块链通信的以太坊区块链。我们还不知道会出现什么,因此不要太沉迷于官方规范的发展路线图,不管它是什么。”