EIP-8337 提议给字节码加一个 MAGIC 前缀:带前缀的代码在部署时做静态验证,保证控制流完全静态、每个返回都有对应调用、数据栈深度可静态证明不会下溢。本文解释这套静态合约与 EOF 的关系和实际意义。
汇总与「EVM」相关的文章,帮助你系统了解该主题。
EIP-8337 提议给字节码加一个 MAGIC 前缀:带前缀的代码在部署时做静态验证,保证控制流完全静态、每个返回都有对应调用、数据栈深度可静态证明不会下溢。本文解释这套静态合约与 EOF 的关系和实际意义。
智能合约里一次余额更新要读、算、写三步,并行执行引擎很难判断两次更新能不能同时跑。EIP-7519 提议加两个原子存储操作码 SCREDIT 与 SDEBIT,让协议自己完成加减并检查上下溢。本文解释这种并行原语解决什么、边界在哪。
EIP-145 给 EVM 增加了 SHL、SHR、SAR 三条位移指令,让左移、逻辑右移和算术右移不再需要用乘除法绕路。本文讲清三条指令各自移什么、符号位怎么处理、Gas 怎么收,以及为什么打包多个小整数时会用到移位。
EIP-140 引入 REVERT 指令,让智能合约在失败时退回状态改动并返还剩余 Gas,还能带回一段错误数据。本文讲 REVERT 与 out of gas 的区别、返回数据的编码习惯,以及为什么钱包能弹出可读的失败原因。
EVM 的栈有 1024 格深,但 SWAP 和 DUP 指令只够得着顶部 16 个位置。EIP-663 提议三条新指令 SWAPN、DUPN、EXCHANGE,用操作数直接访问任意深度。本文讲这条限制怎么来的、三条指令怎么设计、为什么它必须等 EOF 一起上线。
EOF 把智能合约字节码装进带清单的集装箱,EIP-7960 想在清单里再加一个字节:代码段类型。它让同一个容器里的不同函数段声明自己是 EVM 还是其他指令集(如 EVM64 甚至未来的 RISC-V)。本文讲类型段的设计、它服务的 64 位 EVM 设想,以及为什么版本号被改成 0x02。
EIP-7543 提议给 EVM 加一组任意精度十进制浮点指令:DECADD、DECMUL、DECEXP、DECLN、DECSIN 等,用系数加指数精确表示小数,把科学计算器级别的初等函数变成一条指令。本文解释为什么二进制存不下0.1、合约里的幂运算为什么贵,以及这份提案停摆的原因。
EIP-7937 提议给 EVM 增加一套以 C0 为前缀的 64 位模式指令:只用 64 位宽度做算术、比较和位运算,省掉 256 位引擎的空转。本文解释为什么大量合约计算用不满 256 位、多字节前缀指令怎么避免挤占指令空间,以及它的 little endian 姊妹提案 7958。
以太坊地址0x04的恒等预编译原样返回输入,只为按长度收gas。EIP-7666提议在激活块开头把一段等价的EVM字节码写进该地址,从此它只是一个合约而非特殊路径。本文解释动机、机制与未决的兼容问题。
以太坊合约之间送 ETH 历来要经过调用语义,而 EIP-5920 草案提出一个 PAY 操作码:弹出地址和金额直接加余额,跳过合约代码执行,也不触发接收方逻辑。提案 2022 年 3 月起处于 Draft 状态。本文讲它与 CALL 的价值转移部分差在哪、为什么不可拒收的进账值得单独立法,以及它和空账户清理提案的牵连。