想弄清 ERC-721 接口为何只定义单币转让、钱包批量功能是连发多笔还是打包调用、约 21,000 gas 基础开销能省哪部分、全有全无回滚意味着什么,以及经由第三方合约时多出来的信任面
汇总与「EVM」相关的文章,帮助你系统了解该主题。
想弄清 ERC-721 接口为何只定义单币转让、钱包批量功能是连发多笔还是打包调用、约 21,000 gas 基础开销能省哪部分、全有全无回滚意味着什么,以及经由第三方合约时多出来的信任面
EIP-1052 给 EVM 加了读取任意地址代码哈希的指令,却留下一个反直觉角落:没有代码但有余额的账户返回的不是零,而是空代码的 keccak 哈希。2024 年 2 月 26 日递交的 EIP-7637 要求把这种情况改回 0x,代价是用代码哈希判断余额的用法作废。这份署名 Jame 的提案停在 Stagnant,它牵出的问题——预派生地址被一笔小额转账从 0 翻成空串哈希——至今仍是开发者文档里的暗坑。
EVM 给合约调用设了 256 层深度上限,攻击者可以先用递归调用垫深栈底、再触发目标合约,让它的内部调用恰好撞上天花板而静默失败。2015 年底提出的 EIP-3 想让合约亲手摸到这个问题:新增 CALLDEPTH 指令返回剩余可用深度,把「栈攻击」防御从昂贵的实验性试跑变成一条廉价指令。提案最终撤回,但浅栈攻击作为合约安全教科书条目活了下来,防御手法也演化出别的形态。
EVM 世界运行多年「一切皆跳转」的规矩:函数调用靠把地址压栈再执行动态 JUMP 模拟,验证器不得不在每个跳转点做全码扫描。EIP-4750 是 EOF 字节码集装箱计划里的函数篇:把每个函数拆成独立代码段,配类型段声明输入输出与栈增量,用带立即数的 CALLF 与 RETF 取代动态跳转,另设 1024 深度的独立返回栈。这份 2022 年 1 月的提案最终停在 Stagnant,但它定义的调用模型仍是 EVM 控制流改革最完整的蓝本。
2017 年定稿的 EIP-198 给以太坊加了一个地址 0x05 的预编译合约:输入三个大整数,返回底数的指数次幂对模数取余,按输入长度分段计费。提案解决的痛点写在摘要里——当时的 EVM 里跑大数模幂,一次 2048 位 RSA 验签的 Gas 成本高到不可用,预编译把整个运算搬进客户端原生代码,费用按「大数次数乘比特平方、再除以奖励常数」的公式测算。本文拆解这条公式如何把非对称密码学带进智能合约,以及它后来成为零知识验证栈地基的来路。
Sei 官方文档对 Giga 的架构描述:Autobahn 让每台验证者各流一条哈希链数据道、共识按切面一次敲定许多块,执行与状态证明退到关键路径之外于是最终性分成两档,并在 EVM 兼容性上点名 blob、`PREVRANDAO`、状态根、区块 gas 上限与费用机制这五处例外。
2015 年定稿的 EIP-5 把 CALL 系列的内存计费从「预留多少付多少」改为「写出多少付多少」,让返回变长字符串和动态数组第一次变得可用,也顺手给了代理合约探测返回长度的技巧。本文按原文复盘它的语义与后来的演进语境。
EIP-6 在 2015 年提出,把 EVM 里那个让合约把余额全部转走的操作码从 SUICIDE 改名为 SELFDESTRUCT。改名理由不是技术缺陷,而是心理健康层面的考量。本文说明提案依据、它是别名而非替换,以及后续这条指令语义的演变。
EIP-1051 在 2018 年提出给 EVM 加两个状态旗标(无符号溢出 ovf 与有符号溢出 sovf)和两个读取并清零它们的操作码 OFV、SOVF,让合约不必每步都做溢出检查。本文解释它模仿真实 CPU 的设计、与逐指令检查路线的分岔,以及提案现状。
EVM操作码空间里,0xfe被正式指定为INVALID无效指令:碰到它执行就立刻中止、Gas全部烧完。EIP-141把这件事写成规范只有几行字,但它给调试、编译器防御和合约保险丝提供了一个统一的中止信号。本文讲清0xfe的来历、它和REVERT的分工,以及为什么一个永远不会被正常执行的操作码值得单独写一条提案。