本文探讨的是以太坊虚拟机(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
Tether将10亿枚USDT从Tron转移至以太坊链上:8月5日消息,Tether发布推特称,将与第三方协调把10亿枚USDT进行链交换,从Tron TRC20转换为以太坊 ERC20,在此过程中,Tether的总供应量不会改变。[2021/8/5 1:36:39]
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理解。
二、以太坊虚拟机是做什么的?
EVM负责促进以太坊网络上的大多数交易和操作,包括执行智能合约。它负责包含指令和操作数的各种数据结构,以及由指令处理的数据。EVM还包括一个指令调度程序或“虚拟GPU”,用于获取和执行指令并对操作数进行解码。换个说法,EVM负责跟踪网络组件,如世界状态、存储状态和区块信息。EVM还为以太坊网络上的智能合约创建Runtime环境。Runtime环境中的信息用于执行特定交易。这些信息包括:
以太坊客户端OpenEthereum即将推出支持Berlin硬分叉的新版本:以太坊客户端OpenEthereum官方刚刚发推称,现在离Berlin硬分叉已经越来越近了。OpenEthereum下一个版本将基于2.5.13稳定版,该版本将对所有bug进行修复,以及包含对2.7和3.0之后版本的硬分叉支持。
注:OpenEthereum前身为以太坊客户端Parity。[2020/8/14]
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之间的区别,可通过以下方式来考虑:
已有超21万枚ETH抵押至以太坊2.0测试网:7月29日早间,以太坊2.0协调员Danny Ryan发推称,距离多客户端测试网络Medalla启动,还差9700个验证者。而根据Danny Ryan发布的官方数据,当前已有213888枚ETH(将近6684次32枚ETH)被发送到以太坊2.0测试网进行抵押。这也意味着在8月4日多客户端公共测试网启动后,将有6684位Stakers发挥作用。此前7月23日消息,以太坊官方宣布,多客户端测试网络Medalla将于8月4日下午21点开始启动。而开始启动需要16384个验证者并存款524288个ETH。如果8月2日21点存款数未达到最低存款数16384,则推迟启动。[2020/7/29]
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将有助于提高以太坊网络的可扩展性。
DeFi使用率推动以太坊合约请求量创历史新高:金色财经报道,Coin Metrics表示,7月25日,以太坊上有超过310万的合约请求量,创历史新高。据悉,合约请求(contract call)是一个衡量网络活动的指标。与交易不同,合约请求是用户从智能合约请求特定功能,不会在区块链上发布任何内容,类似试运行。Coin Metrics表示,以太坊网络活动创纪录主要来自去中心化金融(DeFi),其规模已增长了四倍多,目前总锁定价值达40亿美元。[2020/7/29]
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提高的效率来简化网络、简化开发过程,并在新的合作模式下避免硬分叉。
分析 | 以太坊基本面表现不佳 对BTC汇率继续回升:据TokenGazer数据分析显示,截止至7月1日11时,以太坊价格为$298.98,总市值为$31,902.1M,主流交易所交易量约为$464.9M;以太坊对比特币汇率继续缓慢回升;基本面方面,以太坊链上交易量和活跃地址数有一定幅度下滑;以太坊DApp交易总量保持稳定,30天开发者指数约为2.33;目前ERC20代币总市值约为以太坊总市值的56.16%,ERC20代币市值占比持续提升;ERC20活跃地址数方面,排名前五的代币为LINK、USDC、DAI、TUSD、PAX。[2019/7/1]
但和任何新的系统一样,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
标签:ASMWAS以太坊THEjasmy币的价值和前景Swash Token以太坊币今日价格行情走势The Monopolist
在上周五的核心开发者电话会议上,以太坊伊斯坦布尔硬分叉全系统升级的测试网激活日期已经确定。“我们选择的区块高度预计在10月2日左右达到,”以太坊基金会社区经理HudsonJameson上周五在以.
1900/1/1 0:00:00在过去的几年里,区块链平台如Ethereum和EOS的流行将世界引入了一个新的计算范例:去中心化应用程序。与智能手机上的传统应用程序不同,去中心化应用程序不是由一个实体或机构拥有和运行的.
1900/1/1 0:00:00上期回顾BTC:比特币下周将会保持横盘甚至是走弱的趋势。BTC最低下跌至$9,500,下跌幅度最高达20%。ETH:若避险情绪无法持续发酵,ETH可能无法产生进一步的上涨动能.
1900/1/1 0:00:00比特币不只是钱的问题,它关乎自由。常常有人说比特币要取代黄金、要取代货币或者是金融体系,但其实比特币的目标从来都不是这些,它更像是一种替代品.
1900/1/1 0:00:002017年12月,比特币费用几乎总是在10美元以上,有时甚至接近30美元。今天我们的比特币价格几乎是一样的,但手续费却下降了很多,大多数情况下不到一美元.
1900/1/1 0:00:00Staking是前阵子特别火的一个概念,近来很少有人再提了。简单来讲,Staking就是持币用户通过质押代币,直接或间接参与生态治理并获得节点奖励的模式.
1900/1/1 0:00:00