Skip to main content
目录 目录(3 节)

Reth 算错状态根,LayerZero 把跨链停了

Reth 与 op-reth 的状态根计算出错,波及多条 OP Stack 链,LayerZero 预防性暂停部分跨链路由,Gauntlet 关闭存款队列。修复版本已发布,暂无资金损失,但暴露出多链共用同一份客户端代码的风险。

今天早上,安全机构 Blockaid 发了条说明:以太坊执行客户端 Reth,以及它的 OP Stack 版本 op-reth,在计算状态根的时候算错了。

不是被黑,不是被盗,是算错了。

然后 LayerZero 把部分受影响链的跨链基础设施停了。一个客户端算错数,跨链协议主动关门——这句话我觉得值得读两遍。

状态根算错,为什么很要命

你可以把状态根理解成全班同学各自算总分。每个人手里是同一份账本,算完把结果报上去,必须全班一致,这个班才算成立。状态根就是那个总分:所有账户余额、所有合约存储,压成一串哈希。

节点算出来的结果跟别人对不上,它就同步不下去,卡在那儿。

更麻烦的是 eth_getProof。跨链桥、预言机要确认”这条链上确实有这笔钱”,靠的就是节点给的证明。节点把根算错了,给出的证明就是错的。证明错不代表马上丢钱,但它意味着后面所有基于这份证明做的判断,都建在一个假的前提上。

受影响的不是一条链

已修复的版本是 reth v2.10.0、op-reth v2.8.1、Base node-reth v1.5.3,上游那个 PR 是 11 月 4 日清晨合的。

Base 5 日发了状态公告,说用户没受影响,理由是它的证明系统会用另一套独立实现再校验一遍每个状态根,对不上就报警。这个说法我信,但请注意它为什么站得住:不是因为”我们客户端多”,而是因为”我们有第二套算法在对答案”。

LayerZero 是预防性停的,消息延迟但不会丢。Frax 说路由关了,资产和合约没事。Gauntlet 更谨慎,关了 V1 金库的存款队列、暂停资金配置、降低对经 LayerZero 桥接资产的敞口,提款没停。有意思的是,它那条说明推文后来删了。

我的看法

第一,OP Stack 的”多链”,在客户端层面其实是一份代码。Base 跑 op-reth,一堆 OP Stack 链也跑 op-reth。所以这不是”多点备份”,是”一个 bug 在多处同时生效”。我们平时念的客户端多样性,有时候只是项目名字不一样。

第二,时间线值得记一笔:代码 4 日就修了,公告 5 日,公开披露 6 日。修得快,说得慢。而对客户端 bug 来说,”没说”本身就是风险——不知情的节点运营商还在跑错的代码,还在给跨链桥喂错的证明。

第三,钱没丢,和系统安全,是两件事。这次没有攻击者,只有算术。真有人盯着这个窗口的时候,43 小时够干很多事。

如果你在跑节点或者 RPC,去升级,别等公告。如果你是普通用户,也值得知道:你信任的那条链,它的”真相”是一份客户端代码算出来的。多链,不等于多保险。

免责声明:以上内容仅供娱乐交流,不构成任何投资建议。DYOR。

#cryptocurrencies #blockchain #pickful

Link pickful.ai

Download Pickful App

Better experience on mobile

iOS

Android

APK