两项相互竞争的以太坊提案旨在阻止 Glamsterdam 破坏旧合约

以太坊的下一次升级可能会破坏一些已经存储用户资金的应用程序,两名开发者周日提交了相互竞争的修复程序来阻止此次升级。
莱奥·格利西奇提出的方案之一是,现有应用将沿用现有价格,仅对之后推出的应用收取新价格。朱利奥·雷布福提出的方案则是,所有应用都将按新价格收费,但旧应用可以继续运行,如同一切如常。
他们试图解决的问题就蕴藏在 Glamsterdam 中,这是以太坊的下一个重大软件升级。其中两项提案 EIP-8037 和 EIP-8038 提高了以太坊创建和访问存储数据所需的 Gas 费用。Gas 是智能合约(以太坊应用程序背后的程序)每一步操作的计费单位。根据 EIP-8037,创建合约的基本 Gas 费用从 32,000 增加到 183,600,这还不包括代码存储和执行成本。
许多以太坊应用程序在编写时都假设这些费用永远不会改变。有些应用程序每次调用其他应用程序时都会支付固定的 gas 费用,如果调用费用开始增加,调用就会失败。许多这类应用程序一旦上线就无法更新。
这一风险已经延缓了升级进程。Glamsterdam 运行在以太坊的实践网络之一上,这些网络是区块链的副本,开发者可以在实际应用到真实货币之前测试更改。但原定于 10 月 26 日进行的第二次演练在安全研究人员发出警报后被推迟。
“恕我直言,Glamsterdam 不应该以目前的形式发布,就这么简单。”安全研究员 pcaversaccio 在 X 上写道,他指的是 gas 费用的上涨,他说两周前他已经向以太坊的核心开发人员指出了这个问题。
化名 banteg 的开发者则更加直言不讳。他在 X 上写道:“除了 ethereum/repricing-impact 中已经列出的 20 万个受影响合约之外,我还发现了多个方法论上的问题,导致它遗漏了更多合约。这影响到多个知名协议的部署和运行,而不仅仅是某些开发者随意滥用分配给他们的操作码。”
Glisic 的草案 EIP-8488 将以太坊的指令集一分为二。草案指出,“现有合约继续沿用旧版指令集”,而“新合约必须使用包含 EIP-8037/8038 gas 指令集的 V2 操作码”。
Rebuffo 的草案改为每笔交易运行两个 gas 计量器,一个用于跟踪旧规则下的执行情况,另一个则“使用新规则计费并确定交易费用”。草案还承认“尚未针对此设计进行任何执行客户端实现或共识测试”。