以太坊虚拟机介绍

EVM基本信息

编程语言虚拟机一般有两种类型,

  • 基于栈,
  • 基于寄存器。

大部分我们所熟知的语言都采用基于栈的虚拟机,比如最著名的Java虚拟机。

在游戏领域非常流行的Lua语言则采用了基于寄存器的虚拟机。

和JVM一样,EVM也是基于栈的虚拟机。

既然是支持栈的虚拟机,那么EVM肯定首先得有个栈。

为了方便进行密码学计算,EVM采用了32字节(256比特)的字长。

EVM栈以字(Word)为单位进行操作,最多可以容纳1024个字。

这就是我们在这篇文章里需要了解的EVM信息,在后面的文章里,我们会逐步介绍更多的EVM细节。

下面是EVM栈的示意图:

EVM指令集

和JVM一样,EVM执行的也是字节码。

如0xF0,16进制,8位。

由于操作码被限制在一个字节(8bit)以内,所以EVM指令集最多只能容纳256条指令(指一行)。

目前EVM已经定义了约142条指令,还有100多条指令可供以后扩展。

这142条指令包括

  • 算术运算指令,
  • 比较操作指令,
  • 按位运算指令,
  • 密码学计算指令,
  • 栈、
  • memory、
  • storage操作指令,
  • 跳转指令,
  • 区块、
  • 智能合约相关指令

等。

我们会在后面的文章里逐步讨论这些指令,下面是已经定义的EVM操作码分布图(灰色区域是目前还没有定义的操作码):

https://www.pianshen.com/article/2419567973/

区块链 以太坊 虚拟机 EVM 为什么256条指令相关推荐

  1. 区块链以太坊以及hyperledger总结

    https://learnblockchain.cn/ 1.什么是智能合约?它有什么特点? 就是具有交互能力而且能够在区块链中传递的合约 一个由计算机代码控制的以太币账户 特点: 公开透明.能即时与区 ...

  2. 区块链 -- 以太坊的36个概念

    2019独角兽企业重金招聘Python工程师标准>>> 1.以太币(Ether)产生规则和比特币有哪些区别? 1. 出块时间. 比特币出块时间是平均10分钟,而以太坊约是15秒. 2 ...

  3. 区块链以太坊应用总结

    1.以太坊 以太坊是利用区块链技术开发的通用计算机,简单地说,以太坊=区块链+智能合约,开发者在以太坊上可以开发任意的应用,实现任意的智能合约.从平台的角度来讲,以太坊类似于苹果的应用商店:从技术角度 ...

  4. 8支团队正在努力构建下一代区块链以太坊Ethereum 2.0

    2019独角兽企业重金招聘Python工程师标准>>> "我们不想在构建 Ethereum 2.0时重新造轮子." 谈到开发人员为 Ethereum 区块链进行两 ...

  5. 【区块链-以太坊】5 Ubuntu下truffle ganache安装及使用

    [区块链-以太坊]5 Ubuntu下truffle & ganache安装及使用 1 truffle安装 1)输入sudo npm install -g truffle 2)将truffle复 ...

  6. 区块链-以太坊学习资料汇总

    最近一段时间以来,对区块链的底层研究和基于区块链的应用开发已经越来越火热了.机缘巧合,目前我也在进行区块链方面的开发,在之后的博客中,我会和大家一起分享区块链开发中的酸甜苦辣.今天我先来对收藏区块链- ...

  7. 可编程区块链以太坊的未来

    区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>,感受一下先行者的思想. 到本文结束时,你将了解一般的区块链(特别是下一代区 ...

  8. 回看2015年是如何描述区块链以太坊的未来

    区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>,感受一下先行者的思想. 到本文结束时,你将了解一般的区块链(特别是下一代区 ...

  9. 回望Vinay2015年的文章:内容可编程的区块链——以太坊的未来

    2019独角兽企业重金招聘Python工程师标准>>> 区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>, ...

  10. 上下文可编程区块链——以太坊的未来

    区块链的火热就不用说了,回看一下Vinay Gupta 2015年发表的文章<内容可编程的区块链:以太坊的未来>,感受一下先行者的思想. 到本文结束时,你将了解一般的区块链(特别是下一代区 ...

最新文章

  1. 解题报告:luogu P3916 图的遍历( 缩点 + DFS ? × 思维 + 反向建边 + DFS √ )
  2. JavaScript对象
  3. Codeforces round 1083
  4. 站长们 技术不是你生存的全部
  5. android的各种*.img 文件
  6. 【AI白身境】搞计算机视觉必备的OpenCV入门基础
  7. 7.Vue 列表渲染
  8. 12v小型电机型号大全_电动机型号参数大全,再也不怕看不懂电机型号了
  9. 《深入理解分布式事务》第九章 可靠消息最终一致性分布式事务原理
  10. js与c语言效率_2020年为什么要精通C语言?是什么造就封神之路?不愧是最强编程语言...
  11. 模块化编程的分层设计经验
  12. 【Foreign】朗格拉日计数 [暴力]
  13. c++多线程——简单线程池
  14. 高通fastboot一键进9008工具_linux高通内核移植工具十教程
  15. Unity3D最全性能优化参考手册(渲染、代码、UI)
  16. 关于Matpower用于攻击检测仿真方法的文献摘录
  17. learn words by steps 8 英语单词
  18. 有人给我留言要电源软件,于是就有了这篇软件合集
  19. 如何在Python中使用Rest API
  20. 量子笔记:多比特量子门

热门文章

  1. struts2 Unable to load configuration
  2. S3C6410和S5PV210的启动模式介绍
  3. 关于通用配置管理模块的思考-续(用XmlDocument 还是DataSet)
  4. Dijkstra 路径规划 C#
  5. NHibernate中ISession的Flush
  6. PHP导出数据库数据字典脚本
  7. iBeiKe十周年照片~
  8. java的字符串的加密_Java加密解密字符串
  9. python语言数字类型字节_Python中 各种数字类型的判别(numerica, digital, decimal)
  10. 代写R语言assignment经常用到的代码语法分享!