币圈界报道:

以太坊状态存储重构:新费率体系引发全网审计警戒

随着 Glamsterdam 升级的推进,以太坊对状态存储的定价机制迎来根本性变革。向新存储槽进行冷写入的费用从现行的 22,100 Gas 上调至 110,020 Gas,增幅超过四倍。为应对这一结构性调整,以太坊基金会已发布包含详细技术规范的代码仓库,邀请各客户端团队审查合约逻辑,识别由费率跃升引发的潜在漏洞。

核心资源再定价:从字节成本到系统级计量

此次变更并非局部微调,而是对以太坊最稀缺资源——状态存储的全面重估。根据可执行规范 EELS 的测量结果,全新存储槽的冷写入现需支付 97,920 Gas 的状态费用,叠加 2,100 的访问费与 10,000 的写入费,总成本显著攀升。同时,账户创建费用从 25,000 提升至 183,600,代码部署成本亦从每字节 200 Gas 增至 1,530,形成系统性影响。

市场反应趋于平静

尽管费率剧增,当前市场情绪保持稳定。据 CoinGecko 数据,截至 11 月 7 日,以太币价格为 2,233.56 美元,七日跌幅 0.91%,较前高点回落 7.8%。虽然低币价降低了美元计价的支出压力,但单位成本的倍数关系未变,仍可能引发合约执行异常。

为何必须此时重新定价?

驱动此次改革的根本动因是状态数据的爆炸式增长。在区块上限翻倍后,日均新增状态量从 105 MiB 激增至 326 MiB,年增长率逼近 387 GiB。若维持当前趋势,客户端状态数据库将在不足八个月内突破 650 GiB 阈值,直接威胁节点性能。为此,基金会提出以“每状态字节成本”(CPSB)为核心的新参数,设定为 1,530 Gas,旨在将长期增长率控制在 120 GiB/年。

新常量确立成本基准

CPSB 被用于推导各项操作的费用。例如,一个 64 字节的状态集对应 97,920 状态 Gas;120 字节的新账户则需 183,600 Gas。该机制使计费表具备可预测性,但也意味着此前无关联的操作出现统一乘数效应,成为审计重点。

费率对比揭示结构变化

下表基于阿姆斯特丹规范下的实测数据,呈现升级前后关键操作的成本差异。值得注意的是,状态费用独立于主交易池计量,因此总消耗为累加而非叠加。

操作类型当前 (Osaka)升级后 (Glamsterdam)
新存储槽的冷写入22,100110,020
现有存储槽的热写入2,90010,100
现有存储槽的冷写入5,00012,100
新账户:向空地址转账25,000183,600 + 执行费用
向空地址创建合约 (CREATE/CREATE2)32,000195,600
代码部署每字节 200每字节 1,530
EIP-7702 授权(空权限)25,000235,606

图表来源:BlockchainReporter,依据 EIP-8037 与 EIP-8038 发布成本表。

访问侧成本拆分:聚焦高开销路径

EIP-8038 对访问类操作实施精细化拆分。存储写入费从 2,800 升至 10,000(+257%),账户写入从 6,700 提至 9,000(+34%),创建组件从 7,000 增至 12,000(+71%)。存储清除退款亦上调至 11,616(+142%)。冷账户访问从 2,600 提至 3,000,而冷存储与热访问费用保持不变,表明调整集中于高成本路径。

八大会计与价格不变性失效警示

基金会明确指出,本次变更破坏了八项原有假设。其中四项涉及会计规则,四项涉及价格稳定性。所有失败案例均被分类记录,供审计人员精准定位风险点。

INV-1,会计:失败调用仍可写入

旧模式中,耗尽 Gas 的调用将导致整个交易回滚。新机制引入储备池后,即使失败调用仍可完成状态写入,且后续代码可继续运行。这使得依赖“失败即中断”的逻辑失效,修复方案建议启用重试或在接收过多 Gas 时主动回滚。

INV-2,会计:即时退还状态 Gas

过去删除同一交易中设置的值仅在结束时退款。现在,零值设置并清空的槽位会立即返还 97,920 状态 Gas。此行为改变锁与标志的使用顺序,应通过瞬态存储或非零初始值规避。

INV-3,会计:回滚也返还存储费

历史中,回滚不返还存储费用。如今,回滚调用会退还其使用的状态 Gas,导致调用者实际拥有的燃气超出预期。失败的合约创建将返还 183,600。依赖空回滚数据判断“燃气不足”的代码将误判,应改查 CREATE 返回值。

INV-4,价格:硬编码限额不再适用

以往固定数值足以覆盖操作。如今,创建、账户与合约成本上升五至八倍,更新写入增加约 7,200。硬编码限制存在于代币、签名、机器人等场景,故障多见于首次接收者。建议提升估算余量,并支持动态调整。

