
Rollupアップグレードの背後にあるマルチシグと委員会の信頼リスク:L2は多くの人が考えるほど「理想的」ではない
TechFlow厳選深潮セレクト

Rollupアップグレードの背後にあるマルチシグと委員会の信頼リスク:L2は多くの人が考えるほど「理想的」ではない
マルチシグネチャとセキュリティ委員会がもたらす信頼リスクをどのように低減すればよいでしょうか?
著者:林克、GeekWeb3
導言
Solanaの勢力低下やOPのトークン発行以降、Layer2およびRollupは多くのWeb3関係者にとって新たな避難港のように見えている。熊相場が続く中、FTXの破綻やMulticoinの甚大な損失により、イーサリアムの競合チェーンは次々とWeb3の主舞台から姿を消し、ETHとの競争力を失いつつある。ますます多くの人々がRollupを新たなストーリーの中心と考えるようになり、数え切れないほどのプロジェクトがL2上に雨後の筍のように出現している。
しかし、これは果たして「虚偽の繁栄」なのではないか?「いつ破裂してもおかしくないバブル」なのではないか?RollupやL2は、大多数が喧伝するほど本当に理想的なのだろうか?人々が認識しているほど本当に安全なのだろうか?多くのOP Rollupが不正証明(Fraud Proof)を持っていないことすら棚に上げて、Rollupには他にどのようなセキュリティリスクがあるのか?
本稿はL2BEATが最近発表した「Upgradeability of Ethereum L2s」に触発され、Rollupのアップグレードに関わるマルチシグや委員会による信頼リスク、そして以前から語られてきたRollupに関する懸念を踏まえ、最近のMultichain事件も想起しながら、L2が多くの人が考えるほど「理想的」ではない理由について総合的に考察する。

Rollupの原理概要
(すでにRollupの仕組みに精通している場合は、以下の多くの段落を飛ばして後ろへスクロールしてください)
Rollupの動作原理の概要:
イーサリアムRollup = Layer1上の一連のコントラクト + Layer2ネットワーク独自のノード群。
Layer2ネットワークのノード群はいくつかの役割に分かれ、その中で最も重要なのがシーケンサー(Sequencer)である。シーケンサーはLayer2上で発生するトランザクション要求を受け取り、実行順序を決定し、それらをバッチ(Batch)としてまとめ、RollupプロジェクトがLayer1上に展開したコントラクト(以下では一貫してRollupコントラクトと呼ぶ)に送信する。

Starknetのインタラクションロジック図
Layer2のフルノードは、シーケンサーから直接トランザクション列を取得することもできるが、シーケンサーがLayer1に送信したトランザクションバッチを読み取ることもできる。ただし、後者のほうがより高い最終確定性(変更不可能性)を持つ。通常、バッチがLayer1に送信されると、そのトランザクション順序は変更できなくなる(イーサリアムがブロックリオープしない限り、Rollupのトランザクション順序も変更されない)。
トランザクションの実行はブロックチェーン台帳の状態を変更するため、トランザクション順序だけでなく、Layer2のフルノードはシーケンサーと台帳状態を同期する必要があり、これにより整合性を保つ。
したがって、シーケンサーはLayer1のRollupコントラクトにトランザクションバッチを送るだけでなく、トランザクション実行後の状態更新結果(ステートルート/ステート差分)もLayer1に送信しなければならない。
明らかに、L1(イーサリアム)は実質的にL2ノードたちの掲示板の役割を果たしている。L1はL2ネットワークよりもはるかに非中央集権的で、信頼不要(Trustless)かつ安全である。L2のフルノードにとって、L1上のRollupトランザクション列+初期のステートルートさえ取得できれば、L2のブロックチェーン台帳を再構築し、最新のステートルートを計算できる。もし自身が算出したステートルートと、シーケンサーがL1に公開したステートルートが一致しない場合、それはシーケンサーが詐欺行為をしていることを意味する。

