zoukankan      html  css  js  c++  java
  • 以太坊虚拟机介绍

    近期打算写一些关于以太坊虚拟机(后面简称EVM)的文章,这是其中的第一篇。这一系列文章想站在EVM指令集的角度,带领读者逐步理解EVM工作原理,进而理解以太坊区块链技术细节。由于网上介绍以太坊的文章也比较多,所以这一系列文章将最大程度减少不必要的废话,直接提供文章想要表达的信息。

    EVM基本信息
    编程语言虚拟机一般有两种类型,基于栈,或者基于寄存器。大部分我们所熟知的语言都采用基于栈的虚拟机,比如最著名的Java虚拟机。在游戏领域非常流行的Lua语言则采用了基于寄存器的虚拟机。和JVM一样,EVM也是基于栈的虚拟机。

    既然是支持栈的虚拟机,那么EVM肯定首先得有个栈。为了方便进行密码学计算,EVM采用了32字节(256比特)的字长。EVM栈以字(Word)为单位进行操作,最多可以容纳1024个字。这就是我们在这篇文章里需要了解的EVM信息,在后面的文章里,我们会逐步介绍更多的EVM细节。下面是EVM栈的示意图:

     

    EVM指令集
    和JVM一样,EVM执行的也是字节码。由于操作码被限制在一个字节以内,所以EVM指令集最多只能容纳256条指令。目前EVM已经定义了约142条指令,还有100多条指令可供以后扩展。这142条指令包括算术运算指令,比较操作指令,按位运算指令,密码学计算指令,栈、memory、storage操作指令,跳转指令,区块、智能合约相关指令等。我们会在后面的文章里逐步讨论这些指令,下面是已经定义的EVM操作码分布图(灰色区域是目前还没有定义的操作码):

  • 相关阅读:
    [HAOI 2007]上升序列
    转载:分布式与集群的区别究竟是什么?
    转载:5个顶级异步Python框架 https://geekflare.com/?s=python
    代码走读 airflow
    走读中学到的技巧 airflow
    sqlalchemy 相关
    pandas 筛选
    pandas IO
    服务端高并发分布式架构演进之路 转载,原文地址:https://segmentfault.com/a/1190000018626163
    pandas 6 时间
  • 原文地址:https://www.cnblogs.com/405845829qq/p/9998190.html
Copyright © 2011-2022 走看看