链上交易执行失败并不等于免费。本文解释为什么回滚的交易照样扣走 Gas、这笔成本该归到哪个科目、失败率和单价怎么合成一份预算,以及借贷、兑换、清算补救这些场景里哪些失败最容易反复交学费。
汇总与「Gas 机制」相关的文章,帮助你系统了解该主题。
链上交易执行失败并不等于免费。本文解释为什么回滚的交易照样扣走 Gas、这笔成本该归到哪个科目、失败率和单价怎么合成一份预算,以及借贷、兑换、清算补救这些场景里哪些失败最容易反复交学费。
以太坊合约把存储槽从零写成非零,等于给全网节点的数据库新增一条记录,现行计价是单次 20000 Gas。2022 年 4 月的 EIP-5022 认为这笔入场费长期被低估,主张直接翻倍到 40000 Gas,理由是状态膨胀已成为提高 Gas 上限的最大阻力。这份提案处于 Stagnant 停摆状态。本文解释状态增长为什么贵、为什么只抬从零到非零这一档,以及它落地的话哪些操作会变贵,和状态租金等长期方案的分工。
2019 年 1 月,为给旧合约保住 2300 Gas 转账保护带来的隐含防重入假设,EIP-1706 提议在剩余 Gas 不超过 2300 时禁止 SSTORE 写存储。它最终被作者主动撤回,理由是更整体的 EIP-2200 取代了这条硬线。本文梳理 1283 净计费、彼得堡分叉回撤、伊斯坦布尔重新上线这条时间线,讲清 2300 这条保护线今天还在哪里起作用,以及一份被撤回的提案对读安全公告的人有什么用。
2020 年 3 月提出的 EIP-3322 想给合约账户加一个可以存取Gas 的退款计数器,用 SELFGAS、STOREGAS、USEGAS 三条指令管理,让合约在便宜时预付、昂贵时支取,把 Gas 账单从即时消费变成可平滑的库存。提案停留在 Stagnant。更大的背景是 2021 年 8 月随伦敦升级生效的 EIP-3529 反其道而行,把退款上限砍到五分之一。本文用原文规格拆解这场「Gas 期货」的设想与现实之墙。
EIP-2930 的交易访问列表已随柏林升级生效,通过冷热存储访问差价影响 Gas 消耗;2021 年的 EIP-3584 曾提议把整个区块内各交易的访问列表汇总成区块级列表,并把指纹写入区块头,现为 Stagnant 状态。本文讲清访问列表机制本身、区块级汇总想换来什么,以及用户如何用收据与浏览器核对访问痕迹。
从创世起,每笔以太坊交易的固有成本都是固定的 21000 Gas,无论它是否创建新账户、是否写入存储。处于 Review 状态的 EIP-2780 把这块包价拆成签名恢复、账户访问、余额写入、状态增长等明码标价的资源项,普通转账维持 21000,创建账户的转账则按状态成本补交。本文拆解这份 2020 年提出、近年随状态费用提案重生的方案,以及它对钱包与 Gas 估算器的连锁影响。
EIP-1153 在 2024 年 3 月的 Dencun 升级后给 EVM 带来了瞬态存储:一笔交易执行期间可用的临时键值空间,交易一结束就清空,现行读写各按 100 Gas 的暖访问价收费。EIP-7971 提议把计价改成固定的低价(读 5、写 12),同时给每笔交易可占用的瞬态槽位数量设 131072 个的协议层硬上限,防止客户端被要求为海量临时键分配内存。本文讲清瞬态存储是什么、不设上限的拒绝服务风险从哪来、低价与闸门为什么必须配对出现,以及这份 2025 年 6 月草案的推进状态。
每个存储槽 initialization 要烧掉真金白银,而绝大多数链上金额用不到 256 位的大半数比特。ERC-3772 把整数拆成有效位加左移次数存进更小的槽,代价是有损。这份 Stagnant 提案的两种解压口径值得细看。
元交易不是新词,但以往的代付要么单笔要么同人。ERC-3005 把许多个不同发送者的签名转账收进同一笔链上交易统一验证,摊薄每个人的 Gas 成本。这份 Stagnant 提案的哈希规则与 nonce 校验怎么防重放。
把多笔调用打包成一笔交易并不新鲜,ERC-6357 的特别之处是用 delegatecall 让合约调用自己,任何一步失败整串回滚。这份 Last Call 提案怎么省掉逐笔 21000 Gas 的固定开销,代理合约使用时又埋着什么坑。