最も直感的な仮想ケースは、「L2のシーケンサーがユーザーの資産を盗むことができるか」という問いだ。例えば、本来発生すべきでないトランザクション(例:特定のL2ユーザーのトークンをシーケンサー運営者のアドレスに移転し、その後L1に引き出す)を偽造することは可能か?この問題は次のように整理できる:シーケンサーが誤ったトランザクションデータや誤ったステートルートを公開した場合、どうすればよいのか?
シーケンサーの詐欺リスクに対して、異なるタイプのRollupは異なる対応策を持っている。Optimistic Rollup(楽観的Rollup)では、L2のフルノードが不正証明(Fraud Proof)を提供し、シーケンサーがL1に公開したデータが間違っていることを証明できる。例えばArbitrumはノードのホワイトリストを設けており、ホワイトリスト上のL2ノードが不正証明を提出できるようにしている。
さらに、多くの取引所や民間のクロスチェーンブリッジ運営者がL2のフルノードを運営しているため、すぐに誤りを検出できる。そのため、ほとんどのRollupシーケンサーが通貨を盗んで成功する確率は基本的にゼロである(最終的に換金するには取引所を通す必要があるため、あるいは盗んだコインをL1に移して別途処理する必要がある)。

図中のAggregatorは実際にはシーケンサー
しかし、不正証明を持たないOptimismの場合、シーケンサーはRollup独自のクロスチェーンブリッジコントラクトを使って通貨を盗むことができる。例えば、シーケンサー運営者はトランザクション命令を偽造し、他人のL2資産を自分のアドレスに移転し、その後Rollup内蔵のブリッジコントラクトを使って盗んだコインをL1に移動できる。不正証明がないため、OPのフルノードは誤ったトランザクションに異議を唱えることができず、理論的にはOPのシーケンサーはL2ユーザーの資産を盗むことが可能(実際にそうしようと決意すれば)。

2023年7月24日現在、Bedrockアップグレード後のOPは依然として不正証明システムを導入していない
この問題を解決する方法は「社会的コンセンサス」(コミュニティメンバーとSNS等による世論監視)またはOP公式の信用保証に頼ることである。
興味深いことに、最近ある取引所はArbitrumおよびOptimismユーザーの内部入金遅延時間を短縮した(L2ブロック100から1ブロックに)。これはARBおよびOPのシーケンサーが悪意を持って行動しないという信頼を示しており、(これらが公式保証された中央集権サーバーであると暗黙の了解をしている)。

楽観的Rollupとは異なり、L2のフルノードに依存する以外に、ZK Rollupは有効性証明(Validity Proof、しばしばZK Proofと混同される)によってシーケンサーの詐欺問題を解決する。ZK RollupネットワークにはProverと呼ばれるノードがあり、シーケンサーが公開したトランザクションバッチに対して有効性証明を生成する。同時に、L1上には有効性証明を検証する専用コントラクト(一般にVerifierと呼ばれる)があり、トランザクションバッチおよびステートルート/ステート差分に対応する証明が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分ごとに1回L1にトランザクションバッチを送信していた。現在はユーザーが増えたため、この問題は一定程度解消されている。OPとは異なり、Starknetはステート差分の公開頻度を下げることでデータコストを削減しており、これによりStarknetのトランザクション最終確認遅延は7~8時間に伸びている。
さらに、多くのZK Rollupはコストをさらに下げるために、「複数のProofを集約し、一度にL1に送信する」方式を採用している。つまり、Proverは証明を生成したらすぐにL1に送信するのではなく、複数の証明が完成するまで待って集約し、その後L1のVerifierコントラクトに送信する。(実際の集約プロセスは、一つの証明で複数の証明検証に伴う計算手順を包含することである)

ScrollのProof集約図
その結果、Proofの公開頻度がさらに低下し、トランザクションの発生から最終確定までの遅延がさらに長くなる。
ブロックエクスプローラの表示によると、Polygon ZKEVMのトランザクション確認遅延は約30~50分、StarknetとZksync Eraは7時間以上である。明らかにこれは「部分的にL1の安全性を継承している」に過ぎず、「L1と同等の安全性」という支持者の主張とは大きな隔たりがある。

