目錄(5 節)
·
一个公钥两种身份:以太坊差点把质押的钱发给出块的人
以太坊 10 月 26 日合并了一个 Glamsterdam 存款分类补丁:同一个公钥同时注册成 builder 和验证者时,质押协议的存款会被记到 builder 名下,而提款地址在运营方手里。这个补丁 10 月 19 日刚被拒过一次,关了一周才捡回来。
10 月 26 日,以太坊的共识规范仓库合了一个 PR,标题很枯燥:把 builder 存款和验证者存款按提款凭证分开。
但它讲的事不枯燥:一笔本该进验证者队列的存款,可能直接落进打包区块的人账上,然后被提走。
角色拆开了,存款没跟上
Glamsterdam 的核心是 ePBS:builder 拼交易,validator 提议和确认,”谁有权构造区块”被重新回答了一次。
问题是老规则假设只有一个身份。存款在升级排队时怎么分类,新规则没写清楚。
研究员 avsetsin 10 月 12 日写下了这个场景:质押运营方从 Lido、Origin 或 Rocket Pool 拿到钱去开新验证者,先用同一个公钥把自己注册成 builder,然后协议的存款进来——按当时的逻辑,两笔都记到 builder 名下。builder 的提款地址在运营方手里。他在 GitHub 上写得很直白:运营方可以把协议的钱提走。
更麻烦的是后半段:验证者没被创建,质押服务拿不到证明,补救流程也走不下去。钱没了,账还对不上。
补丁被关了七天
10 月 19 日,维护者 Traglia 把这个 PR 关了,理由是客户端支持不够。这个决定只活了四天。10 月 23 日提案重开,reviewer potuz 认可方向但要补测试,avsetsin 当天补上;10 月 26 日合并——按提款凭证分流,同一个公钥出现在两个角色里也各记各账。
看到”关闭”那条记录我愣了一下:一条已经公开描述的资金路径,修复被搁了一周。关掉那一刻比发现漏洞那一刻更不安,漏洞至少还有人盯着。
流程没啥可指摘。先拒、再测、再合,比看到 PR 就 merge 健康——规范改一行,八个客户端都得跟着改。
真正的问题不在代码里
这个 bug 不在实现里,在规则书里。ePBS 不是性能优化,它把”谁有权构造区块”重新切了一刀,切完之后所有老规则都得再问一遍:这条对哪个身份生效?
这类缝隙测试里冒不出来。avsetsin 拿三个真实协议对照推演——Lido、Origin、Rocket Pool——也说清了没有证据表明谁已经被利用。
同一周,Hoodi 推迟了
10 月 22 日,以太坊基金会把原定 26 日的 Hoodi 激活推迟,原因是 EIP-8037 跟老合约的兼容性:gas 记账一变,依赖”还剩多少 gas”的合约可能意外 revert。Sepolia 10 月 6 日跑过,Hoodi 没新日期,主网更没有。
同一周,Solana 的 Alpenglow 在主网跑了一周,最终确认 150 毫秒。两种工程文化没有高下:一个选快,一个把”我们不确定”说出口。代价是 Glamsterdam 被两个小问题卡着——一个规则缝隙,一个老合约的假设。越底层的升级,越容易被老东西绊住。
下一步
看 Hoodi 重新排期,以及八个客户端多久实现完——合并只代表大家同意怎么做。
你在质押协议里放钱的话,值得问一句:你们的存款流程,对”同一个公钥、两种身份”有防护吗?
免责声明:以上内容仅供娱乐交流,不构成任何投资建议。DYOR。
轉發此貼文?
與您的關注者分享。
回覆