本文探讨的是以太坊虚拟机(EVM)和以太坊WebAssembly(Ewasm),Ewasm将取代EVM成为以太坊2.0网络的状态执行引擎,这种转换将为以太坊带来一系列令人兴奋的新性能升级和其他优势,这包括速度和效率上的提升、卓越的互操作性以及减少或消除预编译。
原文作者是Chainsafe项目经理ColinSchwarz。
一、什么是以太坊虚拟机(EVM)?
为了理解Ewasm及其对以太坊网络的影响,我们必须首先熟悉其将替代的以太坊虚拟机。EVM是一个轻量级的虚拟机,其设计是用于在以太坊网络上运行智能合约。作为虚拟机,EVM的功能与传统的操作系统稍有不同。一般来说,虚拟机(VM)是建立在本机操作系统上模拟物理机的高级抽象。它们允许同一平台,在许多不同的硬件体系结构和操作系统上运行,这使得虚拟机(VM)非常适合像以太坊这样的分布式网络。EVM的构建是为了模拟可由物理CPU执行的操作,其还负责以太坊的许多关键功能。
而EVM除了作为一个虚拟机,它也是一个“堆栈机”和一个“状态机”。状态机只是一台可以读取输入并基于这些输入转换为新状态的机器。而基于堆栈的虚拟机是将内存结构组织为堆栈并作为堆栈访问的虚拟机。这与基于寄存器的虚拟机相反,其内存结构存储在CPU的寄存器中。为了在基于堆栈的虚拟机上执行操作,称为“操作数”的数据从堆栈中“弹出”,通过接受操作进行处理,然后根据后进先出的原则“推送”回堆栈。使用基于堆栈的机器进行添加的工作方式如下:
POP20
POP7
ADD20,7,result
PUSHresult
Solana CEO:以太坊作为Solana L2解决方案的想法非常合理:金色财经报道,Solana Labs联合创始人兼首席执行官Anatoly Yakovenko表示,尽管存在局限性和潜在风险,但使用以太坊作为Solana区块链第二层解决方案的想法非常合理。
通过技术合作,潜在L2网络中Solana资产的所有者“将得到最终确定性的保证,即使在双重支出的情况下也能够返回协议。为了实现这个想法,需要在Solana中同步有关以太坊交易的信息,并发送简化支付验证根以确认验证者之间的共识。并且为了消除协议中可能出现的错误,需要配置“网桥超时”。然而,Yakovenko指出,在这种情况下,只有将资产存储在另一个区块链上才是安全的。登陆服务和流动性支持具有很大的危险,因为以太坊的故障会对主网络产生负面影响。[2023/7/4 22:15:58]
https://markfaction.wordpress.com/2012/07/15/stack-based-vs-register-based-virtual-machine-architecture-and-the-dalvik-vm
使用堆栈系统的一个主要优点是,EVM不需要显式地知道它正在处理的操作数的地址,因为调用堆栈指针总是会提供下一个操作数,这有助于EVM提高效率并降低存储需求。
除了堆栈之外,EVM还可以将数据存储到内存和磁盘存储。将数据发送到磁盘存储器需要的gas最多,而发送到堆栈需要的gas最少。EVM根据其预期用途和预期的gas成本决定将某些数据发送到何处。在宏观层面上,EVM由世界状态、机器状态和虚拟ROM组成。世界状态是网络上所有帐户的存储,而机器状态包括程序计数器、可用gas、堆栈和内存。虚拟只读存储器是不可变的“EVM字节码”,这是一种只有EVM才能理解的特殊语言。理解字节码及其与诸如solidity等高级语言的关系是非常重要的,以便充分掌握EVM的功能。从网络创世开始,以太坊开发者就用Solidity编程语言编写了代码,Solidity是一种“高级”编程语言,这意味着尽管开发者可以理解Solidity,但机器却不能理解。为了让计算机理解Solidity代码,它必须使用名为solc的solidity编译器编译。编译器会将solidity转换为字节码,字节码是solidity操作码的二进制表示形式。EVM将所有值视为二进制,而无法理解其他任何值,因此编译器的存在是非常重要的,其允许开发人员的表达能够被EVM理解。
以太坊测试网Sepolia预计将于8月17日进行执行层升级:8月4日消息,以太坊测试网Sepolia将于区块高度1735371(预计在8月17日)进行合并后的执行层升级,本次升级会导致执行层上尚未转换为PoS的客户端失去连接,节点运营商需要在此之前升级执行层客户端。
以太坊基金会表示,Sepolia升级完成后,预计Goerli和以太坊主网也将会进行类似的升级。(blog.ethereum.org)[2022/8/4 2:57:55]
二、以太坊虚拟机是做什么的?
EVM负责促进以太坊网络上的大多数交易和操作,包括执行智能合约。它负责包含指令和操作数的各种数据结构,以及由指令处理的数据。EVM还包括一个指令调度程序或“虚拟GPU”,用于获取和执行指令并对操作数进行解码。换个说法,EVM负责跟踪网络组件,如世界状态、存储状态和区块信息。EVM还为以太坊网络上的智能合约创建Runtime环境。Runtime环境中的信息用于执行特定交易。这些信息包括:
Gas价格:“交易发起人规定的当前Gas价格”;
代码大小:“交易代码库的大小”;
调用方:“正在执行交易的账户地址”;
来源方:“交易原始发送者的地址”;
最后,除了以上这些职责外,EVM还处理与区块编号、Gas价格、地址和余额有关的账户信息。因为EVM负责以太坊网络上的很多重要功能,因此其能够处理操作及交易的速度,会影响到整个网络的整体速度和性能。同样,EVM能够执行代码的效率会直接影响网络的效率。
因此,近年来以太坊网络负荷的增加,使得EVM本身成为了一个瓶颈,常常会降低网络吞吐量,增加交易时间。而效率低下问题,正是以太坊从EVM过渡到Ewasm的主要原因之一。
三、什么是Ewasm?
以太坊2.0更新的一个重要核心,就是从EVM过渡到Ewasm。
WASM代表Webassembly,这是一个由W3C社区小组开发的开放标准指令集。WASM是为Web而构建的,包括Mozilla、Google、Microsoft和Apple的工程师都在积极开发它,而Ewasm,是专门为以太坊网络而修改的“受限WASM子集”,WASM的设计考虑到了一系列特定的目标。基本上,WASM的设计目的是快速、高效和便携。这意味着它可以利用常见的硬件功能以“接近本机速度”执行。该软件还设计为易于阅读和调试,这是通过一种可以被人阅读的文本格式来实现的,允许开发者手工查看、编写和调试代码。最后,通过强制主机浏览器的权限策略,通过保持向后兼容性,WASM被设计为安全,且是高度兼容的。而创建Ewasm的团队,还制定了几个更具体的项目目标,其中一个主要目标是提供一个EVM转译器和一个计量注入器,最好是作为一个Ewasm合约。另一个目标是以太坊接口和Ewasm合约语义的明确规范。最后,该团队的目标是为solidity编译器实现一个Ewasm后端,并提供用C和Rust语言编写合约的指令和库。而Ewasm和wasm之间的区别,可通过以下方式来考虑:
以太坊L2网络总锁仓量为44.7亿美元:金色财经报道,L2BEAT数据显示,截至5月30日,以太坊Layer2上总锁仓量为44.7亿美元。其中锁仓量最高的为扩容方案Arbitrum,约24.亿美元,占比53.97%。其次是dYdX,锁仓量9.54亿美元,占比21.33%。Optimism占据第三,锁仓量4.69亿美元,占比10.5%。[2022/5/30 3:49:48]
Ewasm=Wasm—不确定性+计量+EEI方法。
以太坊将加入诸如波卡、Cardano、EOS、Tron、Spacemesh和NEAR协议等项目的队列,而这些项目已经或正在采用Wasm。
四、EwasmvsEVM
从一开始,EVM就是为了强调正确性而非效率而设计的。这反映在网络上的所有节点必须完全准确地运行EVM这一事实上。Wasm虽然与EVM相似,但它是为web而发明的。与正确性不同的是,Wasm强调的是效率和快速加载。以太坊开发者LaneRettig表示,EVM的创建不具备“大量的设计思想”,他认为EVM是从理论角度上而非实际角度设计的,因此,虽然它内部健全,但在现实世界中无法发挥最佳的作用。NickJohnson同意这种看法,相比之下,Wasm的编写更接近于实际的硬件指令,这使得它在翻译实际的编码逻辑时更加有效。事实上,Wasm指令可直接将一对一映射到机器使用的指令,这将使性能大大提高。
4、1速度和效率上的大幅提升
从EVM到Ewasm的过渡,最为重要的结果之一就是速度和效率上的大幅提高。Ewasm将通过显著增加每秒可处理和添加到每个区块的交易数来增加交易吞吐量。目前尚不清楚Ewasm将为以太坊带来多大速度提升,但执行与交易吞吐量之间将存在直接的相关性:如果Ewasm的执行速度是EVM的两倍,那么它将允许向每个区块添加两倍多的交易。这并不意味着实际的区块大小将增加,而是指向每个区块添加数据的过程将变得更为有效。随着分片和第二层解决方案的推出,Ewasm将有助于提高以太坊网络的可扩展性。
四分之三以太坊客户端已完成伦敦准备:据ethernodes最新数据显示,已经有1174个以太坊客户端(占比75%)完成“伦敦”升级准备,其中Besu客户端已100%就绪,Openethereum客户端准备率为93%,排名第二,Erigon客户端准备率为89%,位列第三。[2021/8/5 1:35:40]
LaneRettig将EVM比作一把瑞士军刀:“…它做了很多事情,但效果并不好。”相比之下,Wasm的设计是将实用化作为首要任务,并且专门针对像以太坊这样的Web应用程序。EVM不能总是有效地编译大量代码,浏览器的javascript引擎通常需要做大量的猜测来为某些操作找出优化的“热路径”,这些操作可降低EVM的速度并降低吞吐量。相比之下,Wasm可直接从其公共表示转换为编译代码,而无需做任何猜测工作。这是允许Ewasm加载和运行速度超过EVM的许多特征之一。另一个例子与EVM使用的字节码类型有关,因为EVM使用256位字节码,所以小于256位的计算必须转换为256位格式,然后EVM才能处理它们。许多开发人员认为,这个功能现在是多余的,这将是另一个使Ewasm比EVM更快的特性。Rettig在接受Coinwire采访时,其隐喻性地总结道:
“以太坊正从我们在农场周围骑行的笨重自制工具,过渡到一辆真正的赛车,我们将可以在公路上行驶…”
而Mozilla发表的一篇文章,也认同了这种看法,即以太坊这样的框架将能使用Wasm来提供巨大的性能优势和新功能,同时仍然使Web开发人员能够轻松地使用功能。
4、2预编译
而Ewasm的另一个主要好处是,它可以减少甚至消除对预编译的需求。所谓预编译是EVM字节码的特殊位。如果对预编译合约发出调用,EVM将执行预先定义的本机代码并返回结果。预编译是特定于某些协议的通用操作,并帮助用户节省gas成本,如果没有这些协议,成本会更高。与常规code不同,EVM只需评估预编译,而不是合约地址处的整个代码。由于以太坊网络上的各种复杂密码学计算在没有它们的情况下会导致无偿的高gas成本,因此需要预编译。在某些情况下,这种gas成本甚至可能超过区块限制,这意味着在不使用预编译的情况下,某些操作无法通过EVM进行处理。预编译的一个严重缺点是,在网络中引入新的预编译,通常需要一个协商一致的硬分叉,而硬分叉通常是有争议的,因此较难实现。NickJohnson认为,Ewasm在计算方面的效率足够高,可以消除大多数当前的预编译,并用Ewasm合约替换。这些智能合约可简单地重写和重新部署,而无需使用硬分叉,这使Ewasm比EVM更具优势。这意味着开发人员可以利用Ewasm提高的效率来简化网络、简化开发过程,并在新的合作模式下避免硬分叉。
当前以太坊平均交易费跌至30Gwei以下:据Etherscsan数据显示,目前在以太坊链上平均交易费为29Gwei,而交易者目前在1分钟内完成交易需要的Gas费用只需要30-31Gwei,相较于之前动辄500Gwei的交易费而言已经大幅下降,昨日以太坊全网平均交易费仅为75Gwei左右,相较于1个月内的高点538Gwei下跌约86%。[2020/10/14]
但和任何新的系统一样,Ewasm并非没有批评者,以太坊开发者GregColvin就对Ewasm智能合约消除预编译的能力持怀疑态度。他还警告说,Ewasm依赖编译器来支持多种语言可能会成为单一失败点。然而,我所接触过的绝大多数专家和开发人员并不认为这些是主要关注点,他们对Ewasm将为以太坊网络带来的显著性能改进感到兴奋。
4、3互操作性
Ewasm在性能上超过EVM的第三个领域是互操作性,Ewasm将支持更多的语言,并将受益于比EVM更广泛的工具集。一些Ewasm支持的附加语言的突出例子包括C、C++和Rust。Ewasm还将获得许多著名的JavaScript引擎的本地支持,包括但不限于:微软的Chakra引擎、谷歌的V8引擎以及Mozilla的Spidermonkey引擎。Ewasm还将得到多个非浏览器实现的支持,如ml-proto、wasm-jit-prototype或wabt。尽管Wasm有自己的独立于JavaScript的本地语言,但它并不是用于替代目的。相反,它的目的是与JavaScript一起工作,允许开发人员利用两种语言的优势,并避免它们的弱点。除了兼容更多的语言和引擎外,Ewasm是根据万维网标准构建的,这意味着它很容易在浏览器中支持以太坊轻客户端。与EVM相比,Ewasm还将受益于更广泛的工具和编译器。由于Wasm已经被以太坊以外的大量项目使用,因此它拥有比EVM更大、更活跃的开发者社区,这就会带来更好的工具选择。因此,Wasm包含各种工具链,可以从几个不同的编译器发出操作码。他们可以编译C代码和Rust代码等。来自ethdev红迪子板论坛的贡献者认为,转换为Ewasm的主要目标之一是“利用现有的工具,而不是试图说服人们建立针对EVM的工具。”因此,工具是以太坊向更成熟和广泛使用的Wasm的过渡中获益的另一种方式。
总的来说,以太坊从EVM到Ewasm的预期转换,将带来一系列令人兴奋的新性能升级和其他优势。这包括速度和效率上的提升、卓越的互操作性以及减少或消除预编译。
特别感谢LaneRettig对本文进行了事实检查,并提出了一些很好的建议!
相关文章:
1、“SolidityBytecodeandOpcodeBasics.”https://medium.com/@blockchain101/solidity-bytecode-and-opcode-basics-672e9b1a88c2
2、“StackbasedvsRegisterbasedVirtualMachineArchitecture,andtheDalvikVM.”https://markfaction.wordpress.com/2012/07/15/stack-based-vs-register-based-virtual-machine-architecture-and-the-dalvik-vm
3、“EthereumVirtualMachineExplained.”https://www.mycryptopedia.com/ethereum-virtual-machine-explained/
4、“EthereumEVMIllustrated:exploringsomementalmodelsandimplementations.”https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf
5、“Ethereum2.0.”https://medium.com/rocket-pool/ethereum-2-0-76d0c8a76605
6、“ewasmDesignOverviewandSpecification.”https://github.com/ewasm/design.
7、“WebAssemblyConcepts.”https://developer.mozilla.org/en-US/docs/WebAssembly/Concepts
8、LaneRettig,corecontributortoEth2.0.
9、“eWASMReplacestheHeartofEthereum.”https://www.coinwire.com/ewasm-replaces-the-heart-of-ethereum
10、“TryingtounderstandtheEVMandeWASM.”https://www.reddit.com/r/ethdev/comments/87rrt6/trying_to_understand_the_evm_and_ewasm/
11、“EthereumVirtualMachine(EVM)ToBeReplacedByEWASMMakingTheEthereumNetworkSmarterAndStronger.”https://xbt.net/blog/ethereum-blog/ethereum-virtual-machine-evm-to-be-replaced-by-ewasm-making-the-ethereum-network-smarter-and-stronger/
12、“OnAddingPrecompiledContractswithoutHardForks.”https://that.world/~classic/2017/09/14/nonfork-precompiled/
13、“APrehistoryoftheEthereumProtocol.”https://vitalik.ca/general/2017/09/14/prehistory.html
2019年8月,全球新增区块链应用项目再次进入低谷。根据互链脉搏研究院不完全统计,2019年8月,全球共披露区块链应用项目52个,环比7月份下滑了23.5%.
1900/1/1 0:00:00种种迹象表明,落魄许久的以太坊开始走向复苏。DAppTotal数据显示,以太坊自8月9日开始,DApp日活用户正式超越TRON,并于9月2日达到8.4万人,超过2018年5月历史前高,目前仅次于EOS.
1900/1/1 0:00:00摘要 比特币是值得关注的另类资产。因为投资回报率高、流动性好、与其他资产相关性小等特点,比起它志在成为全球货币的目标,比特币更像是一种值得关注的另类的投资标的。比特币挖矿是从“源头”获得比特币的方式.
1900/1/1 0:00:00法定数字货币落地正在提速。8月21日,央行微信公众号发布两篇文章,再谈数字货币:其一是范一飞副行长谈央行数字货币几点考虑;其二是央行支付结算司副司长穆长春在中国金融四十人伊春论坛上关于数字货币的演讲.
1900/1/1 0:00:00想要窃取比特币?你要做的就是找到受害者16个字符的公钥,并通过解决“椭圆曲线离散对数问题”来计算他们的私钥。没问题,如果用一台普通的计算机,这将花费你大约6.5亿年.
1900/1/1 0:00:00今日,“末日战车”ETC再度暴走,一句突破7美元的关口,但很快被市场的情绪影响出现回落,而上涨的原因主要是受硬分叉提前的影响.
1900/1/1 0:00:00