INV-5,会计:gasleft() 差值不可信

过去剩余燃气单调递减,差值即工作量。现在,燃气可在调用期间增加,且储备池支付的气体不计入 gasleft()。两次读数相减可能得负数,导致溢出或回滚。不应依赖此差值计费,应采用预设费用或钳位机制。

INV-6,价格:少量剩余可完成任务

旧系统中,耗尽后保留的 1/64 燃气不足以执行任何操作。新规下,这部分可能足以完成部分任务并标记失败。无检查地调用后标记处理不再安全,需避免落入此区间。

INV-7,价格:补贴无法覆盖新成本

原为转移与发送设计的 2,300 补贴无法创建存储槽。通过这些操作码接收价值后写入存储的合约将失败,且先前消耗的 nonce 会加剧问题。应使用更灵活的激励机制。

INV-8,会计:委托可被重复利用

过去 mined 交易中的 7702 委托视为不可逆。现在,燃气耗尽的委托在交易挖掘中仍可回滚,允许任何人重用签名。暴露的钱包初始化函数应绑定签名,并在交易后验证账户代码。

24 KB 合约部署成本激增近八倍

以 24,576 字节合约为例,部署成本从 4,947,200 Gas 增至 37,784,880 Gas,约为原始值的 7.6 倍。计算过程为:24,576 × 1,530 = 37,601,280 状态 Gas,加上 183,600 新账户费用,合计 37,784,880,与提案一致。在 6,000 万上限下,该部署占用区块比例从 8.25% 升至 62.97%。以 2,233.56 美元计价,在 0.08 gwei 下,美元成本从 0.88 美元升至 6.75 美元;在 20 gwei 下,则从 221 美元跳至 1,688 美元。

责任归属与豁免范围界定

Layer 2 网络不受影响,因其保留自有费率体系。唯一例外是创世激活 EIP 的网络(如新开发网、测试网),须为 SingletonFactory、Create2Deployer 等确定性工厂重新生成预签名交易或预部署合约。主网内,所有创建新状态的实体承担成本。首次接收以太币的交易所地址需支付 183,600 状态 Gas,远高于普通转账的 21,000。为规避此费用,部分用户尝试先发普通转账建立账户,此策略或将被 EIP-2780 取消。

客户端需配置的临界阈值

决定会计行为的关键是 2^24(16,777,216)Gas 上限。超过此值,状态费用由独立储备池承担;低于则仍来自 gasleft()。这一单一数值决定了哪类不变性适用,也是仓库中“带储备池”标签的来源。此外,单次调用最多 16 次系统写入,最大交易上限为 2^32 - 1。构建者面临多维资源平衡,虽有利好高级玩家,但基础操作仍可行。

尚未最终敲定的事项

项目组强调:“我们正收集反馈,以便在下次全核心开发者会议(ACD)上深入讨论变更影响。” 根据响应情况,可能微调甚至不修改提案。两个 EIP 均处于“最后呼吁”状态,截止日期为 2026 年 11 月 1 日,但主网激活时间仍未公布。时间线显示,仓库自 11 月 1 日提交,11 月 6 日最后一次合并,期间未宣布上线计划。

常见问题解答 (FAQ)

Glamsterdam 如何改变 Gas 结构?

它将状态创建分离为独立计量器,费率设定为每状态字节 1,530 Gas,同时对访问操作重新定价。新存储槽冷写入从 22,100 升至 110,020,新账户从 25,000 提至 183,600,代码部署从每字节 200 增至 1,530。

合约部署成本将增加多少?

24 KB 合约部署成本从 4,947,200 Gas 增至 37,784,880 Gas,增幅约 7.6 倍。占 6,000 万上限区块的比例从 8.25% 升至 62.97%。

Layer 2 是否受影响?

否。现有网络(含主网与 L2s)保留自身费率体系。仅创世激活 EIP 的网络(如新开发网)需继承变更,且须预部署或重签确定性工厂合约。

开发者应如何准备?

替换硬编码的 Gas 限额,停止依赖 gasleft() 差值进行计费或退款,检查 CREATE 结果而非推测失败原因,为 10,100 的热写入调整储备规模,并在切换锁的合约中使用瞬态存储。

费率是否最终版本?

尚未确定。两提案仍在“最后呼吁”阶段,基金会正在收集反馈,可能在下次 ACD 会上调整。主网激活日期仍未公布。

披露:本文引用以太坊基金会公共仓库及所列 EIP 内容。所有数值基于固定阿姆斯特丹规范下的 EELS 测量,若规范变更,结果可能随之调整。