並列EVMとは何か、並列実行はどのように機能するのか
並列EVM(イーサリアム仮想マシン)は、イーサリアムの決定論的な台帳状態と開発者互換性を維持しながら、独立したスマートコントラクト取引を複数のCPUコアで同時に処理する高性能な実行エンジンである。楽観的並行性によって従来のシングルスレッド処理を置き換えることで、MonadやSeiなどの並列EVMネットワークは、既存のSolidityコントラクトやツールを壊すことなく、ブロックチェーンのスループットを大幅に高め、混雑を緩和する。
並列EVMとは、 イーサリアム仮想マシンの実装、またはEVM互換の実行エンジンであり、独立した取引を複数のCPUコアで同時に処理する。取引には依然として決定論的な順序があり、有効な逐次EVM実行と同じ最終状態を生み出さなければならない。並列化が変えるのはノードが内部で結果を計算する方法であり、Solidityコントラクトの意味やユーザーが目にする順序付けられた台帳状態ではない。
この設計は、従来のシングルスレッド処理に見られる実行ボトルネックを対象としている。取引が無関係なアカウントやストレージスロットに触れる場合、ノードはそれらを同時に処理できる。競合する場合、エンジンは依存関係を検出し、無効な投機的結果を破棄または遅延させ、影響を受ける取引を正しい以前の状態に対して実行しなければならない。したがって、パフォーマンスはワークロードの競合とストレージ設計に大きく依存する。
並列EVMとは何か
並列EVMは、すべての取引を厳密に逐次実行するのではなく、複数の独立した取引を同時に処理できるイーサリアム互換の実行環境である。使い慣れたEVMの スマートコントラクト、 アドレス、取引フォーマット、開発者ツールを維持しながら、取引スループットを向上させることを目指している。
並列EVMの実装は、どの取引を安全に同時実行できるかを特定するために異なる方法を用いることができる。実行中に競合を検出するものもあれば、スケジューリング前に各取引がブロックチェーン状態のどの部分にアクセスするかを分析するものもある。したがって、並列EVMは単一の普遍的な標準ではなく実行アプローチを指し、ネットワークはコンセンサス、手数料、ファイナリティ、ハードウェア要件、 イーサリアムとの互換性において依然として異なり得る。
並列EVMはどのように機能するのか
並列EVMは、順序付けられたブロックの取引を複数のワーカーに割り当て、各取引が読み書きする状態を追跡することで機能する。楽観的実行では、ワーカーは当初、取引が同時に実行できると仮定する。エンジンが、先行する取引が後続の取引で使用される入力を変更していないことを検証するまで、その出力は暫定的なものにとどまる。競合しない結果は、ブロックの元の順序に従ってコミットできる。
後続の取引が古いデータを読み取った場合や書き込みが競合する場合、その暫定出力は拒否され、必要な以前の状態が利用可能になった後に取引が再実行される。一部のエンジンは、再実行中に署名、デコード済みバイトコード、キャッシュ済み状態、その他の作業を再利用できる。逐次フォールバックは、激しい競合下でも進行を維持する。並列スケジューリングが異なる状態ルートを生み出さないよう、すべてのバリデータは決定論的な競合ルールとコミットルールを適用しなければならない。
並列EVMの主な利点とユースケースは何か
並列EVMの設計は、ブロックに別々の状態を操作する多数の取引が含まれる場合に最も効果を発揮する。Solidity開発者やユーザーに不慣れな環境を強いることなく、ノードの実行能力を高めることを目指している。
1. 複数のコアが独立した作業を処理できる。 異なるアカウントやストレージスロットに触れる送金やコントラクト呼び出しは同時に実行でき、単一の実行スレッドよりも最新のバリデータハードウェアをより活用できる。
2. EVMアプリケーションは使い慣れたツールを維持できる。 互換ネットワークは、アプリケーション層の下で実行を変えつつ、Solidityコントラクト、イーサリアム形式のウォレット、JSON-RPCインターフェース、開発フレームワークをサポートできる。
3. 大量処理アプリケーションは実行余力をより多く得る。 分散状態を持つ決済、ゲーム、取引所、ソーシャルアプリケーションは、その取引が共有状態の競合を比較的少数しか生み出さない場合、より大きなブロックを処理できる可能性がある。
4. 最適化はコントラクトに対して透過的に保つことができる。 Monadのような楽観的エンジンは、取引が逐次実行されたかのように結果をコミットするため、開発者は並行性を有効にするためだけに通常のコントラクトを手動で分割する必要がない。
並列実行エンジンの例は何か
プロジェクトは、異なる仮想マシンと状態モデルで並列実行を用いている。EVM以外のシステムは依然として有用な参考例である。なぜなら、いくつかの楽観的並行性技術はEVMの外で先に開発または展開されたからである。
- Monadの楽観的並列EVM。 Monadはイーサリアム互換の取引を同時に実行し、その入力を追跡し、先行してコミットされた結果が使用したデータを変更した場合に取引を再実行する。
- Seiの並列化エンジン。 Seiは、楽観的並行性制御、推定アクセスセット、ワーカーベースの実行、競合検出、決定論的な再処理、およびEVM環境周辺の逐次フォールバックを用いる。
- Aptos Block-STM。 Block-STMは、ソフトウェアトランザクショナルメモリとマルチバージョン状態に基づく並列実行エンジンであり、順序付けられた ブロックチェーン取引に対する透過的な楽観的実行を示す。
- Solana Sealevel。 SolanaはEVMではないが、そのランタイムは、取引がアカウントアクセスを宣言することで競合しない作業を並行してスケジュールできる別のモデルを示している。
並列EVMの限界とリスクは何か
並列実行は、アプリケーション状態に固有の依存関係を取り除くことはできない。また、スケジューリング、検証、キャッシュ、データベース、再実行の複雑さを追加し、これらはノード間で一貫して実装されなければならない。
1. 競合する状態は速度向上を減らす。 同じ流動性プール、グローバルカウンター、オラクル値、または人気のあるコントラクトスロットと相互作用する取引は、競合し、直列化または繰り返し実行を必要とする場合がある。
2. 投機は計算を浪費する可能性がある。 楽観的なワーカーは、古い入力を用いて取引を完了しても結果を破棄するだけになることがあり、競合率が高い場合にCPUとメモリの作業を増やす。
3. 実装の複雑さはバグの範囲を広げる。 スケジューラ、マルチバージョンストレージ、競合検出、キャッシュ、コミットロジックは、リバート、ガス会計、呼び出し、エッジケースにわたって正確なEVMセマンティクスを再現しなければならない。
4. ベンチマークは実際のワークロードを表さない場合がある。 独立した送金による見出しのスループットは、多くのユーザーが少数の共有ストレージ場所を変更しようと競合するアプリケーションの性能を過大評価する可能性がある。
5. 高い容量はノード要件を増やす可能性がある。 ネットワークは、性能目標が独立した検証を非現実的にしないよう、CPU、メモリ、ストレージ帯域幅、データベース設計、状態増加のバランスを取らなければならない。
並列EVMはスマートコントラクトの結果を変えるのか
正しく実装された並列EVMは、ネットワークの取引順序によって定義される最終結果を変えない。並列作業は暫定的であり、エンジンは取引をコミットまたは再実行して、最終状態が必要な逐次セマンティクスと一致するようにする。ユーザーはより高い容量や低い混雑を経験するかもしれないが、コントラクトは依然として同じ順序付けられた効果を観測するはずである。この保証により、単に多数のスレッドを実行するよりも、決定論的な競合処理がより重要になる。
関連概念
3. ガスとは何か
4. スケーラビリティとは何か
さらに読む
1. イーサリアム仮想マシン:スマートコントラクトと分散型アプリケーションを支える仕組み
2. スマートコントラクトとは何か? ブロックチェーン世界の基盤
3. イーサリアムのガス料金を解説:ETHガスとは何か、Gweiはどう機能するのか?
よくある質問
並列EVMは新しいスマートコントラクト言語なのか?
いいえ。通常の目的は、既存のEVMバイトコードを実行し、Solidityツールをサポートしながら、ノードソフトウェアがプロセッサコア間で取引を内部的にスケジュールおよび検証する方法を変えることである。
同じコントラクトに触れる2つの取引を並行して実行できるか?
並列取引が競合するとどうなるか?
並列EVM互換性はイーサリアム級のセキュリティを保証するか?
アカウントをお持ちでないですか?
今すぐアカウントを開設して、暗号資産の取引を始めよう