

在当前网络环境下,向以太坊写入一个新的存储槽(Storage Slot)需消耗 22,100 Gas。然而,随着 Glamsterdam 升级计划的实施,这一成本将飙升至 110,020 Gas。为此,以太坊基金会协议团队已公开一个代码仓库(最后更新于 2026 年 11 月 6 日),邀请审计人员审查所有客户端合约,以排查由此差异引发的潜在风险。该仓库列出了 EIP-8037 和 EIP-038 所打破的八项不变性规则(Invariants),每一项均详细说明了价格变化、失效的代码模式以及建议的修复方案。
这些并非预测数据,而是基于实际测量的数值。团队指出,这些值是使用可执行规范 EELS(Ethereum Executable Specification)针对固定的阿姆斯特丹(Amsterdam)规范测得的。具体而言,对全新存储槽的冷写入(Cold Write)现在包含 2,100 的访问费用、10,000 的写入费用以及 97,920 的状态 Gas。向空地址转账的费用从 25,000 增至 183,600。代码部署费用则从每字节 200 Gas 调整为每字节 1,530 Gas。以太坊并非仅微调百分之几的手续费,而是在对其最稀缺的存储资源进行重新定价,并告知审计行业在分叉上线前检查其影响范围。
目前市场的反应相对平静。据 CoinGecko 数据显示,截至 11 月 7 日 UTC 时间 16:41,以太币交易价格为 2,233.56 美元,七日内下跌 0.91%,较 11 月 5 日的 2,423.08 美元下跌 7.8%,市值约为 2,729 亿美元。由于手续费以以太币计价,较低的价格确实降低了相同 Gas 单位的美元成本,但这并未改变倍数关系,而正是倍数的变化导致了合约故障。
EIP-8037 阐述了迫使此次变更的算术逻辑。2026 年 1 月,Geth 节点内的状态数据库约为 390 GiB。当区块 Gas 上限从 3,000 万提升至 6,000 万时,日均新增状态量翻了超过三倍,从约 105 MiB 激增至 326 MiB,折合每年约 116 GiB。作者将此增长后的速率视为新的基准线,而非一次性事件:在 2 亿 Gas 上限的情况下,按此行为推算,每年新增状态量约为 387 GiB。
从 390 GiB 起步,按照这一时间表,不到一年即可达到 650 GiB 的临界点,届时客户端性能开始下降。根据计算,这一过程仅需约八个月:(650 - 390) GiB 的余量除以每年 387 GiB 的增长率。这是重新定价的全部论点所在,也解释了为何审计请求如此紧迫。更高的区块上限在执行层面提升了吞吐量,但其代价体现在存储层面,且这笔账单稍后才会在磁盘层级显现。
解决方案是引入一个新常量 CPSB(Cost Per State Byte,每状态字节成本),设定为 1,530 Gas。该参数旨在参考区块 Gas 上限为 1.5 亿时,将年均增长率控制在 120 GiB。一个存储集被测量为 64 个状态字节,因此 64 乘以 1,530 得出上述的 97,920 状态 Gas 数值。一个新账户占用 120 字节,对应 183,600 Gas。EIP-7702 授权基础为 23 字节。一旦定义了单位,其余计费表便随之机械生成,这也是为何此前毫无关联的操作出现了相同的乘数效应。
下表重现了仓库中发布的对比数据,基于固定的阿姆斯特丹规范测量。状态 Gas 通过独立的计量器收取,因此总额并非简单累加至单一 Gas 池。
| 新存储槽的冷写入 | 22,100 | 110,020 | 现有存储槽的热写入 | 2,900 | 10,100 | 现有存储槽的冷写入 | 5,000 | 12,100 | 新账户:向空地址转账 | 25,000 | 183,600 + 执行费用 | 向空地址创建合约 (CREATE/CREATE2) | 32,000 | 195,600 | 代码部署 | 每字节 200 | 每字节 1,530 | EIP-7702 授权(空权限) | 25,000 | 235,606 |
图表来源:BlockchainReporter,基于 EIP-8037 和 EIP-8038 发布时的成本表。
EIP-8038 处理访问侧,并将旧计划中融合为复合常量的成本进行拆分。存储写入费用从 2,800 升至 10,000,增幅 257%。账户写入从 6,700 升至 9,000,增幅 34%。创建访问组件从 7,000 升至 12,000,增幅 71%。存储清除退款从 4,800 升至 11,616,增幅 142%。冷账户访问从 2,600 升至 3,000。冷存储访问保持 2,100 不变,热访问保持 100 不变,表明调整主要针对昂贵路径,而非所有读取操作。
两项提案均处于“最后呼吁”(Last Call)状态。两者显示的审查截止日期均为 2026 年 11 月 1 日,该日期已过,且 EIP-8037 首次创建于 2025 年 10 月 1 日。截止日期过后,文本具备最终确定的资格,但并未冻结,仓库中也明确说明了这一点。
基金会将失败案例分为两类:价格不变性因数值改变而破坏;会计不变性因 EIP-8037 通过仅在 Gas 阈值之上存在的“储备池”来计量状态 Gas 而破坏。以下列出全部八项,因为若摘要中省略其中三项,对审计人员而言将毫无用处甚至产生误导。
旧假设是:Gas 耗尽的调用会导致整个交易失败。引入储备池后,失败调用后运行的代码仍可写入存储,交易完成并记录失败。带有显式 Gas 上限的调用不再限制被调方在写入上花费多少状态 Gas。警示信号是一次失败的调用后跟随永久的“完成”标记,修复方法是允许重试失败项或在调用收到过多 Gas 时回滚。
删除之前在同一交易中设置的值,过去直到交易结束才给予退款。现在,在一个事务内从零设置并清空的槽位会立即返还 97,920 状态 Gas。围绕外部调用切换的锁和标志改变了成本和顺序。瞬态存储或非零 resting value 可避免此问题。
回滚调用所消耗的 Gas 过去已无法收回。现在,回滚调用会退还其使用的存储 Gas,导致调用者拥有的 Gas 多于预期,且失败的合约创建会返还 183,600。依赖空回滚数据或剩余 Gas 来推断“Gas 不足”的代码现在会得出错误结论。应检查 CREATE 结果,而非猜测调用失败的原因。
固定的 Gas 数量过去已足够。现在创建存储、账户和合约的成本增加了五到八倍,更新现有存储每次写入增加约 7,200。硬编码的限制存在于合约、配置、签名消息、机器人和中继器中,故障模式通常出现在首次接收者身上:如新的代币余额或以前未见过的地址。Gas 限额应具备可调性,并在新规下估算时保留余量。
剩余的 Gas 过去呈单调递减,因此两次读数之间的差值即为执行的工作量。现在,Gas 可能在调用期间增加,且从储备池支付的状态 Gas 不会出现在 gasleft() 中。减去两次 gasleft() 读数可能产生负数,在检查算术下会导致回滚,在无检查算术下会发生溢出。不应基于该差值进行计费或退款;应收取约定费用,或对测量值进行钳位和封顶。
调用 Gas 耗尽后,保留的 1/64 过去不足以完成任何操作。在新费率下,这部分剩余 Gas 可能足以完成任务并记录失败。无 Gas 检查地调用然后标记项目已处理不再安全,Gas 估算可能落入该范围内。
为旧计划设计的储备金和补贴不再覆盖工作量。附加在 transfer 和 send 上的 2,300 补贴无法创建存储槽。通过这些操作码接收价值随后写入存储的合约将会失败,且在可能导致失败的调用之前消耗的 nonce 会加剧这一问题。
mined 交易中的 7702 委托过去意味着委托已应用且不可重用。Gas 耗尽的委托现在会在其交易仍被挖掘时被回滚,因此任何人都可以重用该签名委托。任何人都可调用的钱包设置和初始化函数是暴露的模式。应将设置绑定到签名,并在交易后检查账户代码。
EIP-8037 公布了一个典型案例:24 KB 的合约部署从 4,947,200 Gas 增至 37,784,880 Gas,提案将其四舍五入为约八倍。此处展示计算过程:在 24,576 字节且每字节 1,530 Gas 的情况下,仅代码部署就需要 37,601,280 状态 Gas。加上部署创建的新账户所需的 183,600 费用,总计 37,784,880,与提案中的数字完全一致。隐含乘数为 7.64。
区块空间讲述了运营层面的故事。相对于当前的 6,000 万 Gas 区块上限,该部署目前占用区块的 8.25%,升级后将占用 62.97%。在提案引用的 6,000 万上限增加后的平均基础费率 0.08 gwei 下,若以太币价格为 2,233.56 美元,美元成本将从约 0.88 美元升至约 6.75 美元。在 20 gwei 下,同一部署的成本将从约 221 美元升至 1,688 美元。本周 Gas 很便宜,但区块空间有限。
Layer 2 网络不在范围内。EIP-8037 指出,现有网络(包括主网和 L2s)保留自己的 Gas 计划,因此 Rollup 不会通过分叉继承此次重新定价。该豁免有一个狭窄例外:从创世激活 EIP 的网络(如新的开发网和测试网)必须为确定性工厂重新生成预签名部署交易,或在创世时预部署这些工厂。SingletonFactory、Create2Deployer、ImmutableCreate2Factory 和 CreateX 均在列。
在主网内部,成本落在任何创建新状态的实体上。每个新的交易所存款地址在首次接收以太币时需支付 183,600 状态 Gas,相比之下普通转账仅为 21,000 Gas。提案承认由此产生的激励:先发送普通转账以使账户存在,从而跳过此费用。EIP-2780 是拟议的修复方案,将新账户费用加入内在 Gas,使此技巧失效。批量生成地址的钱包、托管方、支付处理商和空投分发商均受此影响。
运营层特别受到 INV-7 的影响。中继器、套利机器人、清算维护者和元交易服务在签名负载和配置中嵌入了 Gas 储备和补贴。这些数值是为存储写入成本 2,900 热的计划设计的。在 10,100 的热存储写入下,相同的储备不再覆盖工作量,故障表现为交易回滚,更糟的是部分完成的交易。
会计变更取决于一个数字:2^24,即 16,777,216 Gas。高于此交易 Gas 上限,状态 Gas 通过单独的储备池计量。低于此上限,所有状态 Gas 均来自 gasleft(),行为更接近当前状况。这一单一阈值决定了哪项会计不变性适用于给定交易,这也是为何仓库将每项会计不变性与“带储备池”短语配对的原因。
另外两个参数限制了同一设计。单次调用最多执行 16 次系统存储写入,最大总交易 Gas 上限为 2^32 减 1。对于构建者,提案坦诚地指出了权衡:区块构建现在平衡多个资源维度而非单一的 Gas 数字, sophisticated 构建者可能获得优势,尽管贪婪启发式方法仍使较小操作者的构建可行。
仓库以一句比任何 Gas 数字都重要的话结尾:“我们试图收集反馈,以便在下一次全核心开发者会议(ACD)上就改变这些不变性的影响进行深入讨论。” 补充说明称,根据响应情况,团队可能会“略微更改 EIP-8037/8038 或不更改”。两个提案或仓库中均未出现主网激活日期,而 Glamsterdam 预计携带的区块 Gas 上限增加也取决于同一决定。
仓库的时间线很短。初始提交于 2026 年 11 月 1 日落地,联系渠道于 11 月 2 日添加,状态 Gas 信用规则于 11 月 4 日和 5 日收紧,最后一次合并 dated 11 月 6 日。这些提交均未宣布激活日期。
以太坊在本周期内已经历过类似情况。区块上限与客户准备情况挂钩,这就是为什么 Prysm 在 Glamsterdam 测试前紧急发布了针对 2 亿 Gas 上限的修复程序,以及为何早期的 Glamsterdam 测试阶段将 ePBS 和访问列表置于同一交付中。重新定价状态是提高上限的前提条件,而非独立变更。
大多数报告的发现引用了 INV-4 和 INV-7,即击中硬编码 Gas 数字的两项价格不变性,因此审计工作集中于此。团队要求通过电子邮件报告而非公开 Issue:“请通过电子邮件报告,不要在公开 Issue 中报告,以便问题在广泛知晓之前得到修复。” 它还要求在存在可行利用案例时提供证明,这在公开场合是不寻常的请求,也是严肃对待故障的信号。
对于持有以太币而非审计合约的读者,传导渠道间接且缓慢。提高创建账户和存储槽成本的重新定价将缩小能为新状态付费的应用程序集合,并改变哪些设计在主网与 Rollup 上仍然可行。这是一个具有多季度视野的费率市场故事,而非当日价格变动的理由,已发布的文件中没有任何内容将重新定价与以太币近期的下跌联系起来。
它将状态创建分离为其自身的 Gas 计量器,费率为每状态字节 1,530 Gas,并对状态访问操作进行重新定价。对新存储槽的冷写入从 22,100 增至 110,020 Gas,新账户从 25,000 增至 183,600,代码部署从每字节 200 增至 1,530。
对于达到 24 KB 上限的合约,EIP-8037 自身的表格显示部署成本从当前的 4,947,200 Gas 增至 37,784,880 Gas,约增加 7.6 倍。这约占 6,000 万 Gas 区块的 63%,而目前仅为 8.25%。
否。EIP-8037 指出,现有网络(包括主网和 L2s)保留自己的 Gas 计划。只有从创世激活 EIP 的网络(如新的开发网和测试网)才会继承此变更,且这些网络必须重新签名或预部署确定性工厂合约。
用基于新规估算的数值替换硬编码的 Gas 限额,停止基于 gasleft() 差值进行计费或退款,检查 CREATE 结果而非从空回滚数据推断失败,并为 10,100 的热存储写入调整储备规模。在单个事务中切换锁的合约应使用瞬态存储。
尚未确定。EIP-8037 和 EIP-8038 均处于“最后呼吁”状态,审查截止日期为 2026 年 11 月 1 日,基金会表示正在收集反馈以供下一次全核心开发者会议讨论,并可能仍会更改提案。未公布主网激活日期。
披露:本文引用了以太坊基金会的公共仓库及其引用的两项以太坊改进提案。Gas 数值为这些文件中公布的值,在固定的阿姆斯特丹规范上使用 EELS 测量,如果规范发生变化,数值可能会改变。
声明:文章不代表币圈网立场和观点,不构成本站任何投资建议。内容仅供参考!
免责声明:本站所有内容仅供用户学习和研究,不构成任何投资建议.不对任何信息而导致的任何损失负责.谨慎使用相关数据和内容,并自行承担所带来的一切风险.