執筆:0xJaehaerys
翻訳・編纂:白话区块链
誰もが流動性の断片化という問題をよく知っている。イーサリアム・エコシステムの流動性はL1と数十のL2に分散している。
Rollup上では、次のことを1つのトランザクションで完了できない。メインネットのAaveでUSDCを借り、UniswapでETHに交換し、それをパーペチュアルDEXの証拠金として預け入れる——ブリッジを開き、クロスチェーン転送し、ここで承認し、あちらへ送り、再びクロスチェーンし、最後に預金する必要がある。
イーサリアム経済圏(EEZ)はこのすべてを1つのトランザクションにする。EEZ内のRollupは、あたかも同じチェーン上にいるかのように、イーサリアムおよび他のEEZ Rollup上のすべてのリソースを利用できる(同期コンポーザビリティ)。
EEZとは何か
EEZはイーサリアム上のコントラクトと、各チェーンをこれらのコントラクトに接続するルールで構成される。新しいチェーンでも、新しいスタックでもない。接続されたチェーンは、1つのトランザクション内でイーサリアムまたは他の接続チェーンのリソースを使用できる。このアイデアは実行シャーディング(execution sharding、古くからのイーサリアム拡張計画)に由来し、リアルタイム証明がそれを現実のものにした。
EEZの出発点は、L1を取り巻くチェーンの数は減らないということだ。限界まで推し進めても、L1は世界経済を担うことはできない。十分な帯域幅がない。また、すべての人がL1上にいるのに適しているわけではない。L1上では誰もあなたの間違いを訂正してくれず、銀行や取引所は異なるルールを必要とする。各チェーンはEVMと非EVM、パブリック、プライベート、許可型などさまざまであり、私たちの課題はそれらを一つのまとまりとして協調させることだ。
区域内の各チェーンは依然として、自分の好みの仮想マシン(VM)と順序でトランザクションを実行する。誰の参加を許可し、どの証明を信頼するかも自ら決める。区域内のすべてのチェーンが共有するのはイーサリアムのブロックだ。そのうちのどれもが、同じブロック内でL1上の流動性、コントラクト、鍵を使用できる。「経済圏」という名前はまさにここに由来する——共有市場を持ちながら、各チェーンが独自のルールを持つ区域である。
EEZに参加するには、チェーンは少なくとも2つの条件を満たす必要がある。1つのスロット内にその状態を証明すること、そしてイーサリアムの再編(リオーグ)が発生した際に一緒にロールバックすることだ。2つ目の条件は、再編後に、あるチェーン上にトランザクションが残り、そのイーサリアム上のもう半分が消えてしまうのを防ぐためである。EEZコントラクトはチェーン内部で何が起きているかを見ることができず、そのチェーンの証明と状態ルート(そのチェーン全体の状態を約束するハッシュ値)だけを必要とする。チェーンは任意のVMと任意の参加ルールを持て、特定の証明器を強制されない。既存のL2はすべて参加できる。
技術的には、EEZは3つの中核コンポーネントに支えられている:
- リアルタイム証明(Real-time proving)。チェーンは1つのイーサリアムスロット内にその新しい状態を証明する。
- コンポーザー(Composer)。ブロック生成前に、トランザクションが関わる各チェーン上でそのトランザクションを事前実行し、クロスチェーン呼び出しへの答えを用意するオペレーター。
- プロキシ(Proxy)。あるチェーン上で別のチェーンのコントラクトを代表するコントラクト。
リアルタイム証明とは何か
有効性証明(validity proof)は、あるチェーンがそのルールに従って新しい状態に到達したことを示すために使われる。イーサリアム上のコントラクトは、そのチェーンのブロックを再実行することなくそれを検証できる。リアルタイム証明とは、証明が1つのイーサリアムスロット内——つまり12秒以内に——準備できることを意味する。
1年前、リアルタイム証明は大きな話題を呼んだ。当時、ZisKにはRTX 5090 GPUが24枚必要だったが、今日では4枚で十分だ(Ethproofs)。
EEZがそれを必要とするのは、イーサリアムがRollupのコードを実行せず、証明が付随する場合にのみRollupの回答を受け入れるからだ。かつて証明の生成には数分から数時間かかり、回答は呼び出しを開始した同じブロック内に届くことはなかった。1つのスロット内で完了する証明がそれを可能にする。
EEZの設計では、クロスチェーン呼び出しに対するRollupの回答はブロック生成前に準備される。コンポーザーが結果を計算し、証明器がその結果を証明し、ビルダーがその回答を必要とするトランザクションとともに証明をイーサリアムのブロックに詰め込む——これらすべての操作は同じ12秒以内に完了しなければならない。
同期呼び出しはどう機能するのか
このプロセスを理解する最も簡単な方法は、イーサリアムからRollupへの単一の呼び出しを見ることだ(2つのRollup間の呼び出し経路も同じである)。
プロキシ(Proxy)
別のチェーンへの呼び出しはプロキシを通じて行われる。Rollup上の各コントラクトはイーサリアム上に事前に知ることができるプロキシアドレスを持ち、その逆も同様だ。このアドレスはCREATE2によって、EEZコントラクトアドレス、元のコントラクトアドレス、およびEEZレジストリ内のチェーンIDから計算される。誰でもそのプロキシをそのアドレスにデプロイできる。呼び出し元コントラクトから見ると、プロキシは他のローカルコントラクトとまったく同じだ。クロスチェーン呼び出しは、メッセージングプロトコルを使わずに、コード内で通常の呼び出しと同じように書ける。
コンポーザーと実行テーブル(Composer and the execution table)
コンポーザーはトランザクションが関わる各チェーン上でそのトランザクションを実行し、各クロスチェーン呼び出しを実行テーブル——事前計算された回答の表——に書き込む。各エントリ(実行エントリ)には、呼び出しへの回答、呼び出し前後のRollupの状態ルート、Rollupがイーサリアムへコールバックする呼び出しのリスト、およびこれらの呼び出しとその結果のローリングハッシュ(rolling hash)が含まれる。1つの証明でテーブル全体をカバーできる。
コンポーザーはビルダーにトランザクションバンドルを送信し、ビルダーはこのトランザクション群を順番どおり完全に含めるか、まったく含めないかのどちらかだ。バンドルの最初のトランザクションはpostAndVerifyBatchトランザクションで、Rollupのバッチ、実行テーブル、証明が含まれる。ユーザーのトランザクションはその直後に続く。Rollup上のクロスチェーン部分は同期ブロック(Sync block)内で実行され、Rollupはイーサリアムの各ブロックに対して1つの同期ブロックを生成し、それと結びつける。バンドルがそのブロックに間に合わなければ、同期ブロックはロールバックする。
バッチとプロキシの回答の検証
postAndVerifyBatchトランザクションはバッチの証明を検証する。どの証明システム(ZK、TEE、マルチシグ、またはそれらの組み合わせ)を信頼するか、および各バッチにいくつの証明が必要かは、Rollupの所有者が決め、EEZはこれらのシステムを推奨・保証しない。バッチ内の各証明はすべて検証に合格しなければならない。その後、EEZコントラクトは実行テーブルのエントリと状態ルートの遷移を保存し、呼び出しが到達した際にプロキシがこれらのデータを確認して適用する。
次にユーザーのトランザクションが実行される。それがプロキシを呼び出すと、プロキシはEEZコントラクト内でその呼び出しのエントリを探し、以下の条件を満たす場合にのみそこから回答を返す。呼び出しがコンポーザーのシミュレーションと完全に一致すること、そのエントリが同じブロックのバッチとともに到着していること、そしてRollupがイーサリアムへコールバックすることで生じるローリングハッシュが一致すること。
イーサリアムへのコールバック
Rollupがイーサリアムへコールバックする呼び出しはイーサリアムによって直接実行され、Rollupはコンポーザーのシミュレーションからこれらの呼び出しへの回答を取得する。呼び出しはネストできる——この方法で呼び出されたイーサリアムのコントラクトは、プロキシを通じて再びRollup上のコントラクトを呼び出すことができ、そのネストされた呼び出しの回答はすでに実行テーブル内に存在している。
冒頭のあのトランザクション
このトランザクションは逆方向、つまりRollupからイーサリアムへのものだ。ブロック生成前に、コンポーザーが両方のチェーンでこのトランザクションを実行し、あなたのウォレットが受け取ることになるすべての内容を実行テーブルに書き込む。ビルダーは実行テーブルと証明を伴うバッチをイーサリアムのブロックに入れ、EEZコントラクトが検証し、その後トランザクションはRollupの同期ブロック内で実行される。AaveとUniswapへの呼び出しは、同じバンドル内のトランザクションによってコンポーザーがイーサリアム上で実行し、あなたはコンポーザーにより高いチップ(tip)を支払うことでこのL1ガス代を負担する。
- ウォレットはRollup上でAaveのプロキシを呼び出し、USDCを借りる。Aaveはイーサリアム上のあなたのウォレットプロキシを借り手とみなす(担保は事前にそのアドレスに預けられている必要がある)。
- ウォレットはUniswapのプロキシを通じてUSDCをETHに交換し、実行テーブルから回答を読み取る。
- クロスチェーンブリッジがRollup上でこのETHを記帳する。
- ウォレットはこのETHを証拠金として取引プラットフォームに預け入れる。
コンポーザーがシミュレーションで失敗するステップを発見した場合、そのバンドルは送信しない。イーサリアム上の実際の実行結果がシミュレーションと一致しない場合、イーサリアムとRollup上のすべての操作はすべてロールバックする。
これが何を変えるのか
上記のトランザクションは可能性の1つを示したにすぎない。呼び出しはあらゆる方向に行える。L1 → L2、L2 → L1、またはL2 → L2である。
どのRollupもイーサリアムの流動性を共有できる
EEZ内の新しいチェーンは、トークンインセンティブで流動性をコールドスタートする必要がなく、L1上にすでにある流動性とアプリを直接使用できる。EEZのメインネット上にあるテストRollup、RollupXでは、ある人がイーサリアムのUniswapプールからCRVを購入した。当時Rollup上にはCRVがまったく存在せず、クロスチェーンブリッジが同じスワップトランザクション内でラップ版CRVを直接ミントした(tx)。
各EEZチェーンがこれを行うと、取引量は各チェーン間で断片化されることなく、同じL1流動性プールに集まる。イーサリアム上の他のプロトコルも各チェーンに重複してデプロイする必要はない。これらの呼び出しのガスはL1上で支払われ、EEZチェーン上の活動が増えるほど、イーサリアムのブロックスペースへの需要が大きくなる。
アプリがRollupを立ち上げるのは、トランザクションの順序を制御しMEVを保持するためであり、取引プラットフォームもカスタムのマッチングエンジンを望んでいる。過去の代償はイーサリアムとのコンポーザビリティを犠牲にすることだった。L1のコントラクトと流動性はRollupにとって非同期にしか使えなかったからだ。EEZでは、取引プラットフォームは自社のエンジンで注文をマッチングでき、オーダーブックで約定できない部分は同期ブロック内でイーサリアム上のプールに対して直接実行される。
L1上の鍵管理
鍵と権限はL1上に残すことができる。Rollup上のコントラクトが同じトランザクション内でイーサリアムの状態を読み取れるからだ。マルチシグウォレットのSafeはすでにRollupX上でこの方法で稼働している。Rollup上のSafeは所有者リストを保存せず、各トランザクションでイーサリアム上のSafeからそのリストを読み取る。L1上で所有者を一度変更するか鍵を一度取り消すだけで、次のトランザクションから、L1から所有者を読み取るすべてのチェーンで有効になる。代償として、そのSafeの各トランザクションはクロスチェーン呼び出しを1回発行し、次の同期ブロックを待つ必要がある。イーサリアム上のSafeとRollup上のSafeは共同で1つの金庫を管理できる——同じ予算を共有し、双方の1つの署名だけで支払いを完了できる。
許可型チェーンとプライベートチェーン
EEZ内のチェーンはパブリックチェーンである必要はない。Aztecのようなプライバシーチェーンや、政府が運営する許可型チェーンもEEZに参加し、L1の流動性を使用できる。現在稼働している最も近い例はRollupX上のプライバシープールBermuda Bayだ——トレーダーの身元を隠しながら、スワップは同じトランザクション内でL1のUniswap V3上で実行される(tx)。
コプロセッサとしてのRollup
Rollupはイーサリアムのコプロセッサとして機能できる。L1にとって計算コストが高すぎるタスクはRollup上で実行でき、イーサリアム上のコントラクトは同じブロック内でその結果に基づいて行動できる。イーサリアム上で耐量子のFalcon署名を検証するには550万ガスを消費する。EEZのデモでは、この署名はRollup上で検証され、その結果はプリコンパイル済みコントラクトやハードフォークを一切必要とせず、L1上のSafeの支払いを直接承認した。新しい暗号技術と新しい仮想マシンが経済圏内のチェーン上に存在する限り、イーサリアムはそれらを直接使用できる。
限界
EEZ内のチェーンは、高速なブロック生成、イーサリアムとの同期呼び出し、分散型シーケンサーを同時にすべて手に入れることはできない——3つのうち2つを選ぶ必要がある(Gnosisフォーラム)。例えば、200ミリ秒のブロック生成速度を持つ高速チェーンがイーサリアムとの同期呼び出しを実現するには、中央集権型シーケンサーが必要だ。60ブロックごとに1ブロックだけが同期ブロックであり、そのチェーン上のアプリは12秒ごとにしかイーサリアムに到達できない。それでもこのチェーンは通常どおり使用できるが、クロスチェーン部分はL1の速度で動作し、L1のブロックスペースに依存する。
すべてのクロスチェーン呼び出しはコンポーザーを通る。コンポーザーはブロック生成前に未暗号化のトランザクションを見る必要があるため、コンポーザーとビルダーがその中のMEVを優先的に取得する。
現在、イーサリアムのブロックの7%はバリデーターが外部ビルダーを経由せず自ら構築している。これらのスロットでは同期呼び出しは発生しない。
ローンチ後の最初の1か月、すべてのEEZバッチは外部のMEV-Boostビルダーのブロックに含まれた。そのうち56%のバッチはTitanが構築したブロックに入った(Titanの通常のブロックシェアは48%)。興味深いことに、Titanは現在クロスチェーンMEVも捕捉できる。
EEZにより、Rollupは「独立したチェーンを運営する」か「イーサリアム上にとどまる」かの二者択一を迫られなくなる。トランザクションの順序とルールに対する制御を維持しながら、同じブロック内でイーサリアムの流動性とアプリをシームレスに使用できる。



