什么是以太坊虚拟机?
-
以太坊虚拟机(EVM)是智能合约的运行环境。它是一个完全独立的沙盒,合约代码在EVM内部运行,对外是完全隔离的,甚至不同合约之间也只有有限的访问权限。
-
EVM ( Ethereum Virtual Machine ) 即 以太坊虚拟机 是以太坊中智能合约的运行环境。而EVM运行在以太坊节点上,当我们把合约部署到以太坊网络上之后,合约就可以在以太坊网络中运行了。
-
EVM使用了256比特长度的机器码,是一种基于堆栈的虚拟机,用于执行智能合约,并使用了以太坊账户模型(Account Model)来进行价值传输。
-
EVM是图灵完备的,由于以太坊系统中引入了Gas的概念,所以原则上在EVM中可执行的计算总量受Gas总量限制。
-
EVM是一个隔离的环境,在EVM内部运行的代码不能跟外部有任何联系。
-
EVM采用了基于栈(Stack)的架构,也就是后进先出(LIFO)的方式。
-
在以太坊设计原理中描述了EVM的设计目标:
- 简单:操作码尽可能的少并且低级,数据类型尽可能少,虚拟机的结构尽可能少;
- 结果明确:在VM规范语句中,没有任何可能产生歧义的空间,结果应该是完全确定的。此外,计算步骤应该是精确的,以便可以测量Gas的消耗量;
- 节约空间:EVM组件应尽可能紧凑;
- 预期应用应具备专业化能力:在VM上构建的应用应能处理20字节的地址,以及32位的自定义加密值,拥有用于自定义加密的模数运算、读取区块和交易数据与状态交互等能力;
- 简单安全:为了让VM不被利用,应该能够容易地建立一套Gas消耗成本模型的操作;
- 优化友好:应该易于优化,以便即时编译(JIT)和VM的加速版本能够构建出来。
-
同时EVM也有如下特殊设计:
- 区分临时存储(Memory,存在于VM的每个实例中,并在VM执行结束后消失)和永久存储(Storage,存在于区块链状态层);
- 采用基于栈(Stack)的架构;
- 机器码长度为256比特,即32字节;
- 使用了可变、可扩展的内存大小;
- 栈的大小没有限制;
- 1024调用深度限制;
- 无类型。
-
像之前定义的那样,EVM是图灵完备虚拟机器,而EVM本质上是被Gas束缚,因此可以完成的计算总量本质上是被提供的Gas总量限制的。
-
此外,EVM具有基于堆栈的架构。每个堆栈顶的大小为256位,堆栈有一个最大的大小,为1024位。
-
EVM有内存(Memory),项目按照可寻址字节数组来存储。内存是易失的,也就是说数据是不持久的。EVM还有一个存储器(Storage),与内存不同,存储器是非易失的,并作为系统状态的一部分进行维护。EVM分开保存程序代码,在虚拟ROM中只能通过特殊指令来访问。
EVM的缺陷与不足
-
机器码长度为256位
- EVM处于所谓运算速度和效率方面考虑,采用了非主流的256bit整数。x86汇编码运算的比较实验,证明了采用256bit整数远比采用处理器原生支持的整数长度要复杂,即EVM的运算效率并不高。
-
缺少标准库
- 在开发Solidity智能合约时就会碰到这个问题,因为Solidity中根本没有标准库。
-
难以调试和测试
- EVM唯一能抛出的异常就是OutOfGas,并且没有调试日志,也无法调用外部代码。
-
不支持浮点数
- 浮点数有很多应用实例,比如风险建模、科学计算,以及其他一些范围和近似值比准确值更加重要的情况。EVM将浮点数排除在外的做法有潜在的局限性。
-
不可修改的代码
-
智能合约在设计时需要考虑的重要问题之一就是是可升级性,因为合约的升级是必然的。
-
在EVM中代码是完全不可修改的,并且由于其采用哈佛计算机结构,也就不可能将代码在内存中加载并执行,代码和数据是被完全分离的。
-
IELE是什么?能否颠覆EVM?
IELE虚拟机IELE是由runtimeverification(RV)公司开发,一款新的区块链虚拟机。
IELE是LLVM的一个变体,专门用于在区块链上执行智能合约。它的设计,定义和实施都是在最高的数学标准下完成的,遵循语义优先的方法,将智能合约验证作为主要目标。具体而言,我们使用K框架定义了IELE的形式语法和语义,作为回报,除了一系列程序分析工具(包括程序验证程序)外,还为我们提供了可执行的参考模型。
伊利诺伊大学公司的框架平台RV和区块链研究开发公司IOHK宣布推出下一代区块链虚拟机。值得注意的是,项目团队选择了开源,基于分散式块链技术的智能合约平台Cardano,以便在接下来的几个月内部署虚拟机。
IELE的技术提供卓越的安全性和可靠性来阻断连锁系统。此外,它减少了可能导致黑客攻击的漏洞。IELE项目涉及RV,伊利诺伊大学的学生和IOHK研发团队,并由Rosu教授带领开发。
一旦智能合约可以实施部署,IELE将作为标准的低级平台,用于编译和执行高级语言的智能合约。该平台还可以开发自动化技术,以数学方式验证和证明智能合约的正确性。因此,编写安全的智能合约将由平台变得简单。此外,该平台还将为所有语言提供统一的气体模型,为气体计算创建标准设计格式。项目团队透露,IELE受LLVM启发,LLVM是用于创建二进制机器码的工具集合。简单来说,IELE基本上是LLVM的变种,专门用于在区块链上执行智能合约。一旦部署在Cardano块链上,IELE将优化ADA事务。让ADA的分层得到更有利的发展和执行,同时也可以提高TPS。
IELE设计原理?
合约可以通过ABI(应用程序二进制接口)相互作用。ABI是IELE的核心元素,而不仅仅是一个公约。无限的整数和无限数量的寄存器应该使得更高级的语言更加直接和优雅地编译,并且从长远来看LLVM的成功更加高效。事实上,许多LLVM优化预计会延续。因此,IELE尽可能遵循LLVM的设计逻辑和规范。
为所有语言提供统一的gas模型。IELE的gas计算的总体设计理念是:“没有上限,但你的为你的作为付出相应的代价”。例如,IELE程序使用的注册数越多,消耗的gas就越多。或者在运行时计算的数字越大,消耗的gas就越多。就储存在地点的数据的位置和大小而言,它使用的内存越多,其消耗的gas就越多,总之你想干更多的事,就要付出更多的gas,得到和付出总是相对的。
让编写安全的智能合约更容易。这包括智能合约必须遵守的书面要求规范,以及更容易地开发自动化技术,以数学方式验证/证明智能合约就此类规范而言是正确的。例如,将一个可能计算的数字推到堆栈上,然后跳转到它认为是一个地址,这使得验证变得困难,从而使安全性变弱,与当前的智能合约模式一起。IELE已经命名了标签,如LLVM,跳转语句只能跳转到这些标签。此外,它避免了使用有界堆栈,而不必担心堆栈或内存泄漏,使智能合约的规范和验证更容易。
IOHK和Rosu教授的看法
- Rosu教授说:
“我们能够构建下一代虚拟机,优化和保护智能合约交互,为高级区块链系统带来更高水平的可靠性。我们将继续巩固我们的成就,优化我们的虚拟机并为其提供更多的实际用例。“
- IOHK首席执行官Charles Hoskinson表示:
“RV与IOHK之间的合作,使得我们发起了IELE,这是值得骄傲的。RV在其领域处于领先地位,并通过与美国国家航空航天局,波音,丰田等多家机构合作,积累了极其丰富的专业知识。当在谈到执行智能合约时,IELE将改变游戏规则。它非常安全,其高级功能将支持和兼容更多的编程语言。“
IELE VM和K-EVM、Goguen最新进展
IELE虚拟机-
关于会计,多种货币和侧链的学术研究;
-
Plutus(一种开发语言)工程和路线图;
- Plutus Core 将被用于计算层(computation layer), 通过IELE或直接运行。因为这些设定,它与区块链的交互将更加丰富, 使其可用于更复杂的智能合约。
-
马洛1.2,学术论文和路线图;
-
首个版本的IELE VM开发已完成;
-
Solidity-to-IELE编译环境已经接近完成;
-
调整最后阶段的IELE VM和K-EVM联合工作;
- 这将把上述所有工作集成到卡尔达诺计算层(CL)和结算层(SL)。整合包括进行侧链和记账的研究,并在SL和CL中实现,这将允许资产在SL和CL之间移动。该工作还包括将Plutus 核心和IELE集成到CL中,这将使得能够在CL中执行智能合约。
-
随着哥根(Goguen)的测试阶段到来,我们正在Ethereum Mantis客户端上发布IELE的测试网络版本,以便开发人员和更广泛的社区可以测试和评估我们的智能合同的实施情况。 测试网络发布的目标是获得有关IELE虚拟机和智能合约功能的反馈。这个测试网的发布会提供一个支持开发者的指定工具集。
-
对开发者后期开发更友好
- 测试网络的部署能使开发人员能来测试智能合约,并在将智能合约部署到主网络之前,熟悉它们是如何运作的。这个专用测试网络可用于测试代码,并尽早发地现任何集成问题。收集可用性的反馈能帮助我们在早期阶段根据需要进行改进。
-
ADA到达了哥根阶段已经形成了类似以太坊虚拟机一样的运行环境,有了侧链、UTXO记账、Plutus Core 编译器、IELE V1虚拟机、CL和SL的集成、交互式REPL与此同时并部署了测试网络,让后期开发者正式接触时可以更快速迭代自己的产品,这就是ADA一个每周更更新代码的团队,距离下次更新还有不到4天,会给我们带来什么惊喜呢,让我们拭目以待!
网友评论