以太坊开发者已推迟 Hoodi 测试网上的 Glamsterdam 升级,原因是安全研究人员发现,拟议中的 gas 计费调整可能使八项现有智能合约假设失效。
以太坊基金会在 11 月 6 日的一篇博客文章中表示,审计机构 ChainSecurity 识别出多个项目在 EIP-8037 和 EIP-8038 生效后可能面临风险。
这两项提案都会改变以太坊对某些操作收取 gas 的方式,尤其是涉及区块链状态创建和访问的操作。一些现有合约依赖固定的 gas 成本,或者依赖某项操作失败后剩余 gas 的特定假设。
这些发现促使以太坊的 All Core Developers(ACD)小组暂停推进 Hoodi 硬分叉,直到兼容性问题得到解决。
开发者目前正在评估,受影响的合约是否可以独立更新,或者是否需要修改升级规范。
以太坊 Glamsterdam 升级面临八项兼容性问题
这些安全问题在 ChainSecurity 10 月 13 日的一份分析中被详细说明。该分析考察了 Glamsterdam 将如何改变那些在外部调用失败后仍继续执行的合约行为。
在以太坊现行规则下,一些合约依赖于某项操作失败后留下的 gas 不足以让后续指令继续完成。Glamsterdam 修订后的计费方式,可能让某些操作即便在开发者原本预期整个交易应回滚的情况下仍能完成。
ChainSecurity 警告称,这种行为可能干扰相关保护机制。此类机制旨在防止失败交易被永久记录,或避免合法操作失去重试机会。
其中一个例子涉及这样一种合约:当外部调用因 gas 耗尽而失败时,会将某项操作标记为不成功。在新规则下,先前不可用的 gas 可能再次变得可用,从而让合约记录永久失败。
以太坊基金会已在 GitHub 上发布一个仓库,记录了八项受影响的不变量,并附有说明、示例以及供开发者检查自身代码的指引。
已识别的风险包括:合约假设 gas 消耗只能单向变化、固定 gas 配额始终足够,或者被回滚的调用不能返还已用于创建状态的 gas。
该仓库指出,固定 gas 预算和 gas 预留是目前发现的最常见问题,尤其是在依赖预设交易成本的合约中。
开发者已被要求检查链上合约以及相关的链下系统,包括钱包、转发器和可能写死 gas 限制的基础设施。
Hoodi 激活在安全审查期间继续搁置
最新发现进一步解释了以太坊此前为何决定推迟 Hoodi 激活。该激活原定于 10 月 26 日 17:42:48 UTC 进行。
据 crypto.news 先前报道,这一延期将 Hoodi 日程中的 Amsterdam 执行层和 Gloas 共识层激活都移除,同时还取消了将测试网 gas 上限提高至 2 亿的计划。
目前尚未公布新的激活日期。
以太坊基金会开发者 Marius van der Wijden 表示,组织正在与 ChainSecurity 和 Dedaub 合作,同时进行内部审计,以评估这些变化对现有应用的潜在影响。
基金会承认,其审查无法覆盖所有以太坊项目,尤其是在漏洞可能涉及智能合约与链下基础设施交互的情况下。
因此,基金会已要求开发者和独立审计方识别受影响的应用,并在下一次 All Core Developers 讨论前提交发现结果。
仓库要求提供受影响合约的细节、涉及的具体不变量、可能的修复方案以及可用的支持性测试。报告可私下发送至 [email protected]。
根据反馈,开发者可能会在推进升级前考虑对 EIP-8037 和 EIP-8038 作出调整。
基金会表示,以太坊后续的 Hegotá 升级将并行推进,不受 Glamsterdam 延期影响。
Glamsterdam 的扩容改动仍在测试中
Glamsterdam 早已于 10 月 6 日在 Sepolia 测试网上激活,开发者当时开始在 2 亿 gas 上限下检验其扩容改动。
该升级通过 EIP-7732 引入了内嵌式提议者-构建者分离,将区块构建职责纳入以太坊共识协议。
另一项主要组件 EIP-7928 引入了区块级访问列表,旨在帮助客户端更高效地处理交易数据,并支持并行执行。
gas 重定价也是该升级的一部分。EIP-8037 调整了创建新的区块链状态的成本,而 EIP-8038 则调整了访问现有状态的收费。
在 8 月的一份技术评估中,以太坊基金会表示,历史交易回放显示,大多数智能合约不会受到拟议定价变化的影响。
不过,仍有一小部分合约需要更高的 gas 上限,或需要进行更大幅度的修改,才能避免意外失败。
此外,开发者在 10 月 26 日合并了一项验证者存款修复方案,此前他们发现一个缺陷,可能会把质押存款记入与其共享同一公钥的区块构建者名下。
这项修正针对的是 Glamsterdam 的 Gloas 共识变更所涉及的另一项独立问题,并在客户端实现纳入修订行为前,将回归测试加入了规范。











