简化EVM世界启发你-合约编译成字节码及EVM执行过程

上一篇中初步介绍了一下EVM的结构,这篇文章主要是介绍solidity高级语言编写的智能合约编译成字节码过程及EVM执行过程

你真的理解了EVM吗?简化EVM世界启发你

  在这之前,为什么理解EVM对我们来说很重要:

1、solidity高级语言编写的智能合约是如何在EVM上执行的

2、理解EVM是如何组织数据、存储和操作的

3、如何编写出更优Gas的智能合约

图片

    使用solidity开发出来的合约(人能够理解的)会被编译成上图中右则的字节码(它是一种用16进制表示的编码,是EVM能够理解的语言),EVM在执行的时候实际上是把字节码翻译成上图左边的带有操作指令的汇编码。在EOA在调用合约时,EVM按照解释出来的操作指令顺序执行,直到结束或者遇到错误后停止或者gas不足后中断。

    对于人来说我们可以理解一条条的语句,对于EVM来说是怎么理解要执行的那串东西?我们知道EVM是一个虚拟机堆栈机,它是一个运算虚拟机器,只要把要执行的东西丢进去它就能给出对应的结果。

图片

    EVM之所以能理解那一串操作,是人为设置了一些预定义指令叫做操作码,有了这个操作码之后,EVM就知道把操作数放入哪些存储位置和如何操作了。

图片

使用1个字节定义了最多256个操作指令,具体可以参考

  • EIP-150 操作码 Gas 成本

定义的操作指令及花费情况

图片

或者到 https://www.evm.codes/?fork=shanghai这里看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值