EVM 的跳转长期只有按栈上绝对地址跳的 JUMP,编译器为此付出跳表与校验成本。EIP-4200 为 EOF 格式设计 RJUMP、RJUMPI、RJUMPV 三条相对跳转,偏移量编成指令自带的有符号立即数。本文讲这三条指令的编码、对旧字节码的无效化处理与它随 EOF 一起停滞的现状。
汇总与「EVM」相关的文章,帮助你系统了解该主题。
EVM 的跳转长期只有按栈上绝对地址跳的 JUMP,编译器为此付出跳表与校验成本。EIP-4200 为 EOF 格式设计 RJUMP、RJUMPI、RJUMPV 三条相对跳转,偏移量编成指令自带的有符号立即数。本文讲这三条指令的编码、对旧字节码的无效化处理与它随 EOF 一起停滞的现状。
以太坊的配对运算预编译只为固定曲线而设,想验证 BLS 签名就得逐条 EIP 加新预编译。2019 年的 EIP-1962 设想一个运行时定义曲线的通用预编译:一条曲线说明串,配上标量乘、配对和大域运算。提案已停滞,但它提出的问题正被 2537 式的定点路线逐一回应。
EIP-1052 引入的 EXTCODEHASH 用一个哈希值把账户状态切成三类:完全不存在、有记录无代码、有合约。它的定价史更像一部状态访问 DoS 防御史:400 gas 起步,事故后升到 700,柏林升级再改成冷热分层。本文拆解三种返回值含义,并解释 EIP-3607 与 EIP-7702 如何依赖同一个哈希值。
EIP-2315 只加两个操作码,就给 EVM 配上一条不参与共识的返回栈,让合约内函数调用告别手工压栈跳转。它最终随 EOF 提案整体 withdrawn。本文拆解 RJUMPSUB 与 RETURNSUB 的机制、返回栈不进共识的设计取舍,以及它与 EOF、CALL 帧栈的关系。
BLOCKHASH 只能查最近 256 个区块,实现上长期是绕开状态的特例路径。EIP-7709 草案让这个操作码改从 EIP-2935 系统合约的存储里解析区块哈希,gas 随之按状态访问冷热计价。本文讲清窗口与底仓的区别,以及统一 witness 机制对可验证执行的长尾影响。
以太坊给合约代码设的 24576 字节上限从 2016 年沿用至今,把无数合约推进代理与切片的迷宫。EIP-7907 提议把上限抬高一档、给超额代码按字收燃气费。本文按提案正文拆解 64KB 数字的来历、每 32 字节 2 气的动态计价、initcode 同步翻倍的理由,以及它为何停在草案状态。
以太坊子调用最多只能带走父上下文 gas 的 63/64,这一规则随 2016 年 Tangerine Whistle 升级生效,把调用栈深度硬限制替换为约 340 层的软限制。本文还原 EIP-150 的算式、当时的拒绝服务背景,以及它在今天审计与排障中的存在感。
ERC-1191 在 EIP-55 校验和里掺入链标识,让同一地址在不同链呈现不同大小写,但只有选择加入的链才启用,规范仍处于最后征集意见阶段。本文解释算法改动、可选性质与跨链地址事故的真实防线。
EVM 里连压一个常数零都要 PUSH1 占两字节,合约因此发明了用 PC、CALLDATASIZE 等指令偷零的生存智慧。EIP-3855 用一条 PUSH0 指令终结这场字节游戏。本文讲清它的前因、2 燃气与单字节编码的账,以及它对部署成本的实际影响。
以太坊合约想读当前信标时段号,要么硬编码秒数换算,要么花 Gas 验信标区块根。EIP-7843 提议直接加一个 SLOTNUM 操作码。本文拆解它的两种现状路线的缺陷、操作码草案的技术口径与当前状态。