代码分析:为什么说Blast完全不是L2
作者:Jarrod Watts,Polygon开发者关系工程师,evmkit.com创始人;翻译:金色财经0xjs
有人说“Blast只是一个3/5多重签名……”
过去几天我深入研究了源代码,看看这个说法是否属实。
下面是我看到的一切:
1、一个新钱包0x52c31部署了两个合约: 1、0xa01:Blast Deposit代理合约;2、0x5f6:Blast Deposit实现合约。
如果你不熟悉这些“代理合约”设置,后文还会回到这个。
2、0x52c31部署这些合约后,将所有权转移给Gnosis Safe智能合约。
Gnosis Safe 或“Safe2”合约是最受欢迎和最值得信赖的多重签名智能合约。它们要求大多数签名者签名才能执行交易。
3、现在拥有Blast合约的Safe合约中有 5 个签名者。
这意味着大多数(即 3/5)签名者需要代表此 Safe 合约执行交易。这 5 个钱包都是非常新的钱包,但主人不详。
4、所以3/5多重签名合约现在是Blast Deposit合约的“所有者”。
正如我们所提到的,Blast Deposit 合约由两个合约组成:代理和实现。
成为它们的“所有者”实际上意味着什么呢?
5、对于常规智能合约,一旦部署到区块链,你就无法更改代码。代理智能合约允许你对智能合约执行“升级”(更改),而无需替换整个合约。这通常用于修复错误或添加功能。
6、Blast代理实现OpenZeppelin的UUPSUpgradeable 合约。这包括诸如“_upgradeTo”之类的函数,允许更改实现合约的逻辑。这意味着用户交互的合约能够维护相同的合约地址。
7、这种可升级性的最坏情况是(多重签名)所有者将合约的逻辑更改为恶意的内容。
这听起来有点可怕,对吧?……实际上,这些“辅助功能”被当今大多数 L2 采用。
8、像Optimism和Arbitrum这样的Optimistic Rollups也有这个功能。
根据L2Beat:?
9、zkEVM世界也是如此
根据L2Beat:?
10、这些Rollup具有可以执行升级的多重签名的原因是为了在技术成熟时实现临时安全。正如 L2Beat 在其 L2 阶段博客中概述的那样,Rollup的最后阶段应该限制这些安全委员会解决“严重缺陷”的能力。
11、安全理事会的能力随着时间的推移而减弱。然而,成员知名度很重要。
例如,Polygon PIP-29 提议由 13 个成员来管理“对系统智能合约的范围狭窄、时间限制的变更”。
12、因此,虽然Blast确实有可能通过多重签名来执行代码升级并立即窃取资金,但*目前*许多其他 L2 解决方案也具有相同的功能。
到目前为止,我一直在为 Blast辩护。但是,下面是坏消息了...让我们继续。
13、Blast不是L2。
Blast只是一个具有两个功能的智能合约: 1、接受用户的资金。2、将用户的资金投入Lido等协议中。
没有测试网,没有交易,没有桥,没有Rollup,也没有向以太坊发送交易数据。这不是L2。
14、通过向Blast合约存款,你基本上信任 3-5 个陌生人会为你质押你的资金。
除非这 3-5 个人决定将来做正确的事情,否则你将无法在任何时候提取这笔钱。再说一次,这里没有桥。
15、这对我来说真的很疯狂...
你无法从Blast取回你的钱,直到:?
16、但是,还有更糟的情况。
我可以告诉你,他们甚至不需要进行“升级”来窃取合约中的所有资金,而这个合约里用户存进的资金其他人都不能取出。
我们接着看。
17、函数“enableTransition”要求“mainnetBridge”合约作为参数。
这个“mainnetBridge”合约的功能: 获取所有质押的ETH 、DAI。
那么,这个“mainnetBridge”合约什么样?
18、它绝对可以是任何东西!Blast批准任意“mainnetBridge”合约,以花费最大可能数量的LIDO和DAI…
这个合约的正确性肯定有一些限制?好吧,*是的*,让我们看看该代码。
19、下面是“_setMainnetBridge”函数中的断言语句。
它...检查该地址是否有任何代码!是的,只要它不是EOA地址即可;它已批准拥有合约中的所有资金。目前资金总量已经超过2亿美元。
20、因此,可以假设,它们可以:
1、创建一个极其简单的智能合约并将其设置为mainnetBridge合约;
2、让该智能合约接收所有质押的ETH 和 DAI(2 亿 )?
调用智能合约将所有资金提取到EOA钱包。
21、我们发现的两个主要威胁是:?
22、这会真的发生吗?就我个人而言,如果我必须猜测的话,我认为资金不会被盗。
无论如何,我实际上认为Blast原生收益的想法是一个非常有趣的权衡。
23、因此,虽然我个人认为在目前的状态下发送资金到Blast是有风险的,但发送不发送最终是用户的决定,我只是在这里分享我看到的东西。
我仍然祝愿Blast团队和所有已经存款的人一切顺利。