
著者:Ethereumの研究者Justin Drake、Ethresearch
この記事のクレジットは、より広いイーサリアムR&Dコミュニティによるものです。重要な貢献は2017年に由来し、長年にわたってデザインが大幅に増加しています。ZKVMエンジニアリングの最近のブレークスルーは、設計スペースの徹底的な調査を引き起こしました。この記事は、ついに来るかもしれない大きなアイデアのために、一貫したデザインをつなぎ合わせるために最善を尽くしています。
まとめ
ネイティブL1 EVM実行エンジンをアプリケーションレイヤーに公開するエレガントで強力な実行事前コンパイルを提案します。ネイティブ実行の概要( “ネイティブサマリ”)は、実行を使用してバッチユーザートランザクションを検証するEVM状態遷移の要約です。ネイティブの概要は、「プログラム可能な実行シェード」と見なすことができ、派生した関数で事前に拡大して、ソート、ブリッジング、強制包含、ガバナンスなど、EVMの外側のシステムロジックを処理します。
実行前の事前コンパイルはバリデーターによって直接実行されるため、(ZK)ELクライアントの多様性を享受し、建設的にエラーがなく、L1ハードフォーク以前の互換性を介してEVMにアップグレードされるEVM同等物を提供します。Ethereumのセキュリティを完全に継承したいEVM同等の要約には、実行前の実行などのEVM内省フォームが必要です。Ethereum Securityを完全に継承するという要約を「信頼のない要約」と呼びます。
実行前の実行は、詐欺防止ゲーム、スナークサーキット、セーフティボードなどの複雑なインフラストラクチャなしにEVMシミュレーションとメンテナンスが実行されるため、EVM同等の要約の開発を大幅に簡素化します。実行を使用すると、数行の堅牢性コードを使用して、単純な派生関数を使用して最小限のネイティブおよびロールベースの要約を展開し、ソート、強制包含、またはガバナンスの特別な扱いの必要性を排除できます。
最も重要なことは、ネイティブの集約は、リアルタイムの校正を心配することなく、リアルタイムの決済を享受し、同期の複合性を大幅に単純化することができます。
この記事は2つの部分に分かれており、最初に提案された事前コンパイルを導入し、最終的にネイティブの概要を議論します。
パート1 – プリコンパイルされた実行
構造
Precompilationを実行すると、入力PRE_STATE_ROOT、POST_STATE_ROOT、TRACE、およびGAS_USEDを受け入れます。次の条件が満たされた場合にのみ、それは真実です。
-
Traceは、適切に形成された実行追跡です(例:L2トランザクションリストと対応するステータスアクセス証明)
-
トレースのステートレス実行はpre_state_rootで始まり、post_state_rootで終了します
-
Traceのステートレス実行は、Gas_Used Gasを消費するだけです
L1ブロック内のすべての実行コールによって消費される蓄積ガスを測定および価格設定するためのEIP-1559スタイルのメカニズムがあります。具体的には、蓄積されたガス限界execute_cumulative_gas_limitと蓄積されたガスターゲットexecute_cumulative_gas_targetがあります。(L1 EVMを検証者によってステートレスに実行できる場合、累積制限とターゲットをL1 EIP-1559メカニズムと統合できます。)
プリコンパイルを呼び出すには、固定数のL1ガス、Execute_Gas_Cost、およびGAS_USED * GAS_PRICEが必要です。ここで、GAS_PRICE(ETH/GASの価格)はEIP-1559スタイルのメカニズムによって設定されます。事前コンパイルが虚偽である場合でも、完全な前払いは撤回されます。
追跡は、コールデータ、BLOB、状態、またはメモリから利用可能なイーサリアムデータを指す必要があります。
再測定します
execute_cumulative_gas_limitが十分に小さい場合、バリエーターは単にトレースを再実行して、実行コールの正確性を実施できます。再測定の事前コンパイルに基づく最初の展開は、元のダンクシャルディングの完全なダンクシャルディングの単純な再ダウンロードと同様に、足がかりの石として機能します。単純な再検討は、状態の成長や帯域幅のオーバーヘッドをバリデーターにもたらさないことに注意してください。また、実行オーバーヘッドはCPUコア間で並列化できることに注意してください。
バリデーターは、再解消のためにトレースの明示的なコピーを保持する必要があるため、DASを介して(ダウンロードされたのではなく)サンプリングされたデータの使用を妨げます。楽観的なネイティブの概要は、塊の形で集約されたデータを公開し、詐欺証明ゲームでのみコールデータに戻る可能性があることに注意してください。また、楽観的なネイティブ集約には、execute Precompilationが詐欺の課題を解決するために小さなEVMセグメントで1回の呼び出しが必要であるため、execute_cumulative_gas_limitをはるかに超えるガス制限がある可能性があることに注意することも重要です。
歴史的記録として、2017年にVitalikは、Exectxと呼ばれる同様の「EVM Inside EVM」事前コンパイルを提案しました。
スナーク経由で実行します
より大きなexecute_cumulative_gas_limitのロックを解除するために、自然に検証者がスナークの証明を選択的に検証できるようになります。これからは、タイムスロットが実行された実行を遅らせると想定しています。ここでは、無効なブロック(または無効なトランザクション)が操作のない操作と見なされます。(遅延実行の詳細については、このEthresearch Post、このEIP、およびFrancescoのこの設計を参照してください。)スロット遅延実行の結果、証明のために秒(スロット全体)になります。また、MEV駆動型の証明競争の奨励を避け、集中型ベクターを導入します。
スナークによって実行されたとしても、システムまたは回路がコンセンサスに組み込まれているという明確な証拠はないことに注意してください。(Execute Precompilationは入力として明示的な証明を取得しないことに注意してください。)代わりに、各ステーキングオペレーターは、ELクライアントを主観的に選択するための今日のアプローチと同様に、お気に入りのZkel Validatorクライアントを自由に選択できます。次のセクション「オフチェーンプルーフ」では、この設計上の決定の利点を説明します。
これからは、実行提案者は、実行とコンセンサススロットを交互に備えた証明プロポザー分離(APS)のコンテキストで成熟していると仮定します。合理的な実行提案者を動機付けて、タイムリーに(1時間スロット以内に)証明を生成するために、実行ブロックnの証明が利用可能な場合にのみ、実行ブロックn+1を証明する必要があります。(P2Pレイヤーでブロックnの実行を実行してブロックN+1をバンドすることをお勧めします。)スロットをスキップする可能性のある実行提案者は、手数料とMEVを逃した結果をもたらします。さらに、逃した実行スロットに固定ペナルティを課し、証明のコストを常に超えるのに十分な高さ(例:1 ETH)を設定します。
APSのコンテキストでは、コンセンサスブロックの生成は実行スロットを逃したことによってブロックされていないことに注意してください。ただし、タイムリーな生成の証明は、軽いクライアントにとって重要であるため、ステートレスの再検討なしにチェーン側の状態を簡単に読み取ることができます。軽いクライアントのタイムリーな証明生成を確保するために、次の実行提案者がタイムスロットを逃す特別なケースでさえ、私たちは利他的少数派の証明の仮定に依存しています。単一の利他的なプロバーでは、1つのタイムスロットで証明を生成するのに十分です。不必要な冗長な証拠を避けるために、ほとんどの利他的な証明は、スタンバイを待って、1つのスロット内に証明が届かない場合にのみ開始することができます。
execute_cumulative_gas_limitは、利他的な少数派のプロバーの仮定を信頼できるようにするために十分に低く設定する必要があることに注意してください(そして、実行提案を非現実的に複雑にするために)。保守的な戦略は、execute_cumulative_gas_limitを設定して、ハイエンドMacBook Proなどのラップトップがシングルスロットプルーフにアクセスできるようにすることです。より実用的で肯定的なポリシーは、GPUのわずかな割合をターゲットにすることであり、それらが完全にコモディティ化されると、最終的にはスナークASICの証明を標的にする可能性があります。
オフチェーンプルーフ
繰り返しになると、チェーンにZkelの実行された証明を置くのではなく、鎖で共有することをお勧めします。証明を保存しないことは良い考えであり、最初にVitalikによって提案され、いくつかの利点があります。
-
多様性:検証剤は、信頼できるELクライアントを選択する方法と同様に、信頼できる開発チームから証明バリッター(プルーフシステムやサーキットを含む)を自由に選択できます。これは、多様性を通じて堅牢性を提供します。Zkel Validatorクライアント(およびクライアントの基礎となるZKVMの一部)は、複雑な暗号化ソフトウェアです。どちらのクライアントのエラーがイーサリアムをクラッシュさせないはずです。
-
中立:Zkel Balidatorクライアント市場を持つことにより、コンセンサスレイヤーがテクノロジーの勝者を選択しないことができます。たとえば、ZKVM市場は非常に競争が激しく、受賞者(RISC0、簡潔、または他の多くのサプライヤーなど)を選択することは中立とは見なされない場合があります。
-
シンプルさ:コンセンサスレイヤーには、特定のスナークバリエーターを含める必要はありません。これにより、コンセンサスレイヤーの仕様が大幅に簡素化されます。特定の証明検証装置の実装の詳細ではなく、状態アクセス証明の形式を含めるだけです。
-
柔軟性:エラーや最適化が見つかった場合、影響を受けるバリデーターはハードフォークなしでクライアントを更新できます。
オフチェーンの証明を持つことは、いくつかの制御可能な合併症をもたらします:
-
負荷とP2Pの断片化を証明します:単一の仕様証明がないため、複数の証明を生成する必要があります(Zkelクライアントごとに少なくとも1つ)。各Zkelクライアントのカスタマイズ(たとえば、1つのRISC-V ZKVMを別のRISC-V ZKVMに交換する)には、別の証明が必要です。同様に、各Zkelバージョンのアップグレードには別の証明が必要です。これにより、証明負荷が増加します。各プルーフタイプに個別のゴシップチャネルがある場合、さらにP2Pネットワークが断片化されます。
-
いくつかのZkel:いくつかのズケルを動機付けて証明を生成することは困難です。合理的な実行提案者は、期間を見逃すことなく、大部分の証明に到達するのに十分な証拠を生成するだけです。この問題を解決するために、今日の保証オペレーターと同様に、馬鹿げたオペレーターを社会から並行して複数のZkelクライアントを運営するよう奨励することができます。K-of-nセットアップを実行することは、セキュリティを改善するという追加の利点もあり、特に攻撃者が任意の実行コールの証明を作成できるようにする衛生的な脆弱性を防ぐことができます(このケースは従来のELクライアント向けではありません。共通)。
オフチェーンプルーフは、リアルタイム決済L2の効率も低下します。
-
代替da:Executeの追跡入力はL1 Valibatorに提供する必要があるため、リアルタイムで落ち着くL2(仕様ステータスルートをすぐに更新するL2)はL1 DA、つまり要約を消費する必要があります。詐欺によるゲームの遅延決済の楽観的なL2にそのような制限はないことに注意してください。つまり、それは有効な価値になる可能性があります。
-
ステータスアクセスオーバーヘッド:トレースはステートレス実行可能である必要があるため、典型的なL2ブロックよりも少量のDAオーバーヘッドを導入する状態の葉を読み取ったり書いたりする必要があります。詐欺の証明の課題にのみ必要であり、チャレンジャーはトライの葉を再計算できるため、楽観的なL2にはこの制限がないことに注意してください。
-
状態の違いはありません:証明は許可されているはずなので、特定の追跡のために概要ステータスの違いを実行することはできません。ただし、対応する専門的な証明がコンセンサスに組み込まれている場合、Stateless Access ProofまたはEVMトランザクション署名を圧縮できます。
RISC-Vネイティブ実行
今日のRISC-V ZKVMへの事実上の収束を考えると、RISC-V状態の移行をEVM(屋内スタイラス環境のハッシュに類似)に局所的に暴露し、スナークに優しい維持する機会があるかもしれません。
パート2 – ネイティブロールアップ
名前
最初にネイティブロールアップの命名について説明して、いくつかの混乱する問題を解決しましょう。
-
代替名:ネイティブの要約は、以前はEnshrined Summaryとして知られていました。(「Canonical Summary」という用語は、Polynya 12でも簡単に使用されました。)「Enshrined」という用語は、後に放棄され、「ネイティブ」に置き換えられて、既存のEVM同等の概要をオプションでネイティブにアップグレードできることを示します。「ネイティブ」という名前は、2022年11月に匿名のままにしたいLidoの寄稿者によって、独立して提案されました。
-
概要に基づく:概要に基づいて、ネイティブの要約は常に直交概念です。「ベース」はL1ソートに関連し、「ネイティブ」はL1実行に関連しています。同時に、に基づいて、ネイティブの要約は「Superonic Summary」と呼ばれる気まぐれです。
-
シャードを実行する:実行シャーディング(つまり、L1 EVMチェーンのenshrinedコピー)は、ネイティブの要約の数年前のネイティブの要約に関連する異なるが関連する概念です。(シャードの実行は、Ethereum 2.0ロードマップの「フェーズ2」の前でした。)ネイティブロールアップとは異なり、シャーディングはプログラマブルではありません。つまり、カスタムガバナンス、カスタムソート、カスタムガストークンなどのオプションはありません。実行シュードは通常、固定数(例:64または1,024の破片)にインスタンス化されます。残念ながら、MartinKöppelmannは、2024年のDevconの破壊に関するスピーチで「ネイティブL2」7という用語を使用しました。
利点
ネイティブロールアップにはいくつかの利点があります。これについては、以下で詳しく説明します。
-
シンプルさ:ネイティブのロールアップVMの複雑さのほとんどは、プリコンパイルによってカプセル化できます。今日、EVMに匹敵する楽観主義とZK-Rollupには、1つのコードに圧縮できる詐欺のプルーフゲームまたはスナークバリエーターのコードが何千ものコードを持っています。ネイティブロールアップでは、証明ネットワーク、監視師、セキュリティ委員会などの補助インフラストラクチャも必要ありません。
-
安全:エラーのないEVM詐欺プルーフゲームまたはスナークバリデーターの構築は、詳細なフォーム検証を必要とする非常に難しいエンジニアリングタスクです。今日、すべての楽観主義とZK EVMロールアップは、そのEVM状態遷移機能に深刻な脆弱性を持つ可能性があります。脆弱性を防ぐために、集中化された選別は、敵対的なブロック生産を制御するための松葉杖としてよく使用されます。プリコンパイルのネイティブ実行により、許可のないソートの安全な展開が可能になります。L1セキュリティを完全に継承する信頼のないロールアップも、L1アセットの交換性を完全に継承します。
-
EVM同等性:今日、L1 EVMルールと同期し続ける唯一の方法は、ガバナンス(通常はセキュリティ委員会および/またはガバナンストークン)をミラーL1EVMアップグレードすることです。(EVMの更新は、年に1回約1回ハードフォークで定期的に実行されます。)ガバナンスは攻撃ベクターであるだけでなく、L1 EVMから厳密に逸脱し、ロールアップが真の長期EVMの等価性を達成するのを防ぎます。一方、ネイティブロールアップは、ガバナンスなしでL1と同期してアップグレードできます。
-
スナークガスコスト:スナークオンチェーンの確認は高価です。したがって、多くのZK-Rollupsは、コストを最小限に抑えるためにめったに落ち着きません。Snarkはオンチェーンで検証されていないため、実行前の実行を使用して検証コストを削減できます。Snarkを使用して、ブロック内の複数の呼び出しに対して実証を再帰的にバッチバッチすると、execute_gas_costは比較的低く設定できます。
-
同期的なコンポゼル性:今日、L1との同期の複合性には、同じスロットのリアルタイムの証明が必要です。超低レイテンシプルーフ(たとえば、約100ミリ秒)の実装は、ZKロールアップにとって特に困難なエンジニアリングタスクです。単一のスロット遅延状態ルートを使用して、フルスロットに縮小されたネイティブのパフォーマンスの証明遅延をリラックスさせることができます。