信用のゲーム:マルチシグと委員会に操られたロールアップたち
作者:リンク、ギーク Web3
ソラナの徐々に衰退し、OPがトークンを発行して以来、Layer2とRollupは無数のWeb3従事者にとって新たな避難所となったようです。熊市の持続的な蔓延とFTXの暴落、Multicoinの大損失に伴い、イーサリアムの競争相手たちは次々とWeb3という大舞台から姿を消し、ETHと競う自信を失っていきました。ますます多くの人々がRollupを新たな物語の核心と見なし、ますます多くのプロジェクトがL2上に雨後の筍のように現れています。
しかし、これらすべては「虚偽の繁栄」であり、「いつでも破裂するバブル」なのでしょうか?RollupとL2は本当に大多数の人々が宣伝するほど素晴らしいのでしょうか?それは本当に人々が認識しているように安全なのでしょうか?多くのOP Rollupが詐欺証明を持たないことを考慮せず、Rollupの安全性のリスクには他にどのようなものがあるのでしょうか?
この記事は、L2 BEATが最近発表した「Ethereum L2のアップグレード可能性」に触発され、Rollupのアップグレードの背後にあるマルチシグと委員会の信頼リスク、そして以前のRollupに関する古典的な議論を考慮し、最近のMultichainを思い出しながら、L2がなぜ多くの人々が考えるほど「素晴らしくない」のかを総合的に考察します。
Rollupの原理の簡単な説明
Rollupの運用原理の簡単な説明:
イーサリアムRollup = Layer1上の一組のコントラクト + Layer2ネットワーク自身のノード。
Layer2ネットワークノードのこの集団は、いくつかの役割に分けることができ、その中で最も重要なのはシーケンサー(Sequencer)です。シーケンサーはLayer2上で発生する取引リクエストを受け取り、それらの実行順序を決定し、取引シーケンスをバッチ(Batch)としてまとめ、RollupプロジェクトのLayer1上のコントラクトに送信します(以下、Rollupコントラクトと総称します)。
Starknetの相互作用ロジックの示意図
Layer2のフルノードは、シーケンサーから直接取引シーケンスを取得することも、シーケンサーがLayer1に送信した取引バッチ(Batch)を読み取ることもできますが、後者は前者よりも高い最終確定性(変更不可能性)を持っています。通常、シーケンサーが一連の取引をLayer1に送信すると、その取引の順序は変更できなくなります(イーサリアムがブロックのロールバックを行わない限り、Rollupの取引シーケンスは変更されません)。
取引の実行はブロックチェーンの帳簿の状態を変更するため、取引の順序に加えて、Layer2のフルノードはシーケンサーと帳簿の状態を同期する必要があります。これにより、一貫性が保証されます。
したがって、シーケンサーはLayer1のRollupコントラクトに取引バッチを送信するだけでなく、取引実行後の状態更新結果(State root / State diff)をLayer1に送信する必要があります。
明らかに、L1(イーサリアム)は実際にはL2ノードの掲示板として機能しており、L2自身のネットワークよりもはるかに分散化され、よりTrustlessで、より安全です。L2のフルノードにとって、L1上のRollup取引シーケンスと最初のStaterootを取得すれば、L2のブロックチェーン帳簿を復元し、最新のStaterootを計算することができます。もしL2フルノードが計算したStaterootとシーケンサーがL1に発表したStaterootが一致しない場合、シーケンサーに詐欺行為があることを示します。
最も直感的な仮想ケースは、L2のシーケンサーがユーザーの資産を盗むことができるかどうかです。例えば、シーケンサーは本来発生すべきでない取引を偽造することができるのでしょうか(ps:特定のL2ユーザーのトークンをシーケンサーの運営者のアドレスに移転し、その後これらのトークンをL1に移転する)。この種の問題は、シーケンサーが誤った取引データまたは誤ったStaterootを発表した場合、どうすればよいのか?に集約されます。
シーケンサーの詐欺リスクに対して、異なるタイプのRollupは異なる対策を講じています。Optimistic Rollup(楽観的Rollup)は、L2フルノードが詐欺証明(Fraud Proof)を提供し、シーケンサーがL1に発表したデータに誤りがあることを証明することを許可します。例えば、Arbitrumはノードのホワイトリストを設定し、ホワイトリストに載っているL2ノードが詐欺証明を発表することを許可しています。
さらに、ほとんどの取引所や民間のクロスチェーンブリッジプロジェクトはL2フルノードを運営しているため、誤りを即座に発見できるため、ほとんどのRollupシーケンサーによる盗難の成功率は基本的に0です(なぜなら、最終的には現金化する必要があり、取引所で完了するか、盗んだコインをL1に移転してから別の道を探す必要があるからです)。
図中のAggregatorは実際にはシーケンサーです
しかし、詐欺証明のないOptimismでは、シーケンサーはRollup自身のクロスチェーンブリッジコントラクトを通じて盗難を行うことができます。例えば、シーケンサーの運営者は取引指示を偽造し、他の人がL2に持つ資産を自分のアドレスに移転し、その後Rollupに付随するブリッジコントラクトを通じて盗まれたコインをL1に移転することができます。詐欺証明がないため、OPのフルノードは誤った取引に対して挑戦を起こすことができないため、理論的には、OPのシーケンサーはユーザーのL2資産を盗むことができる(本当にそうしたい場合は)。
2023年7月24日現在、Bedrockアップグレード後のOPは未だに詐欺証明システムを発表していません
このような問題を解決する方法は「社会的合意」(コミュニティメンバーやソーシャルメディアなどの世論監視に依存)またはOP公式の信用保証に依存します。
興味深いことに、最近ある取引所はArbitrumとOptimismのユーザーが内部でコインを転送する際の遅延を減少させました(100個のL2ブロックから1個のL2ブロックに減少)。これは実際にはARBとOPのシーケンサーが悪事を働かないことを信頼しているということです(彼らが公式に保証された中央集権的なサーバーであると仮定しています)。
楽観的Rollupとは異なり、ZK Rollupは有効性証明(Validity Proof、しばしばZK Proofと混同される)を通じてシーケンサーの詐欺問題を解決します。ZK Rollupネットワークには、シーケンサーが発表する取引バッチの有効性証明を生成するために特化したProverというノードがあります。同時に、L1には有効性証明を検証するためのコントラクト(一般にVerifierと呼ばれる)があり、取引バッチおよびStateroot/State diffに対応する証明がVerifierコントラクトの検証を通過すれば、最終確認(Finalized)されます。ZK Rollupの公式ブリッジは、有効性証明の検証を通過した引き出し取引のみを許可します。明らかに、これはOptimismよりもはるかに信頼性があります。
Scrollが定義した取引データの3つの段階
理論的には、OP Rollupの安全性はL2フルノードによって保証されます(少なくとも1つの詐欺証明を発表できる誠実なノードが必要)。ZK Rollupの安全性はL1上のVerifierコントラクトによって保証されます(L1ノードが取引の最終確認を行います)。表面上は、両者ともに「L1の安全性を引き継ぐ」ことができ(L1を利用して取引の最終確認/決済を行う)、イーサリアムの最大主義者はこれを「L1の安全性に相当する」と呼ぶことさえあります(L1の取引結果の最終性と一致します)が、実際の状況はそうではなく、むしろそうではありません。
あの「古典的な議論」のポイント
まず、ZK Rollupの有効性証明生成速度は非常に遅いです。シーケンサーは1秒以内に数千の取引を実行できますが、これらの数千の取引の証明を生成するのに最大で数時間かかる可能性があります。しかし、この問題は簡単に解決できます。主流のZKRは基本的に、証明生成タスクを分割し、異なるProverノードに並行処理を委任する方法で、証明生成速度を大幅に向上させます。
次に、L2ノードがL1にデータを発表する際の遅延を考慮する必要があります。シーケンサーまたはProverがL1にデータを送信するたびに、固定コストが発生します(貨物を運ぶたびにコンテナを消費するようなものです)。L1に頻繁にデータを発表することは非効率的で、場合によっては損失を被るため、シーケンサーとProverはL1にデータを発表する頻度をできるだけ減らし、大量のデータが集まったときにまとめて発表します。
言い換えれば、ユーザー数が不足し、発起する取引数が十分でない場合、シーケンサーはL1へのデータ発表を遅延させます。例えば、昨年ユーザーが少なかった時期、Optimismは30分ごとにL1に取引バッチを送信していました。現在、ユーザーが増えたため、この問題は効果的に解決されました。OPとは異なり、StarknetはState diffの発表頻度を減少させる方法を採用してデータコストを削減しており、これによりStarknetの取引の最終確認遅延が7〜8時間に延長されました。
さらに、多くのZK Rollupはコストをさらに削減するために、「多数の証明を集約し、一度にL1に送信する」ことがよくあります。つまり、Proverは1つの証明を生成した後すぐにL1に送信するのではなく、複数の証明が生成されるのを待って、それらをまとめてL1のVerifierコントラクトに送信します。(実際、証明を集約するプロセスは、1つの証明を使用して複数の証明の計算ステップを含むことです)
Scrollの集約証明の示意図
このようにすることで、証明の発表頻度がさらに低下し、取引が発起されてから最終確認されるまでの遅延がさらに延長されます。
ブロックエクスプローラーによると、Polygon ZKEVMの取引確認遅延は約30〜50分、StarknetとZksync Eraは7時間以上です。明らかに、これは「部分的にL1の安全性を引き継ぐ」ものであり、イーサリアムの支持者たちが言う「L1の安全性に相当する」とは大きな隔たりがあります。
もちろん、上記の問題は技術の進歩によって解決可能です。近い将来に実現されるでしょう。例えば、多くのプロジェクトが高性能ハードウェアを開発し、有効性証明の生成時間を短縮しています。Optimismもすぐに詐欺証明システムを発表することを約束しています。イーサリアムのDankshardingプランはRollupのデータコストを数十倍、さらにはそれ以上に削減することができ、上記の問題を効果的に解決できます。
解決が難しい「人治」の問題
DeFiなどのアプリケーションプロジェクトと同様に、Rollupネットワークの運用はL1上の関連コントラクトに依存しており、これらのコントラクトは「アップグレード可能」です。つまり、一部のコードを変更できるということです(ほとんどのRollupはプロキシコントラクトを使用しています)。また、マルチシグまたはセキュリティ委員会の承認の下で即座に行うことができます。結論を先に述べると、Rollupは少数の人によって制御されるマルチシグまたはセキュリティ委員会を通じて、L1上のコントラクトコードを迅速に変更し、ユーザーの資産を盗むことができます。
図源:L2 BEAT研究報告
まず「Rollupコントラクトはなぜアップグレードが必要なのか」と「それはどのようにアップグレードされるのか」についてです。イーサリアム上のコントラクトコードはデプロイ後に変更できませんが、Rollupの開発過程ではさまざまなバグが存在する可能性があり、誤った結果を引き起こす可能性があります。また、Rollupは頻繁に製品のイテレーションを行い、新しい機能を追加する必要があります。極端な場合、ハッカーがRollupコントラクトを攻撃する可能性もあるため、Rollupコントラクトにはアップグレード可能性が必要です。これは通常、プロキシコントラクトを通じて実現されます。
*
図源:wtf academy
プロキシコントラクトは、イーサリアムコントラクト開発で一般的に使用される方法で、コントラクトのデータとビジネスロジックを分離し、異なるコントラクトに保存することです。データ(状態変数)はプロキシコントラクトに保存され、ビジネスロジック(関数)はロジックコントラクトに保存されます。プロキシコントラクト(Proxy)はdelegatecallを通じて、関数の実行プロセスをロジックコントラクト(Implementation)に全権委任し、最終的な結果を呼び出し元(Caller)に返します。
プロキシモデルでのコントラクトのアップグレードは、プロキシコントラクトを新しいロジックコントラクトに指し示すだけで済みます(プロキシコントラクトに保存されているロジックコントラクトのアドレスを書き換える)。ほとんどのRollupプロジェクトは、この方法でコントラクトをアップグレードしています。非常にシンプルで効果的です。
*
図源:wtf academy
考えられるのは、Rollupのコントラクトがアップグレード可能であることは実際には大きなリスクです:アップグレード後のコントラクトに悪意のあるコードが含まれている場合、例えばRollupに付随するブリッジコントラクトの引き出し条件を変更したり、Verifierコントラクトの有効性証明の正しさを判定する条件を変更したりすると、シーケンサーは盗難を行うことができます(原理は前述の通りです)。
しかし、Rollupコントラクトのアップグレードを許可しないわけにはいきません。その理由は前述の通りです。天秤にかけると、ほとんどのRollupはDAOガバナンス、セキュリティ委員会、またはマルチシグの承認を通じて、人治の方法でRollupのコントラクトをアップグレードするかどうかを決定します。さらに、タイムロック(Timelock)を通じて、コントラクトのアップグレードに遅延ウィンドウを設定します。
図源:L2 BEAT研究報告
ほとんどのDAO提案には自動化された実行プロセスがあるため(オンチェーンコントラクトを通じて実現)、たとえコントラクトをアップグレードする必要があっても、まず十分な投票を得てから、タイムロック(Timelock)で定められた遅延(通常は数日間)を経て、コントラクトのアップグレード操作が実行されます。もし誰かが悪意のあるコントラクトのアップグレードを行おうとする場合、DAOガバナンスの関門を通過するためにガバナンス攻撃を行う必要があります(例えば、Tornado Cashで発生したガバナンス攻撃のように)。しかし、これを行うには高いコストがかかり、十分なトークンを取得する必要があるため、通常は成功しません。たとえガバナンス攻撃が成功しても、タイムロックの制限があるため、ユーザーはL2から資産を引き出すための十分な時間があり、Rollup公式も緊急措置を講じるための十分な時間があります。
タイムロックは、一定の遅延後に特定の操作を許可するものです。
タイムロックは悪意のあるコントラクトのアップグレードを防ぐための秘訣のように見えます。しかし、問題は、いわゆる「Rollup公式が取ることができる緊急措置」は、実際にはDAOガバナンスやタイムロックを回避し、マルチシグまたはセキュリティ委員会の承認を通じて、Rollupコントラクトを即座にアップグレードすることです。現在の主流のRollupは、数十億ドルのユーザー資産を管理していることを考慮すると、マルチシグとセキュリティ委員会によって承認された「コントラクトの即時アップグレード」は、究極の緊急措置であり、すべてのユーザーの頭上にあるダモクレスの剣でもあります。
明らかに、これは信頼の最大化の問題です:あなたはRollup公式があなたの資産を盗む意図を持たないことを信頼する必要があります。Trustlessの観点から考えると(ニクサボの視点)、すべてのマルチシグとセキュリティ委員会が制御するRollupは安全ではありません。Avalancheの創設者Emin Gun SirerやSolanaの創設者Anatoly、著名な批評家Justin Bonsはこの種の問題を強調しています。
どのRollupがマルチシグ/委員会に操られているのか?
著名なL2研究機関L2 BEATが発表した報告書「Ethereum L2のアップグレード可能性」とL2BEATのデータ可視化サイトによると、Arbitrum、Optimism、Loopring(ループリング)、ZKSync Lite、ZkSync Era、Starknet、Polygon ZKEVMなどの主流のRollupはマルチシグまたは委員会の承認を受けたアップグレード可能なコントラクトを持ち、タイムロックの制限を回避できることがわかります。
dYdXはDAOガバナンスを回避してコントラクトをアップグレードできるEOAアドレスを持っていますが、タイムロックの制限を受けています(少なくとも2日の遅延があります)。Immutable Xは14日のコントラクトアップグレードの遅延があるため、L2BEATの見解によれば、dYdXとImmutable Xは他の主流のRollupよりもTrustlessです。
図源:L2 BEAT研究報告
では、どのようにしてマルチシグとセキュリティ委員会による信頼リスクを低減できるのでしょうか? 答えは実際にはMultichain事件と似ています:魔女狩りの問題に帰着します。マルチシグ/委員会が異なる、利益の重複が少なく、共謀リスクが低い複数の主体によって制御されることを保証する必要があります。現時点では、DAOの分散型ガバナンスの成熟度を高め、名声と信用のある著名人や機関をマルチシグ/委員会に招待する以外に、あまり良い方法はないようです。そして、これらのシナリオは現実世界の民主政治でよく見られるものです。
もちろん、タイムロックを通じてマルチシグ/委員会が管理するコントラクトのアップグレード行為に制限を加えることもできますが、これは多くの要因を考慮する必要があります。なぜなら、マルチシグ/委員会の存在目的は、緊急事態を迅速に処理するためだからです。また、Rollupプロジェクトが信頼性の問題に対して確固たる決意を持っていない場合、この問題は解決されることはありません。
したがって、異なるRollupプロジェクトが巧妙なメカニズム設計を通じて、ほとんどの状況でユーザー資産の安全を保障できるとしても、マルチシグと委員会が存在するため、Rollupでブラックスワンイベントが発生する確率は0ではありません。たとえマルチシグと委員会のメンバーが共謀する確率が万分の一であっても、L2が管理する資産の価値(仮に100億ドルと仮定)を考慮すると、L2ユーザー資産のリスクは毎日100万ドルに達します。Multichain事件を考えると、実に恐ろしいことです。
したがって、私個人の意見としては、Polynyaが以前に述べたように、イーサリアムエコシステム内のほとんどの資金はL1で流通し、ロックされる傾向があり、L2ではないため、Rollupエコシステムは長期的にイーサリアムエコシステム内の大部分の価値を捕らえることができないと考えています。大口やクジラにとって、イーサリアムメインネットは明らかにL2よりも適切で信頼できる資金の行き先です。したがって、多くの人が以前に考えた「L2の台頭がL1の冷淡さを引き起こすのではないか」という疑問には、すでに答えがあると言えます。
東野圭吾が著作の中で述べたように、人の心は数学の公式よりもはるかに捉えにくく、理解しにくく、複雑であり、変えることも難しいのです。多くのことは単純な技術手段では解決できません。「人間性」に関わる要素がある限り、常にこの世で最も制御不可能で、最も予測困難で、最も真剣に対処すべき問題です。この点を忘れずに、カントの墓碑に刻まれた名言を心に留めておきましょう:
「私の心を常に取り巻いている二つの事柄がある。それについて考えを深めれば深めるほど、心に呼び起こされる驚きと畏敬の念は日々深まるばかりである。それは、内なる道徳律と頭上に輝く星空である。」