

以太坊开发者已推迟原定于10月26日在Hoodi测试网上激活的Glamsterdam升级,且尚未确定新的替代日期。此次延期源于对EIP-8037(旨在提高创建链上状态成本的提案)与现有主网智能合约之间交互方式的担忧。此外,阿姆斯特丹执行层和Gloas共识层的激活计划,以及将Gas限制提升至2亿的目标,均已从Hoodi的时间表中移除。
以太坊基金会于10月22日发布通知,确认Glamsterdam不会在10月26日UTC时间17:42:48的Epoch 132,352处激活。这一决定并非对已记录区块的回滚,而是对未来配置 postponement(推迟)。开发团队需要深入调查EIP-8037如何影响主网上已部署的智能合约。尽管基金会并未声称该升级会破坏主网运行,也未公布生产环境分叉的具体日期,但当前的操作风险主要集中在Hoodi测试网上:如果客户端或自定义配置仍保留旧的激活时间,可能会导致网络规则不一致。
EIP-8037的核心争议在于如何在增加交易内部工作成本的同时,不扰乱那些在代码中嵌入了旧数值的应用程序。早期的交易重放显示大多数合约不受影响,但发现少量依赖固定Gas津贴、硬编码限制或剩余Gas逻辑的合约存在潜在问题。
交易不仅可以执行计算,还可以留下网络必须长期保留和访问的数据。创建新账户、开设新存储槽或部署合约字节码都会增加这种持久性状态负担。EIP-8037提议对这些操作收取更高的费用,并将“状态创建”部分单独计量。其目的是使价格更接近节点承担的长期负担,特别是在允许区块承载更多工作的情况下。
提案中的示例数据显示:
创建新账户的状态创建组件从目前的25,000 Gas提升至183,600 Gas;新增存储槽从20,000 Gas提升至97,920 Gas;24千字节的部署从4,947,200 Gas提升至37,784,880 Gas。需要注意的是,这并非用户最终支付ETH费用的绝对预测,而是隔离了特定组件下的假设常数。然而,如此巨大的变化幅度解释了为何那些具有严格限制的合约值得仔细审查。相关的EIP-8038提案也对部分读取和写入操作进行了重新定价,这是自2021年柏林分叉以来首次大幅调整这些Gas成本。
外部调用是此类问题的典型场景。调用者可能故意只传递足够的Gas供接收方执行有限操作,假设任何进一步的工作都会安全失败。如果重新定价后的账户或存储访问消耗了这部分 allowance(额度),接收方可能在常规支付过程中失败,即使用户在外层交易中提供了充足的Gas。改变钱包的估算值并不能重写内部的 allowance。
此外,自动化流程也面临挑战。钱包、中继器和托管服务可能为常规任务存储默认的Gas限制。一项多年来成功运行的操作,即使应用合约本身无误,也可能因Gas不足而失败。对于使用Solidity的`transfer`和`send`模式的历史遗留代码,虽然许多团队已不再依赖2,300 Gas的固定津贴,但已部署的合约可能仍在运行数年。基金会将固定津贴列为风险类别之一,并指出精确的影响取决于代码和交易路径,因此实际历史交易的回放比通用的警告更为重要。
另一种特殊情况涉及通过减去两次剩余Gas读数来衡量工作的代码。由于状态Gas储备的存在,`gasleft()`在某些情况下可能会上升,导致预期非负减少的计算行为发生变化。由于已部署的不可变合约无法就地修补,这类问题的精确影响难以一概而论。
基金会建议Hoodi运营商检查执行和共识客户端的最新说明,确保软件不会在10月26日激活旧的分支。对于应用开发者而言,仅依靠地址是否在受影响列表中是不够的,因为某些函数可能很少被调用,但在重放历史时未被覆盖。团队需要测试其实际运行的执行路径,包括钱包或机器人持有的旧估算缓存。
对于行为发生变化的合约,修复提交交易的接口并不总是足够的。如果内部调用的Gas allowance被编译到不可变代码中,所有者可能需要迁移到新合约。这种迁移涉及余额、授权或用户权限的移动,以及新地址的沟通。难度取决于产品的设计,目前并没有证据表明所有被标记的合约都需要进行此类工作。
此次延期反映了以太坊社区在面对不确定性时的谨慎态度。公共协调虽有成本,但带着已知不确定性继续推进的风险更大。一个导致广泛使用的合约失败的主网规则将更难逆转,后果可能涉及资金损失或依赖应用的崩溃。基金会明确表示,开发人员认为这种交互的重要性足以暂停Hoodi的排练。
未来的修订方案可能会在保持对状态收费目标的同时,改变Gas储备的工作方式或现有合约的过渡规则。读者应避免将调查过程视为最终的设计选择。具体的修正案,如果有的话,比Hoodi等待的天数更为重要。
声明:文章不代表币圈网立场和观点,不构成本站任何投资建议。内容仅供参考!
免责声明:本站所有内容仅供用户学习和研究,不构成任何投资建议.不对任何信息而导致的任何损失负责.谨慎使用相关数据和内容,并自行承担所带来的一切风险.