原作者: ジャロッド・ワッツ
オリジナルコンピレーション: Golden Finance 0xjs
編集者注:
新しい L2 ネットワーク Blast は、今週の立ち上げ以来、世論の注目を集めています。 NFTクジラ・クリスチャンは500stETHをブラストに入金しただけでなく、22日にはブラストは2,000万米ドルの資金調達を完了したと発表した。多くの開発者も Blast のコードと性質について議論しており、Polygon の Jarrod Watts 氏は、Blast はレイヤー 2 ネットワークではないとさえ率直に述べています。この記事は彼の X ツイートを翻訳したものです。
誰かが「Blast は単なる 3/5 マルチシグです...」と言っていました。
私はここ数日、この主張が真実かどうかを確認するためにソース コードを詳しく調べました。
私が見たものは次のとおりです。
1. 新しいウォレット 0x52c31 は 2 つのコントラクトをデプロイします: 1) 0xa01: Blast Deposit プロキシ コントラクト; 2) 0x5f6: Blast Deposit 実装コントラクト。
これらの「代理店契約」設定に慣れていない場合は、後ほど説明します。
2.0x52c31 これらのコントラクトを展開した後、所有権を Gnosis Safe スマート コントラクトに転送します。
Gnosis Safe または「Safe2」コントラクトは、最も人気があり信頼できるマルチシグネチャ スマート コントラクトです。トランザクションを実行するには大多数の署名者の署名が必要です。
3. 現在、Blast 契約を所有する Safe 契約の署名者は 5 人います。
これは、署名者の過半数 (つまり 5 分の 3) が、この Safe 契約に代わってトランザクションを実行する必要があることを意味します。これら5つの財布はどれも非常に新しい財布ですが、所有者は不明です。
4. したがって、3/5 マルチ署名契約は、Blast Deposit 契約の「所有者」になります。
前述したように、Blast Deposit 契約は、エージェントと実装の 2 つの契約で構成されています。
彼らの「所有者」であるとは実際には何を意味するのでしょうか?
前述したように、Blast Deposit 契約は、エージェントと実装の 2 つの契約で構成されています。
彼らの「所有者」であるとは実際には何を意味するのでしょうか?
5. 通常のスマート コントラクトでは、ブロックチェーンにデプロイされたコードを変更することはできません。プロキシ スマート コントラクトを使用すると、コントラクト全体を置き換えることなく、スマート コントラクトへの「アップグレード」(変更) を実行できます。これは通常、バグを修正したり機能を追加したりするために使用されます。
6. Blast エージェントは OpenZeppelin の UUPSUpgradeable コントラクトを実装します。これには、実装されたコントラクトのロジックを変更できる「_upgradeTo」などの関数が含まれます。これは、ユーザーが対話する契約は同じ契約アドレスを維持できることを意味します。
7. このアップグレードの最悪のシナリオは、(マルチシグ) 所有者がコントラクトのロジックを悪意のあるものに変更することです。
それは少し怖いですよね? ...実際、これらの「補助機能」は、今日のほとんどの L2 で使用されています。
8. Optimism や Arbitrum などの Optimistic Rollup にもこの機能があります。
L2Beat によると:
·OP MainnetおよびBaseシステムを保護するコードは、予告なく自由に変更される場合があります。
·Arbitrum One のアップグレードには約 12 日の遅れが必要ですが、理事会は遅滞なく承認できます。
9. zkEVM の世界にも同じことが当てはまります
L2Beat によると:
・Linea、Scroll、zkSyncシステムを保護するコードは予告なく変更される場合があります。
·Polygon zkEVM のアップグレードは約 10 日遅れます (緊急ステータスがアクティブ化されていない限り)
10. これらのロールアップにアップグレードを実行できるマルチシグネチャが含まれている理由は、テクノロジーが成熟するまでの一時的なセキュリティを有効にするためです。 L2Beat が L2 フェーズのブログで概説しているように、ロールアップの最終フェーズでは、これらの安全委員会が「重大な欠陥」に対処する能力が制限されるはずです。
11. 安全保障理事会の能力は時間の経過とともに低下します。ただし、メンバーの可視性は重要です。
たとえば、Polygon PIP-29 は、「システムのスマート コントラクトに対する狭い範囲で時間制限のある変更」を管理するために 13 人のメンバーを提案しています。
12. つまり、Blast がマルチ署名を介してコードのアップグレードを実行し、即座に資金を盗むことは確かに可能ですが、*現在* 同様のことを行う他の L2 ソリューションが数多く存在します。
12. つまり、Blast がマルチ署名を介してコードのアップグレードを実行し、即座に資金を盗むことは確かに可能ですが、*現在* 同様のことを行う他の L2 ソリューションが数多く存在します。
これまで私はブラストを擁護してきました。しかし、ここに悪いニュースがあります...先に進みましょう。
13.ブラストはL2ではありません。
Blast は、次の 2 つの機能を持つ単なるスマート コントラクトです。 1. ユーザーの資金を受け入れる。 2. ユーザー資金を Lido などのプロトコルに投資します。
テストネット、トランザクション、ブリッジ、ロールアップはなく、イーサリアムに送信されるトランザクション データもありません。ここはL2ではありません。
14. Blast 契約に入金することで、基本的に 3 ~ 5 人の見知らぬ人があなたの資金を約束してくれることを信頼することになります。
これら 3 ~ 5 人が今後正しい行動をとらない限り、いつでもお金を引き出すことはできなくなります。繰り返しますが、ここには橋がありません。
15. これは本当にクレイジーです...
以下の場合まで、Blast からお金を取り戻すことはできません。
新しいコントラクトは、見知らぬ人で構成される 3/5 マルチシグによって展開されます。
コントラクトには、そこから資金を引き出す機能があります。
彼らはすべての資金を新しい契約に移します。
16. しかし、さらに悪い状況もあります。
契約内のすべての資金を盗むために「アップグレード」する必要さえなく、この契約でユーザーが預けた資金は他の人が引き出すことはできないと言えます。
見てみましょう。
17. 関数「enableTransition」にはパラメータとして「mainnetBridge」コントラクトが必要です。
この「mainnetBridge」コントラクトの機能: 約束されたすべての ETH と DAI を取得します。
では、この「mainnetBridge」コントラクトはどのようなものでしょうか?
18. 何でも構いません! Blast は、LIDO と DAI を最大限に使用するための「mainnetBridge」契約を承認します。
この契約の正確さにはいくつかの制限があるはずですか?そうですね、*はい*、そのコードを見てみましょう。
19. 以下は、「_setMainnetBridge」関数内のアサーション文です。
それは... そのアドレスにコードがあるかどうかを確認します。はい、EOA アドレスでない限り、契約内のすべての資金を所有することが承認されています。現在の資金総額は2億米ドルを超えています。
20. したがって、彼らは次のことができると考えられます。
1) 非常に単純なスマート コントラクトを作成し、それを mainnetBridge コントラクトとして設定します。
2) スマートコントラクトが約束されたすべての ETH と DAI (2 億以上) を受け取るようにします
スマート コントラクトを呼び出して、すべての資金を EOA ウォレットに引き出します。
21. 私たちが特定した主な脅威は次の 2 つです。
·資金を盗むための、3/5 マルチ署名によって承認されたアップグレードされた悪意のあるコード。
·悪意のあるスマート コントラクトを作成し、それを「mainnetBridge」スマート コントラクトとして設定し、同じく 3/5 マルチ署名を通じて資金を盗みます。
22. これは本当に起こるのでしょうか?個人的に推測するなら、資金は盗まれたとは思えません。
いずれにせよ、私は実際、Blast のネイティブ収量という考えは非常に興味深いトレードオフだと考えています。
23. したがって、私は個人的には、現状では Blast に資金を送金するのは危険だと考えていますが、最終的に送金するか送金しないかはユーザーの決定であり、私はここで私が見たことを共有しているだけです。
私は今でも、Blast チームと十分な入金をしてくださった皆様の幸運を祈っています。
全てのコメント