早期 ERC 习惯用 Solidity 源码描述接口,等于让一门语言的语法替所有语言定义标准。EIP-2069 建议在提案里附上一份带注释的 YAML 版 ABI 描述,用可读的说明书补足机器可读但无法注释的 JSON。本文讲清 ABI、JSON 与 YAML 三者的关系,以及这份 2017 年提案留下的规范写作经验。
汇总与「智能合约」相关的文章,帮助你系统了解该主题。
早期 ERC 习惯用 Solidity 源码描述接口,等于让一门语言的语法替所有语言定义标准。EIP-2069 建议在提案里附上一份带注释的 YAML 版 ABI 描述,用可读的说明书补足机器可读但无法注释的 JSON。本文讲清 ABI、JSON 与 YAML 三者的关系,以及这份 2017 年提案留下的规范写作经验。
合约调用另一个合约后,返回数据不必提前猜长度也能完整取回,靠的是EIP-211加的两条指令:RETURNDATASIZE量尺寸、RETURNDATACOPY搬数据,数据存在一块每次调用后自动覆写的虚拟缓冲区里。本文讲清这套机制补上的坑、和calldata相似的记账方式,以及它如何让通用转发合约这类模式成为可能。
EVM操作码空间里,0xfe被正式指定为INVALID无效指令:碰到它执行就立刻中止、Gas全部烧完。EIP-141把这件事写成规范只有几行字,但它给调试、编译器防御和合约保险丝提供了一个统一的中止信号。本文讲清0xfe的来历、它和REVERT的分工,以及为什么一个永远不会被正常执行的操作码值得单独写一条提案。
Cardano 交易费等于按字节的线性费加按 ExUnits 的脚本执行费,内存与 CPU 步数在提交前离线模拟、链上逐条对账,理论上没有预估与实付之差。本文按官方文档与协议参数记录拆解这套双轨成本模型及其抵押品规则。
EVM的CALL指令把Gas参数当上限而不是配额,给不够就少给点也要跑。EIP-1930在2019年提出严格语义:指定多少必须给多少,给不出就revert,并提出用高位标志区分新旧语义的免加指令方案。提案停在Stagnant,但它点破了Gas语义里一个沿用至今的模糊地带。
经过代理和委托调用的连环转发后,合约里的CALLER只能看到上一跳,看不到最初发起交易的用户。EIP-3520提出一条ENTRYPOINT指令,返回当前交易最开始的接收地址。这份2021年的提案停在Stagnant,但身份认错的麻烦每天都在发生。
账户抽象想让普通地址也能像合约一样验证签名和代付,但预验证调用可能在模拟阶段被拒。EIP-2970提出一条IS_STATIC指令,让合约区分自己正在真实执行还是静态模拟。这份Vitalik的提案停在Stagnant,问题本身却随着4337的落地越发真实。
EVM的内存没有静态变量概念,合约里的每个变量访问都要先执行一次地址加法。EIP-3337提出引入帧指针:GETFP、SETFP和带偏移的存取指令,让编译器把变量放进可寻址范围后直接读。这份2021年的提案现在处于Stagnant,但它记录了EVM内存模型的一个真实痛点。
EIP-7702 让普通地址的代码字段写入一段以 0xef0100 开头的委托指示器,而 EOF 规范为禁止代码内省,把这段指示器对合约完全藏了起来。2025 年 2 月提出的 EIP-7880 想加一条 EXTCODEADDRESS 指令(0xea),让合约不必读原始字节就能问到某个地址最终委托给了谁。该提案处于 Review 状态。本文拆解它的取值规则、代理防护与防抢跑两个场景,以及对核对钱包授权的人来说意味着什么。
Solidity与Vyper编译器习惯把元数据附在字节码尾部,源码验证时验证器不得不靠启发式剔除它,EOF下往数据段塞元数据还会平移DATALOADN偏移。EIP-7834为EOF容器新增代码不可达的独立元数据段。本文讲清这截尾巴的三十年历史账、提案的容器格式改动与它对验证公平性的意义。