EVM的CALL指令把Gas参数当上限而不是配额,给不够就少给点也要跑。EIP-1930在2019年提出严格语义:指定多少必须给多少,给不出就revert,并提出用高位标志区分新旧语义的免加指令方案。提案停在Stagnant,但它点破了Gas语义里一个沿用至今的模糊地带。
汇总与「智能合约」相关的文章,帮助你系统了解该主题。
EVM的CALL指令把Gas参数当上限而不是配额,给不够就少给点也要跑。EIP-1930在2019年提出严格语义:指定多少必须给多少,给不出就revert,并提出用高位标志区分新旧语义的免加指令方案。提案停在Stagnant,但它点破了Gas语义里一个沿用至今的模糊地带。
Cardano 交易费等于按字节的线性费加按 ExUnits 的脚本执行费,内存与 CPU 步数在提交前离线模拟、链上逐条对账,理论上没有预估与实付之差。本文按官方文档与协议参数记录拆解这套双轨成本模型及其抵押品规则。
Solidity与Vyper编译器习惯把元数据附在字节码尾部,源码验证时验证器不得不靠启发式剔除它,EOF下往数据段塞元数据还会平移DATALOADN偏移。EIP-7834为EOF容器新增代码不可达的独立元数据段。本文讲清这截尾巴的三十年历史账、提案的容器格式改动与它对验证公平性的意义。
EIP-7702 让普通地址的代码字段写入一段以 0xef0100 开头的委托指示器,而 EOF 规范为禁止代码内省,把这段指示器对合约完全藏了起来。2025 年 2 月提出的 EIP-7880 想加一条 EXTCODEADDRESS 指令(0xea),让合约不必读原始字节就能问到某个地址最终委托给了谁。该提案处于 Review 状态。本文拆解它的取值规则、代理防护与防抢跑两个场景,以及对核对钱包授权的人来说意味着什么。
以太坊上的合约只能看到直接调用自己的那一层数据,看不到整笔交易最初携带的 calldata。2021 年 4 月提出的 EIP-3508 想补上 ORIGINDATALOAD、ORIGINDATASIZE、ORIGINDATACOPY 三条指令,让调用链深处的合约直接读原始交易数据,省去逐层转传的 Gas 开销。该提案处于 Stagnant 停摆状态。本文解释多层调用下数据可见性的真实边界,以及普通用户从这一机制里能读出什么。
合约想读另一个合约存储里的一个映射值,现实做法只能调用对方的 view 函数,代价里混着跨合约调用、ABI 编解码等一揽子开销。2019 年 10 月提出的 EIP-2330 想加一条 EXTSLOAD 指令,让合约像读自己存储一样直接读别人的槽位,原文称成本可降十倍且更可预测。该提案处于 Stagnant 停摆状态。本文讲清这条指令的规格、编号撞车历史与对普通用户的实际含义。
按现行规则,自毁之后的合约代码与存储不再被普通交易触碰,那些数据却仍占着状态。2020 年 9 月提出的 EIP-2936 想加一条 EXTCLEAR 指令,让任何人支付 Gas 去清零已自毁合约的存储槽,并提议自毁本身不再清存储。这份 Stagnant 提案从未上线。本文对照 2024 年 3 月随坎昆升级生效的 EIP-6780 讲清自毁与存储清理的现状边界,以及它对普通用户意味着什么。
2020 年 3 月提出的 EIP-3322 想给合约账户加一个可以存取Gas 的退款计数器,用 SELFGAS、STOREGAS、USEGAS 三条指令管理,让合约在便宜时预付、昂贵时支取,把 Gas 账单从即时消费变成可平滑的库存。提案停留在 Stagnant。更大的背景是 2021 年 8 月随伦敦升级生效的 EIP-3529 反其道而行,把退款上限砍到五分之一。本文用原文规格拆解这场「Gas 期货」的设想与现实之墙。
EIP-7784 提议新增 GETCONTRACT 操作码:压入一个字节码哈希,返回部署这段字节码的合约地址,查不到则返回零。配套要求是每个存入 EVM 的合约按 keccak256(字节码) 建索引。本文讲清内容寻址为何对审计、白名单与代码复用有用,规范里那些排除条款(自毁合约、空账户哈希)的意义,以及给全量合约建哈希索引的代价。
SELFDESTRUCT 是以太坊最古老的操作码之一,EIP-6780 在 2024 年 3 月坎昆升级后已把它削弱成基本只转钱不清仓,但极少数情形(同一笔交易里创建又自毁)下余额仍会被销毁。EIP-8246 在 2026 年 5 月提议移除剩余的这些烧币情形:账户的代码、存储与 nonce 仍在交易收尾时清空,余额全部保留。本文回顾自毁的动机与减法史、剩下特例的确切形状,以及从创世重放到约第 2500 万块只找到两笔此类销毁意味着什么。