找回密码
 立即注册

扫一扫,登录网站

首页 百科 查看内容
  • 13110
  • 1
  • 分享到

什么是以太坊虚拟机(EVM)?

2019-9-2 15:18

为了理解Ewasm及其对以太坊网络的影响,我们必须首先熟悉其将替代的以太坊虚拟机(EVM )。EVM是一个轻量级的虚拟机,其设计是用于在以太坊网络上运行智能合约。作为虚拟机,EVM的功能与传统的操作系统(如Windows)稍有不同。一般来说,虚拟机(VM)是建立在本机操作系统上模拟物理机的高级抽象。它们允许同一平台,在许多不同的硬件体系结构和操作系统上运行,这使得虚拟机(VM)非常适合像以太坊这样的分布式网络。EVM的构建是为了模拟可由物理CPU执行的操作,其还负责以太坊的许多关键功能。

而EVM除了作为一个虚拟机,它也是一个“堆栈机”和一个“状态机”(我知道,它有很多形容词,请原谅)。状态机只是一台可以读取输入并基于这些输入转换为新状态的机器。而基于堆栈的虚拟机是将内存结构组织为堆栈并作为堆栈访问的虚拟机。这与基于寄存器的虚拟机相反,其内存结构存储在CPU的寄存器中。为了在基于堆栈的虚拟机上执行操作,称为“操作数”(operand)的数据从堆栈中“弹出”,通过接受操作进行处理,然后根据后进先出(LIFO)的原则“推送”回堆栈。使用基于堆栈的机器进行添加的工作方式如下:

  1. POP 20
  2. POP 7
  3. ADD 20, 7, result
  4. PUSH result

p1

https://markfaction.wordpress.com/2012/07/15/stack-based-vs-register-based-virtual-machine-architecture-and-the-dalvik-vm

使用堆栈系统的一个主要优点是,EVM不需要显式地知道它正在处理的操作数的地址,因为调用堆栈指针(SP)总是会提供下一个操作数,这有助于EVM提高效率并降低存储需求。

除了堆栈之外,EVM还可以将数据存储到内存(RAM)和磁盘存储。将数据发送到磁盘存储器需要的gas最多,而发送到堆栈需要的gas最少。EVM根据其预期用途和预期的gas成本决定将某些数据发送到何处。在宏观层面上,EVM由世界状态(world state)、机器状态和虚拟ROM组成。世界状态是网络上所有帐户的存储,而机器状态包括程序计数器、可用gas、堆栈和内存。虚拟只读存储器(ROM)是不可变的“EVM字节码”,这是一种只有EVM才能理解的特殊语言。理解字节码及其与诸如solidity等高级语言的关系是非常重要的,以便充分掌握EVM的功能。从网络创世开始,以太坊开发者就用Solidity编程语言编写了代码,Solidity是一种“高级”编程语言,这意味着尽管开发者可以理解Solidity,但机器却不能理解。为了让计算机理解Solidity代码,它必须使用名为solc的solidity编译器编译。编译器会将solidity转换为字节码,字节码是solidity操作码的二进制表示形式。EVM将所有值视为二进制,而无法理解其他任何值,因此编译器的存在是非常重要的,其允许开发人员的表达能够被EVM理解。

版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。
相关新闻
发表评论

请先 注册/登录 后参与评论

    回顶部