币圈界报道:

以太坊暂停Glamsterdam升级:新Gas模型引发合约兼容性危机

以太坊已决定推迟原定于10月26日在Hoodi测试网激活的Glamsterdam升级,并取消了将测试网Gas上限提升至2亿的计划。此次调整源于对EIP-8037提案与现有主网合约交互潜在冲突的深入评估,核心开发者在第248次全体会议中提出关键担忧。

新Gas分池机制威胁现有合约逻辑稳定性

EIP-8037引入执行Gas与状态创建费用分离的双重记账体系,导致原有依赖剩余Gas判断外部调用成败的合约行为可能发生不可预测变化。这一架构变更使部分合约在执行Gas耗尽时仍具备状态创建能力,从而可能永久记录失败操作,影响重试机制和资金追索权。

真实合约受冲击:13个案例待披露

ChainSecurity已完成初步分析,识别出13个可能因新规则而出现异常行为的智能合约实例。这些项目尚未公开命名,正通过负责任披露流程进行协调。问题集中在那些将可用Gas视为交易安全性或资源分配证据的逻辑结构上。

EIP-8037重构Gas会计:双池机制解析

根据该提案,每笔交易被划分为两个独立费用池:执行Gas用于支付计算开销,状态Gas储备金则专用于覆盖持久化数据写入成本。执行Gas仅支持指令执行,而状态创建费用优先从储备金扣除,仅当余额不足时才动用执行Gas。

gasleft()函数行为变异:执行与状态分离

底层GAS Opcode仅反映执行Gas剩余量,不包含状态储备金信息。这意味着即使执行Gas接近枯竭,合约仍可完成状态写入。此差异打破了传统“执行Gas耗尽即终止”的认知,可能导致失败调用后仍保留长期记录能力。

失败调用触发永久性失败标记

典型模式如:若外部调用失败,则设置失败标志位。在新规则下,即使执行Gas极低,只要状态储备金充足,该标记仍可被成功写入。这可能造成合法尝试被错误拒绝,尤其在依赖历史记录的重试系统中构成严重风险。

存储成本重构:从统一到分项计费

在现行Osaka规则中,写入一个暖存储槽需20,000 Gas。Glamsterdam提案将其拆解为10,100执行Gas与97,920状态Gas,二者分属不同账户。尽管总成本相近,但记账方式差异显著影响事务回滚后的资源返还机制。

撤销机制差异:LIFO恢复与异常处理

当状态创建被撤销时,系统采用后进先出(LIFO)原则补充执行Gas,且未消耗的部分可返还至储备金。然而,正常revert与异常中断后果不同——后者会直接消耗执行Gas,而前者可逆向修复会计。开发者必须依据实际路径判断,而非假设所有失败均返还资源。

三类高危合约模式亟待审查

应重点关注三类代码模式:一是基于gasleft()阈值判断资源耗尽的故障检测;二是使用固定Gas预算的硬编码调用;三是自动标记失败并禁止重试的永久性记录机制。这些模式在新环境下可能产生非预期结果。

扩展目标与兼容性之间的张力

Glamsterdam旨在提升以太坊层1容量,配合EIP-7732与EIP-7928等路线图推进。其核心在于控制长期状态增长带来的经济压力。但实现路径面临挑战:即便接口不变,执行成本变化也可能颠覆金融逻辑,迫使开发人员重新审视现有设计。

测试网延期提供关键缓冲期

Hoodi测试网的推迟为社区争取了时间,以便全面评估受影响模式并制定缓解策略。当前节点运营商已被要求更新客户端以防止误激活。主网用户暂无需行动,但开发团队需立即启动代码审计与跨规则对比测试。

安全边界重定义:避免过度依赖Gas信号

当前发现并未揭示广泛漏洞,而是揭示了一个潜在的兼容性风险。应用开发者应摒弃将gasleft()作为失败唯一判定依据的做法,建立冗余恢复通道。下一阶段的关键任务是验证新模型在真实场景下的安全性,而非单纯设定激活时间点。