【以太坊剖析】以太坊虚拟机(EVM)之基本定义

以太坊虚拟机(EVM)

以太坊虚拟机(Ethereum Virtual Machine,简称EVM)是一个基于栈的虚拟机,基于特定的环境数据,执行一系列的字节代码形式的指令,以修改系统状态。EVM目前提供了11类,140个指令。

EVM是一个准图灵机,这个“准”的限定来源于其中的运算是通过参数gas来限制的,也就是限定了可以执行的运算总量。EVM的具体逻辑定义为代码执行函数(Ξ):

( σ ′ , g ′ , A , o ) ≡ Ξ ( σ , g , I ) (\boldsymbol{\sigma}', g', A, \mathbf{o}) \equiv \Xi(\boldsymbol{\sigma}, g, I) (σ,g,A,o)Ξ(σ,g,I)

其中,函数的参数部分,σ表示状态,g表示可用gas,I表示执行环境数据;函数的返回值部分,σ’表示计算后的状态,g’表示剩余gas,A表示累积子状态,o表示结果输出。

EVM的具体实现逻辑包含:

  • 基本定义: 对环境、指令集、EVM状态的定义
  • 合约代码执行: 将合约字节代码解析为一系列指令及其参数,并循环执行。
    • 指令执行: 根据执行环境和EVM状态,对单条指令进行解析、计费、执行
      • 指令解析: 获取将字节码解析为指令及参数
      • GAS计费: 计算指令执行所要消耗的gas数量,并校验gas是否充足
      • 栈操作: 出入栈操作,及其校验
      • 内存操作: 读写内存操作,内存分配等
      • 指令运算: 执行指令的具体逻辑
    • 异常停止: 因Gas不足、栈溢出等问题导致的程序执行终止。
    • 正常停止: 按照代码逻辑完成指令的执行,并正常退出和输出结果。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值