もちろん、これらの問題は技術進歩によって将来的に解決できる。多くのプロジェクトが高性能ハードウェアを開発し、有効性証明の生成時間を短縮しようとしている。Optimismも近いうちに不正証明システムを導入すると約束している。イーサリアムのDanksharding方式により、Rollupのデータコストは数十倍以上削減され、上記の課題を効果的に解決できる。
解決困難な「人治」問題
DeFiなどのアプリケーションプロジェクトと同様、Rollupネットワークの運営はL1上の関連コントラクトに依存しており、それらのコントラクトは「アップグレード可能」である。つまり、一部のコードを変更できる(多くのRollupはプロキシコントラクトを使用)ものであり、マルチシグまたはセキュリティ委員会の承認のもとですぐに変更できる。結論から言うと:少数の人物が管理するマルチシグまたはセキュリティ委員会を通じて、RollupはL1上のコントラクトコードを迅速に変更し、ユーザーの資産を盗むことが可能である。

出典:L2BEAT研究報告
まず「なぜRollupコントラクトのアップグレードが必要なのか」と「どのようにアップグレードされるのか」について説明する。イーサリアム上のコントラクトコードはデプロイ後に変更できないが、Rollupの開発過程では様々なバグが避けられず、誤った結果を招く可能性がある。また、製品の反復改善も頻繁に行われ、新機能の追加が必要となる。さらに極端なケースでは、ハッカーがRollupコントラクトを攻撃する可能性もあるため、Rollupコントラクトにはアップグレード性が必要であり、これは通常プロキシコントラクトによって実現される。

出典:wtf academy
プロキシコントラクトはイーサリアムコントラクト開発でよく使われる手法であり、コントラクトのデータと業務ロジックを分離し、異なるコントラクトに保存するものである。データ(状態変数)はプロキシコントラクトに保存され、業務ロジック(関数)はロジックコントラクトに保存される。プロキシコントラクト(Proxy)はdelegatecallを使って、関数の実行を完全にロジックコントラクト(Implementation)に委任し、最終結果を呼び出し元(Caller)に返す。
プロキシパターンでのコントラクトアップグレードは、プロキシコントラクトが新しいロジックコントラクトを指すようにするだけ(プロキシコントラクト内に保存されたロジックコントラクトのアドレスを書き換える)。多くのRollupプロジェクトがこの方法を採用しており、非常に単純で粗暴である。

出典:wtf academy
容易に想像できるのは、Rollupのコントラクトアップグレード可能という性質自体が巨大な地雷であるということだ。アップグレード後のコントラクトに悪意のあるコードが含まれていた場合、例えばRollup内蔵ブリッジコントラクトの出金許可条件を改ざんしたり、Verifierコントラクトによる有効性証明の正当性判定条件を変更したりすれば、シーケンサーが通貨を盗むことが可能になる(前項で説明した原理による)。
しかし、一方でRollupコントラクトのアップグレードを禁止することもできない。前述の理由から明らかである。バランスを取るために、ほとんどのRollupはDAOガバナンス、セキュリティ委員会、またはマルチシグ承認を通じて、人為的にコントラクトのアップグレードの可否を決定する。さらに、タイムロック(Timelock)を設けることで、コントラクトアップグレードに遅延期間を設ける。

出典:L2BEAT研究報告
多くのDAO提案は自動実行フローを持っている(オンチェーンコントラクトによって実現)ため、コントラクトをアップグレードするにはまず十分な票を得なければならず、さらにタイムロックで定められた遅延期間(通常は数日間)を経て、アップグレード操作が実行される。誰かが悪意のあるコントラクトアップグレードを企てた場合、ガバナンス攻撃によってDAOガバナンスを突破する必要がある(Tornado Cashで起きたような事例)。しかし、そのコストは非常に高く、十分な数のトークンを取得する必要があるため、通常は成功しない。仮にガバナンス攻撃が成功しても、タイムロックの制限があるため、ユーザーは資産をL2から撤退するのに十分な時間が与えられ、Rollup公式も緊急措置を取るのに十分な時間が得られる。

