以太坊Glamsterdam升级面临智能合约风险 开发者提出两项修复方案
要点速览
- •以太坊开发者Leo Glisic和Giulio Rebuffo于周日提交了相互竞争的提案,旨在防止Glamsterdam升级中EIP-8037和EIP-8038的Gas上涨破坏网络上已部署的合约。
- •EIP-8037将把创建智能合约的基础Gas费用从32,000提高至183,600 Gas,与代码存储和执行相关的额外费用将单独收取。
- •在安全研究人员警告重新定价可能干扰现有应用后,原定于10月26日进行的Glamsterdam测试网演练被推迟,研究人员pcaversaccio认为该升级不应以现有形式发布。
- •开发者banteg指出ethereum/repricing-impact仓库中列出了约200,000个可能受影响的合约,并提醒由于评估方法的局限,实际数量可能大幅更高,且可能包括知名协议。
- •Glisic的EIP-8488将让现有合约保留原有Gas时间表,新合约使用V2操作码;而Rebuffo的双Gas记账设计尚无执行客户端实现或共识测试结果。

两名以太坊开发者Leo Glisic与Giulio Rebuffo于周日提交了相互竞争的提案,分别阐述了保护已部署于网络上的应用的不同策略。两项提案均针对以太坊改进提案EIP-8037和EIP-8038可能带来的后果,这两项提案将提高某些智能合约操作所需的Gas。这场争论已成为Glamsterdam升级的一个重要问题,开发者正在评估拟议的定价变更能否在不干扰围绕以太坊现有Gas时间表设计的合约的情况下引入。
Glamsterdam Gas变更引发兼容性担忧
争议的核心是EIP-8037和EIP-8038,这两项包含在Glamsterdam升级计划中的提案将修改创建合约和访问区块链存储数据的成本。Gas是以太坊用于衡量执行交易和智能合约指令所需计算资源的单位,Gas定价的变化会影响应用的运行方式,尤其是当开发者围绕特定执行上限编写合约时。
像Glamsterdam这样的以太坊升级会将多个EIP打包为对网络规则的一次协调变更,提案通常要经过核心开发者审查、客户端实现和测试网测试,然后才会做出激活决定。当前的争议正是在这一过程中展开的:在Glamsterdam仍处于测试网评估阶段、尚未触及主区块链之前,反对意见已经浮现。
根据EIP-8037,创建智能合约的基础Gas费用将从32,000提高至183,600 Gas,与代码存储和执行相关的额外费用将单独收取。这一涨幅引发了担忧,因为一些现有以太坊应用在开发时的预期是某些操作将继续消耗相同的Gas量。
一些合约在与其他应用交互时会分配固定的Gas额度。如果这些交互的成本超出分配额度,操作可能失败。对于部署后无法修改的智能合约而言,风险尤其高,因为此类应用可能没有直接的机制来适应修订后的Gas时间表。
安全研究人员警告合约可能大范围中断
这些担忧已经影响了Glamsterdam的测试时间表。尽管该升级已部署在以太坊测试网上,但原定于10月26日进行的第二次测试演练在安全研究人员发出警告后被推迟。以太坊测试网让开发者能够在协议变更到达主区块链之前对其进行评估,而在主区块链上,应用和交易涉及真实资产。以往以太坊升级中Gas时间表也曾被修订,因此重新定价提案通常会针对基于旧成本假设编写的合约进行检查。
安全研究人员pcaversaccio公开批评了拟议的Gas调整,认为Glamsterdam不应以现有形式继续推进。
"imho Glamsterdam should not be shipped in its current form, period," pcaversaccio在X上写道。
这位研究人员表示,这些担忧在两周前就已向以太坊核心开发者提出。
匿名开发者banteg也质疑现有兼容性评估的范围,并指出ethereum/repricing-impact仓库中列出了约200,000个可能受影响的合约。据banteg所述,评估方法上的局限可能意味着实际受影响的合约数量远超现有清单所示。该开发者还警告称,拟议的变更可能干扰多个知名以太坊协议的部署和运行,而不仅仅是影响使用较少的应用。
这些警告加剧了外界对以太坊开发者打算如何在保留已在网络运行的合约功能的同时实施Gas重新定价的审视。
EIP-8488提出针对现有与新合约的分别Gas规则
Glisic的提案被称为EIP-8488,引入了一种兼容性机制,以区分升级前部署的智能合约和升级后创建的合约。现有合约将继续按照以太坊当前的Gas定价规则运行,而新部署的合约将使用一套修订后的指令集,以反映EIP-8037和EIP-8038引入的更高Gas成本。
该提案实际上会将以太坊的指令集划分为两个版本,允许较旧的应用保留其既定的执行成本,同时要求新应用遵循更新后的定价结构。
"Existing contracts keep the legacy schedule," EIP-8488草案中写道。
新合约将被要求使用与修订后Gas时间表相关的V2操作码。该方案旨在降低无法升级的应用的兼容性风险,同时让以太坊能够为未来的部署引入计划的Gas定价变更。
替代方案引入双Gas记账机制
Rebuffo提出了另一种机制,将新的Gas定价时间表应用于交易计费,同时为较旧的智能合约保留现有的执行行为。该设计并非为新旧应用维护单独的指令集,而是在每笔交易中引入两个Gas记账机制。一个计量器按现有Gas规则跟踪合约执行,另一个则使用更新后的定价时间表计算交易费用。
在这种结构下,新时间表将决定交易费用,但较旧的应用将继续按照先前Gas规则所设定的假设运行。该提案旨在将交易成本的计算与现有智能合约所依赖的执行条件分离开来。
不过草案承认,该设计在实现层面仍未经过测试。
"no execution-client implementation or consensus tests have been run for this design," 提案中写道。
开发者面临Glamsterdam Gas变更的抉择
这两项相互竞争的提案展示了解决同一兼容性问题的不同方法。Glisic的EIP-8488将为先前部署的合约保留现有Gas定价,同时通过新指令引入修订后的时间表。Rebuffo的替代方案则将更新后的交易计费与原有执行行为相结合。两种方法都旨在防止计划的Gas重新定价干扰依赖以太坊现有执行成本的应用。
这一问题之所以受到关注,是因为受影响的合约可能包括无法轻易修改其已部署代码的成熟协议。在安全警告导致测试已经推迟的情况下,这些提案为评估Glamsterdam兼容性风险的开发者提供了潜在的技术解决方案。
推动这场争论前进的里程碑是具体的:在兼容性机制到位的情况下重新安排一轮测试网演练,以及——如果任一草案要继续推进——通过执行客户端实现和共识测试结果对其进行评估。在这些步骤发生之前,随着Glamsterdam推进其开发周期,兼容性问题仍未有定论。
现有信息无法确定任一提案是否会被采纳。Rebuffo的设计也仍缺乏执行客户端实现或共识测试结果,其技术可行性有待进一步评估。
来源:CoinDesk
首发于:Hokanews