DEVCON2: eWASM—— 一个实验性的虚拟机设计方案
记者:Lydia
来自以太坊的 Martin Becze, Alex Beregszaszi演讲的主题是eWASM: 一个实验性的虚拟机设计方案
首先是Martin发表演讲:
今天介绍WebAssembly,今天介绍一下我们的工作。
以太坊系统的核心就是虚拟机,这实际上是以太坊区块链和其它区块链最大的区别。基本上所有状态转换都会通过虚拟机完成,EVM成长的阵痛,随着其不断成熟,也遇到一些问题。有些东西不应该成为指令,虚拟机的实现费用很高,高级语言编译非常难,WEBSEMBING 2X格式,利用共同硬件的能力,高效安全的沙箱,工作链的兼容,可扩展,网络收集和WC3工作组,支持这个项目的公司有苹果/微软等。
指令集和AST类似RISC,Interger和浮点运算定义为AST。处理过程十分简便,可以轻易的变更,可以用栈机器解释,可以实现本机的表现。大家可以看到有些输入可以扩展,就像系统调用一样,还有其它可以使用的模块,使用函数进行计算。
程序语意:程序读取,调用。你们觉得这好像比较复杂,可以用二进制进行输出,可以让二进制变得简单,可以非常快速,如果要获得这些属性。可以去Chrome浏览器去寻找,还有许多翻译器。以上是WASM的概述。
以太坊webassembly
它可以取代真实的机器,可以取代EVM,作为webAssembly重要的分支。
界定兼容性和其它因素。我们要讲的是EVMWASM的机器,可以和官方EVM测试相融,可以生成非常快速的EVM代码。WASM是5000行,这是非常致密的。这是一个真实的运行DEMO,当我们GIthub的时候可以看到这些展示,Metering可以通过枝节进行计量,可以看发生了什么。然后可以在每个字节里面加入Gas代码,如果使用的Gas比较多,情况也是不一样的。两可以在不同的模块进行计量。METERING INJECTION一个计量,是EVM好的特点。所有Branch 条件,还是使用Gas.
Alex谈eWASM以太坊界面如何工作
现在大家应该很了解WASM。如果我们需要一个界面和EVM进行交互,如果我们需要一个eWASM以太坊界面。下一步就是界面是如何工作的,每个界面都有自己的内存,在内存里有过去历史的记忆,里面会有一些输出,下一个重要界面就是ECI,这是eWASM合约界面,会建立合约格式,通过二进制编码,也可以设定其它限制。我们可以通过这个写合约,如WASM的”hello world”。
我们可以对这个world进行定义,如果在一个交易中进入了合约,只需要进行调用,如果在书写非常复杂的合约,可能会有一些问题,在这种情况下,需要获得ECI验证,因此必须进行验证和metering。其它虚拟机没有这样的功能,所以我们可以进行这样的跨编译,EVME的预编译合同,可以支持新的客户端。在进入合约时,要检查合约代码,如果需要的话需要eWASM代码进行编译。现在有两种Lewasm-kernel和Hera,对界面和虚拟机核心来说也是非常好的,使用的是C++语言,在这里有非常大的改变,也可以和ethreum一起工作。
目前的测试网络,可以写非常复杂的合约,如果有人对这感兴趣,可以找我们提供帮助。事实上,目前我们可以在C来编写合约,这个过程中,也需要写自己的东西,目前已经完成了这样的工作,可以使用所有加密的功能,在需要改变的时候做出改变。我非常喜欢C语言,但是在座的可能喜欢使用Solidity,大家可以从输出中看到细节的情况。
今天通过Solidity 会耗用太多gas,因为gas有上限,我们要怎么改变呢?我们对Gas进行了改善,目前的改进是基于以下几点,目前是基于循环数使用的,gas成本计算表是存储在合约中,这个合约就是我刚刚提到的计量合约。我们不需要对EVM进行改变,eWASM的成本非常低。
因为时间有限只能讲到这里,谢谢大家。
作者:Lydia | 来源:Chainb
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場