以太坊虚拟机是以太坊区块链的心脏,没有它,以太坊的智能合约的确定性将无法保障。
编译 | Bite@MarsBitApp
ETH2.0分片链第二阶段将运行支持智能合约运行的新虚拟机环境Ewasm,分片链的节点将存储账户、合约和状态信息,届时分片链也将完成从数据分片到状态分片的转变,此时以太坊才可以说是真正意义上实现了扩容。
延伸阅读:
MarsBit独家 | 牛市发动机启动,深度解析ETH 2.0六大看点
MarsBit独家 | 参与以太坊2.0质押没有32个ETH怎么办?这些机构了解一下
MarsBit独家 | 为什么说以太坊2.0是“懒惰验证者的安全天堂”?
首先要了解Ewasm,我们先介绍“虚拟机”到底是什么意思?
简单来说,传统的操作系统 (Windows/iOS) 一次只需要在一个系统中运行。而虚拟机 (VM) 是基于本地操作系统所创建更高级抽象,可用于复制物理机的功能。
虚拟机使得用户能够在不同的硬件架构和操作系统中同时运行同一平台,这就是为什么虚拟机非常适合像以太坊这样的去中心化网络的原因。以太坊虚拟机 (EVM) 的功能就类似世界计算机,遍布全球的节点都能进行访问。
EVM是一个轻量级的虚拟机,其设计是用于在以太坊网络上运行智能合约。作为虚拟机,EVM的功能与传统的操作系统(如Windows)稍有不同。一般来说,虚拟机是建立在本机操作系统上模拟物理机的高级抽象。它们允许同一平台,在许多不同的硬件体系结构和操作系统上运行,这使得虚拟机非常适合像以太坊这样的分布式网络。EVM的构建是为了模拟可由物理CPU执行的操作,其还负责以太坊的许多关键功能。
以太坊虚拟机是以太坊区块链中关键组成部分,或者说是一个通用的执行环境,没有它,以太坊的智能合约的确定性将无法保障。
从这个层级图可以看出,EVM是智能合约运行的基础环境,EVM之于以太坊就像心脏对人体的重要性一样。
通过运行以太坊虚拟机,计算机就变成了网络中的一个“节点”,并与其它节点一样具有同等地位的处理事务。
你可以将其与Windows等传统操作系统进行比较。不同的是,Windows一次只能操作一台机器。而以太坊虚拟机一次要操作很多台机器,模拟的是一台物理机。
由于当前的以太坊虚拟机(EVM)架构缺乏灵活性,对以太坊协议的强化有一定限制性。扩展执行层的方法是引入特殊的“预编译”合约。通过使用WebAssembly作为虚拟机规范,以执行高性能的“预编译”合约,简化引入此类合约的过程。
WebAssembly(简称WASM)的设计目标是性能和效率,是为Web开发构建的一个高效计算引擎,它是一个可移植、体积小、加载快并且兼容 Web 的全新格式。WebAssembly 有一套完整的语义,实际上WASM是体积小且加载快的二进制格式,你可以用它来编写Web代码。它是计算机中的一个虚拟机,可以专门执行优化的命令,设计的首要目标是性能,适合用在区块链项目中。它的主要任务是优化执行和加载时间,通过转换或执行某些命令来做到这一点。
相关资料
eWASM提案
eWASM设计
Ewasm也是以太坊2.0更新的重要组成部分,将成为解决以太坊可扩展性问题的一部分。以太坊将加入诸如波卡(Polkadot)、Cardano、EOS、Tron、Spacemesh和NEAR协议等项目的队列,而这些项目已经或正在采用Wasm。
以太坊在狭义上表示一套协议,这套协议定义了去中心化应用的平台。它的核心是以太坊虚拟机,它可以执行任意算法复杂度的代码。在计算机科学的术语中,以太坊是图灵完备的。开发者可以使用语法上类似JavaScript和Python的编程语言(Solidity)创建运行于EVM上的应用程序。
以太坊虚拟机使用256比特长度的机器码,是一种基于堆栈的虚拟机,用于执行以太坊智能合约。由于EVM是针对以太坊体系设计的,因此使用了以太坊账户模型(Account Model)进行价值传输。
从一开始,EVM的设计就强调正确性而不是效率。这体现在网络上的所有节点都必须完全准确地运行EVM。Wasm虽然与EVM类似,但它是为网络而发明,与其说是正确性,不如说是强调效率和快速加载。因此,所有节点都必须完全准确地运行EVM。相反,Ewasm更多集中在快速加载时间和效率上。eWasm比EVM更快、更安全,它支持更多语言,而不仅仅局限Solidity。Ewasm受益于WASM生态系统,可以在任何地方执行,这也将增加处理交易数量。
简单概括,两者的区别主要表现在以下三个方面:
(1)速度和效率提升:eWASM与EVM相比最明显的优势是代码执行的速度和效率上的大幅提升,执行速度提升意味着区块每秒可以处理的交易数量 TPS(吞吐量)提升。
(2)预编译:Ewasm的另一个主要好处是,它可以减少甚至消除对预编译的需求。所谓预编译(预编译合约)是EVM字节码的特殊位。如果对预编译合约发出调用,EVM将执行预先定义的本机代码并返回结果。
(3)互操性:Ewasm在性能上超过EVM的第三个领域是互操作性,Ewasm将支持更多的语言,并将受益于比EVM更广泛的工具集。
Ewasm能够与多种语言进行交互,并且拥有更为广泛的开发者工具集,将支持C/C++/Rust语言,Ewasm能够帮助开发者又快又省地创建智能合约,并且没有硬分叉的顾虑,Ewasm可以直接转换为编译代码,从而提高加载速度,并且大幅提升每个区块能够处理的交易量。
Ewasm也支持更多的编程语言种类进行智能合约开发,这些编程语言相比Solidity具有更广泛的社区开发支持资源,包括编译工具、开发人员。
Ewasm的目标是取代EVM。因此,Ewasm与现有处理交易模式有很大的不同,它能够极大地提高交易吞吐量。
总结来讲,Ewasm相比原来的EVM支持更多的开发语言,支持64位的数据处理,代码执行快,达到硬件级别,而且还需要预编译。ETH2.0将是与以太坊完全不同的系统,二者将并行存在多年并具有不同的特征集。
参考文章: