You need to sign in or sign up before continuing.
·
Gas 改价,8 个假设崩了:以太坊升级卡在别人的代码里
以太坊 Glamsterdam 因 8 项智能合约不变量被 Gas 计费改动击穿,Hoodi 测试网分叉无限期推迟。协议能自审,生态审不了——这次卡住的不是以太坊自己的代码,是几万个从没写下来的隐含假设。
11 月 6 日,以太坊基金会发了篇不太好看的博客:Glamsterdam 在 Hoodi 测试网的分叉无限期推迟。原定 10 月 26 日 17:42:48 UTC,连带取消的还有把测试网 gas limit 提到 2 亿的计划。
不是客户端有 bug,也不是共识层出事。是有人翻出来八个”不变量”。
这八项出自 ChainSecurity 10 月 13 日的报告,核心就一句话:有些合约的兜底逻辑,建立在”Gas 一定不够用”这个前提上。
现在的规则下,外部调用如果因为 gas 耗尽失败,剩下的 gas 通常少到让后续指令跑不完。很多合约就靠这一点做保护——不用显式检查,反正它跑不动。Glamsterdam 的 EIP-8037 和 EIP-8038 重写了状态创建与状态访问的计费方式,于是原本够不到的 gas,可能又够用了。
结果就是:本该整体 revert 的交易,部分指令跑完了。合约按自己的逻辑,把一笔操作标成”永久失败”——而它本来是会被重试的。
ChainSecurity 举的例子特别朴素:合约在外呼因 gas 耗尽失败后,记一笔失败。新规则下 gas 回来了,这笔失败就写死了。
“不变量”这三个字的分量在这儿。它不是代码里的 require,是写代码的人心里的一条默认规则,从没写进规范,但几万个合约都在用。
基金会做了能做的:联合几家审计公司、内部自查、开了 GitHub 仓库(ethereum/glamsterdam-gas-invariants),把八项说明、示例、自查提示词全公开,还留了邮箱。但博客里那句话很实在——这些工作”无法覆盖所有项目的链上和链下代码”。
翻译一下:审得完协议,审不完生态。
麻烦的是时间表。Justin Drake 在 Devcon 8 上给了比官方更激进的目标:2028 年 12 月前完成抗量子、抗 AI 过渡,也就是 Amsterdam 之后 24 个月跑完三次硬分叉。基金会官方口径是 2029 年 12 月,那需要五次分叉,平均 7.2 个月一次。Glamsterdam 每多推一天,后面就挤一天。
而 Gas 定价是执行层最核心的参数,几乎每次大升级都要动。所以”旧假设被新定价击穿”这种事,不会只出现一次。
我的判断是:以太坊真正的瓶颈,已经从”能不能把协议写对”变成”能不能把生态里那些没人写下来的假设找出来”。前一个问题靠形式化和密码学,解决得相当好——十一年零宕机不是运气。后一个问题靠人,靠几万个团队各自翻自己的代码,没有银弹。
所以这次推迟反而是诚实。硬着头皮上,才是灾难。
写合约的、做审计的,别等主网时间表。现在就去那个仓库过一遍八项,重点看两处:固定的 gas 预算,和 gas 预留。
免责声明:以上内容仅供娱乐交流,不构成任何投资建议。DYOR。
轉發此貼文?
與您的關注者分享。
回覆