タイムロックとは、一定の遅延期間後に操作を許可する仕組み
一見、タイムロックは悪意のあるコントラクトアップグレードを防ぐ魔法の杖のように見える。しかし問題は、「Rollup公式が取れる緊急措置」というものは、実際にはDAOガバナンスとタイムロックを回避し、マルチシグまたはセキュリティ委員会の承認を得て、即座にコントラクトをアップグレードすることである。現在主流のRollupは数十億ドル規模のユーザー資産を預かっていることを考えると、マルチシグおよびセキュリティ委員会による「即時コントラクトアップグレード」は究極の緊急対応策である一方、すべてのユーザーの頭上に常に突き刺さるダモクレスの剣でもある。
明らかにこれは信頼の最大化の問題である:あなたはRollup公式があなたの資産を盗もうとする念头を持たないと信じなければならない。信頼不要(Trustless)の観点(ニクラス・サボの視点)から言えば、マルチシグやセキュリティ委員会が制御するすべてのRollupは安全ではない。Avalanche創設者Emin Gun Sirer、Solana創設者Anatoly、著名な批判者Justin Bonsらはいずれもこの問題を強調している。


どのRollupがマルチシグ/委員会に支配されているか?
有名なL2研究機関L2 BEATが発表した報告書「Upgradeability of Ethereum L2s」およびL2BEATのデータ可視化サイトによると、Arbitrum、Optimism、Loopring(路印)、ZKSync Lite、ZkSync Era、Starknet、Polygon ZKEVMといった主要Rollupはいずれも、マルチシグまたは委員会による承認を受けてアップグレード可能なコントラクトを持っており、タイムロックの制限を回避できる。


dYdXはEOAアドレスひとつでDAOガバナンスを回避してコントラクトをアップグレードできるが、タイムロックの制限がある(最低2日の遅延)。Immutable Xは14日間のコントラクトアップグレード遅延があるため、L2BEATの見解では、dYdXおよびImmutable Xは他の既にメインネットに上線した主要Rollupよりも信頼不要性が高い。


出典:L2BEAT研究報告
では、マルチシグおよびセキュリティ委員会による信頼リスクをどう低減すればよいか?答えはMultichain事件と類似している:それはシビル問題の解決に帰着する。マルチシグ/委員会は、それぞれ異なる、利益が高度に重複せず、共謀リスクの低いエンティティによって制御されていることを保証しなければならない。現時点では、DAOの非中央集権的ガバナンスの成熟度を高め、評判と信用のある有名人や機関にマルチシグ/委員会に参加してもらう以外に、良い方法は見当たらない。このような状況は、現実世界の民主政治においても何度も繰り返されてきた。
もちろん、マルチシグ/委員会が管理するコントラクトアップグレードにタイムロックを適用することで制限をかけることもできる。しかし、これは多くの要素を考慮した上で慎重に調整する必要がある。なぜなら、マルチシグ/委員会の存在目的は緊急事態を迅速に対処することにあるからだ。また、Rollupプロジェクト側が信頼不要性に関して強い決意を持っていない限り、この問題は決して解決できない。
したがって、異なるRollupプロジェクトが精巧なメカニズム設計により、ほとんどの場面でユーザー資産の安全を守ることができても、マルチシグと委員会が存在する限り、Rollupにおけるブラックスワンイベントの発生確率はゼロではない。仮にマルチシグ/委員会メンバーの共謀確率が一万分の一しかなくても、L2が預かる資産価値(仮に100億ドルと仮定)を考えれば、L2ユーザー資産の日々のリスクは依然として100万ドルに達する。Multichain事件を思い出せば、実に恐ろしいことである。
個人的には、Polynyaが以前述べたように、イーサリアムエコシステム内の資金の大半は依然としてL1での流通やロックに傾くだろう。Rollupエコシステムは長期的にもイーサリアムエコシステム内の大部分の価値を獲得できない。大口投資家やホエールにとっては、イーサリアムメインネットこそがL2よりも適切で信頼できる資金の行き先である。したがって、以前から懸念されていた「L2の台頭がL1を冷清にするのではないか」という疑問には、すでに答えが出ている。
東野圭吾が著作の中で述べたように、人間の心は数学の公式よりもはるかに捉えがたく、理解しにくく、複雑で、変えにくい。多くの問題は純粋な技術手段では解決できない。ひとたび「人間性」に関わる要素が絡めば、それがこの世で最も制御不能で、予測困難であり、最も真剣に向き合わなければならない問題なのである。ここで、カントの墓碑に刻まれた名言を心に留めておこう:
「私の心を常に包み込み、思索を深めるにつれてますます増していく驚嘆と畏敬の念を抱かせるもの、それは 内なる道徳律と、頭上の輝かしい星空である。」

TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














