危险与刺激:Blast 的多重签名之谜
代码分析:为什么认为L2与Blast毫无相似之处
代码分析:为什么说Blast完全不是L2
-
先来介绍下 Blast 的执行者吧,一个名为 0x52c31 的新钱包部署了两个合约:0xa01 是 Blast Deposit 的代理合约,0x5f6 是 Blast Deposit 的执行合约。哦对了,如果你不熟悉这些 “代理合约” 的设置,咱们会在后面详细讲解的,敬请期待。
-
0x52c31 将合约所有权转移到了 Gnosis Safe 智能合约手中。Gnosis Safe 或者叫 “Safe2” 合约是最受欢迎也最值得信赖的多重签名智能合约,它需要大多数签名者的授权才能执行交易。咱们来看一下吧:

-
现在 Blast 合约的 Safe 合约里有 5 个签名者。也就是说,只有大多数(也就是 3/5)签名者才能代表该 Safe 合约执行交易。这上面的 5 个钱包都是新钱包,它们的主人是未知的,这真是叫人心生好奇啊。
-
所以,3/5 多重签名合约现在就是 Blast Deposit 合约的 “所有者”。正如我们之前提到的,Blast Deposit 合约由两个合约组成:代理和执行。那么,成为它们的 “所有者” 实际上意味着什么呢?
-
对于常规智能合约,一旦部署在区块链上,你就无法修改它的代码。但是代理智能合约却非常厉害,因为它们允许你 “升级”(也就是更改)智能合约,而无需替换整个合约。这通常用于修复错误或添加功能,简直是太方便了。
-
Blast 的代理使用的是 OpenZeppelin 的 UUPSUpgradeable 合约。这个合约包含了可以更改执行合约逻辑的函数,比如 “_upgradeTo”。这就意味着用户可以与这个合约进行互动,但还是能保持相同的合约地址,是不是很神奇呢?
-
当然,所有好处也有潜在的风险。最坏的情况就是,多重签名的所有者将合约的逻辑更改为恶意内容。听起来有些可怕,不是吗?不过,实际上,这种 “辅助功能” 在如今的大多数 L2 上都有采用。
-
比如 Optimism 和 Arbitrum 这样的 Optimistic Rollups 也具备这种功能哦。根据 L2Beat 的说法:
-
保护 OP Mainnet 和 Base 系统的代码可以任意更改,恕不另行通知。
-
Arbitrum One 的升级大约需要 12 天的延迟,但理事会可以毫不延迟批准。
-
-
zkEVM 世界也是如此。根据 L2Beat 的总结:
-
保护 Linea、Scroll 和 zkSync 系统的代码可以任意更改,恕不另行通知。
-
Polygon zkEVM 的升级有约 10 天的延迟(除非激活紧急状态)。
-
-
这些 Rollup 具备可以执行升级的多重签名的原因是为了保证技术成熟时的临时安全。正如 L2Beat 在其 L2 阶段博客中所概述的那样,Rollup 的最后阶段将限制安全委员会对 “严重缺陷” 的处理能力。

-
随着时间的推移,安全委员会的能力会减弱。但是,成员的知名度非常重要。比如,Polygon PIP-29 提议由 13 个成员管理 “对系统智能合约的范围狭窄、时间限制的变更”。

-
因此,虽然 Blast 的多重签名确实可能通过升级代码来立即窃取资金,但到目前为止,许多其他 L2 解决方案也具备相同的功能。咱们先来为 Blast 打个气,但别急,还有坏消息要说……接着往下看吧。
-
其实,Blast 并不属于 L2。它只是一个包含两个功能的智能合约:1、接受用户的资金;2、将用户的资金投入 Lido 等协议中。没有测试网,没有交易,没有桥,没有 Rollup,甚至没有向以太坊发送交易数据。所以,Blast 并不是 L2。
-
当你向 Blast 合约存款时,你基本上就是在信任 3-5 个陌生人为你质押资金。除非这 3-5 个人未来决定做正确的事情,否则你将无法随时提取这笔钱。不要忘了,这里是没有桥的。
-
这听起来真的很疯狂……直到你意识到, 你无法取回 Blast 的资金,直到:
-
由陌生人组成的 3/5 多重签名部署了一个新合约;
-
该合约具备从中提取资金的功能;
-
他们将所有资金转移到新合约中。
-
-
但是,请注意,事情还有更糟的情况。我可以告诉你,他们甚至不需要进行 “升级” 就可以窃取合约中的所有资金,而且其他人也无法将他们存进的资金取出。接下来我们继续看。
-
“enableTransition” 函数要求传入 “mainnetBridge” 合约作为参数。这个 “mainnetBridge” 合约有什么功能呢?

-
这个合约真是丰富多样,可以是任何东西。Blast 批准任意 “mainnetBridge” 合约来花费最大可能数量的 LIDO 和 DAI。这个合约肯定有一些限制吧?好吧,是的,让我们看看这段代码。
-
下面是在 “_setMainnetBridge” 函数中发现的断言语句。

它… 检查该地址是否有任何代码!是的,只要它不是 EOA 地址即可。这意味着这个地址已经被授权拥有合约中的所有资金。目前的资金总量已经超过 2 亿美元。

-
所以,可以设想的是,他们可以:
-
创建一个极其简单的智能合约,并将其设置为 “mainnetBridge” 合约;
-
让该智能合约接收所有质押的 ETH 和 DAI(超过 2 亿);
-
调用智能合约将所有资金提取到 EOA 钱包。
-
-
我们发现的两个主要威胁是:
-
经 3/5 多重签名批准升级恶意代码以窃取资金;
-
制作恶意智能合约并将其设置为 “mainnetBridge” 智能合约来窃取资金,同样是通过 3/5 多重签名。
-
-
这些威胁真的会发生吗?就我个人而言,如果我必须猜测的话,我认为资金不会被盗。无论如何,我实际上认为 Blast 原生收益的想法是一个非常有趣的权衡。
-
因此,虽然我个人认为目前向 Blast 发送资金是有风险的,但最终发送与否还是用户的决定。我只是在这里分享我所看到的东西。无论如何,我依然祝愿 Blast 团队和所有已经存款的人一切顺利。
亲爱的读者们,你们觉得 Blast 的多重签名之谜是个什么样的故事呢?它引发了我们对加密资产投资的思考。毕竟,投资永远伴随着风险和机遇。就像在这个故事中,Blast 既有挑战也有刺激,它令人着迷。如果你是 Blast 的投资者,那么你对这个故事会怎么评价呢?请分享你的想法和观点。相信每个人都会对这个多重签名的故事有所感想。继续与我保持关注,我们将和你一起探索加密资产的奇妙之处。感谢你的阅读!
We will continue to update 算娘; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles





