Arbitrum Nitro ホワイトペーパー速読:どのようにEVMとの互換性を高め、取引コストを削減するか?
編訳:Karen,Foresight News
Offchain Labsは最新のArbitrum Nitroホワイトペーパーで、Arbitrum Nitroを第二世代のOptimistic Rollupと見なし、従来のRollupに比べて、Nitroはより高いスループット、より迅速な最終確定性、より効果的な争議解決策を提供できるとしています。
Arbitrum Nitro技術の核心は、新しい証明器(prover)であり、WASMコード上でArbitrumのインタラクティブな詐欺証明を行うことができます。つまり、L2 ArbitrumエンジンはWASM上で動作し、これまでカスタム設計されていたAVM(Arbitrum EVM)アーキテクチャを置き換え、標準の言語とツールを使用して構築およびコンパイルできます。
Gethコアを直接ArbitrumにコンパイルすることがNitroの最もクールな点であり、Gethは実際にEthereum標準のEVMエンジンを定義しています。したがって、本質的にNitroはEthereum上のLayer2でGethを実行し、WASMにコンパイルされたGethコアエンジンに対する詐欺を証明できます。
Arbitrumは以前、Nitroには最適化されたバッチ処理とデータ圧縮コンポーネントがあり、Arbitrumの取引コストをさらに削減できること、Ethereum L1 Gasとの互換性があること、さらに詐欺証明、シーケンサー、トークンブリッジもNitroのコンポーネントであると述べています。NitroはWASMやGethなどの標準技術の上に構築されているため、EVMとの互換性が高くなっています。ホワイトペーパーによれば、改良されたNitroはArbitrum Oneに比べて効率が高く、遅延が少なく、インセンティブの互換性も向上しています。
Arbitrumがこれらの特性を実現するための設計原則には以下が含まれます:
- トランザクションの順序付けと決定的実行を分離する;
- 既存のEthereumシミュレーションソフトウェアと拡張を組み合わせ、クロスチェーン機能を実現する;
- 実行と証明をそれぞれコンパイルする;
- インタラクティブな詐欺証明に基づくOptimistic Rollupプロトコルを使用して、トランザクション結果をLayer1に配置する。
一、順序付けと決定的実行
Nitroは、提出されたトランザクションを2つの段階で処理します。シーケンサー(Sequencer)がトランザクションを順序付け、リアルタイムストリームと圧縮データバッチとしてLayer1チェーンに公開します。これらのトランザクションは、決定的状態遷移関数によって一度に1つの順序付けられたトランザクションとして処理され、その関数はチェーンの状態を更新し、Layer2ブロックを生成します。これらのブロックは後でLayer1チェーンに決済されます。
具体的には、順序付けに関して、シーケンサーは信頼され、誠実に受信したトランザクションを順番に並べます。現在、彼らは2つの方法でトランザクションの順序を公開しています。最初に、シーケンサーが特定の順序でトランザクションの記録を約束することを示すリアルタイムストリームとして順序付けられたトランザクションを公開します。次に、シーケンサーはトランザクションのバッチを収集した後、コストを削減するために一般的なアルゴリズムbrotliを使用して圧縮し、その結果をNitroチェーンのInboxコントラクト(L1 Ethereum上で実行)に渡します。一度シーケンサーからInboxへのトランザクションがEthereum上で最終性を持つと、Nitroチェーンのトランザクション順序は最終的なものとなります。
現在、シーケンサーはOffchain Labsによって運営されている集中型コンポーネントであり、将来的には公平な分散型順序付けプロトコルに移行し、委員会ベースのシーケンサーに移行する予定です。
決定的実行に関しては、受信したトランザクションを順序付けた後、Nitroチェーンはチェーンの状態遷移関数(STF)を使用して処理し、更新された状態を出力し、Layer2ブロックを生成します。
二、ソフトウェアアーキテクチャ:Gethがコア
NitroがGethを組み込むことは、Nitroの第二の重要な設計理念です。GethはEthereumノードソフトウェアgo-ethereumを指します。Nitroのコア実行と状態維持機能は、オープンソースのgo-ethereum(geth)パッケージコードによって処理され、Ethereumとの高い互換性を確保しています。
Nitroノードを構成するソフトウェアは、基盤層(Gethコア、EVMコントラクトの実行とEthereum状態を維持するデータ構造をシミュレート)、中間層(ArbOS)、および最上層の3つの主要な層に組み込まれていると考えられます。ここで、ArbOSはLayer2チェーンを管理するために必要な機能を実装したソフトウェア層であり、記帳機能、NitroとLayer1 Ethereum間の双方向安全クロスチェーン呼び出し、Layer2特有の費用追跡と収集をサポートします。
クロスチェーンインタラクションに関して、Nitroのクロスチェーンメッセージング機能はトークンブリッジの作成にも使用でき、これはEthereumとNitroチェーン間で資産を効率的に移転することを可能にするアプリケーションです。Offchain Labsチームは、代替トークンの入金または引き出し機能を提供する非公式なトークンブリッジを実装し、公開しました。また、新しい改良されたバッチ処理と圧縮システムもL1コストを最小限に抑えることができます。
最上層はノードソフトウェアで構成され、クライアントからの接続と受信したRPCリクエストを処理し、Ethereumと互換性のあるブロックチェーンノードを操作するために必要な他の機能を提供します。
三、実行と証明の分離
Nitroは、実行と証明に同じソースコードを使用しますが、これらの2つのケースに対して異なるターゲットにコンパイルします。Nitroノードソフトウェアの実行をコンパイルする際には、通常のGoコンパイラを使用してターゲットアーキテクチャ用のネイティブコードを生成します。もちろん、異なるノードデプロイメントによって異なる場合があります。
さらに、状態遷移関数部分のコードはGoコンパイラによってWebAssembly(WASM)にコンパイルされます。これは型付きで移植可能な機械コードフォーマットです。その後、WASMコードは簡単な変換と修正を経て、WAVMと呼ばれるフォーマットに変換されます。
ホワイトペーパーによれば、WAVMはWASMと3つの主要な点で異なります。具体的には、WASMの一部のGoコンパイラが生成しなかった特徴を削除し、WASMのいくつかの機能を制限し、浮動小数点命令を削除し、ネストされた制御フローを含まないようにし、ブロックチェーン環境とのインタラクションを実現するためにいくつかのオペコードを追加しています。
計算状態遷移関数の正しい結果に対して異議がある場合は、WAVMコードのインタラクティブな詐欺証明プロトコルを参照して解決します。
四、インタラクティブな詐欺証明を持つOptimistic Rollup
最初のArbitrum設計に基づいて、Nitroは改良されたOptimistic Rollupプロトコルを使用しており、このプロトコルは最適化されたインタラクティブな詐欺証明プロトコルを使用しています。
このRollupプロトコルは、NitroがLayer2チェーンの状態とLayer1 Ethereum上の関連データを確認するための方法です。Layer2ユーザーは通常、L1の確認を待たず、決定的状態遷移関数に依存し、この関数は記録されたトランザクションシーケンスからトランザクション結果を導き出すことを可能にします。
このRollupプロトコルは、Rollup Blocks(RBlock)チェーンを生成します。Layer2ブロックとは異なり、1つのRollup Blockは通常、一連のLayer2ブロックをカプセル化します。したがって、RBlockの数はL2ブロックよりもはるかに少なくなります。最初のRBlockは、ある当事者がRBlockのデータが正しいと主張することを表します。最終的に、このような各主張はプロトコルによって確認されるか、拒否されてRBlockチェーンから削除されます。この確認されたRBlockのセットは、創世RBlockから始まるチェーンを形成します。