# EVMの並行化の道:シリアルからマルチスレッド実行へ誰もが知っているように、EVMはイーサリアムのコア実行エンジンであり、スマートコントラクトの実行を担当しています。異なるノードでスマートコントラクトが同じ実行結果を得られるようにするために、EVMはJava仮想マシン(JVM)に似た統一された仮想環境を提供します。スマートコントラクトはブロックチェーンにデプロイされる際、最初にEVMバイトコードにコンパイルされます。EVMはコントラクトを実行する際、これらのバイトコードを順番に読み取ります。各命令には対応するGasコストがあります。EVMは各命令実行時のGas消費を追跡し、その消費量は操作の複雑さによって異なります。! [並列EVMの最適化パスを説明するために、例としてReddioを取り上げます](https://img-cdn.gateio.im/social/moments-6618615055b17eadfa9646a0ea71fecd)従来のEVMは、取引を直列方式で処理し、すべての取引が単一のキューに並んで順番に実行されます。この設計はシンプルでメンテナンスが容易ですが、ユーザー数の増加とTPSの要求の高まりに伴い、直列実行のパフォーマンスのボトルネックがますます顕著になり、特にLayer 2ソリューションではより明らかです。! [並列EVMの最適化パスを説明するために、例としてReddioを取り上げます](https://img-cdn.gateio.im/social/moments-2c09413238e16d168c5f593e2923708b)EVMを除いて、イーサリアム取引実行のもう一つのコアコンポーネントはstateDBで、アカウントの状態とデータストレージを管理します。EVMは取引を実行するたびにstateDB内のデータを更新し、これらの変更は最終的にグローバルステートツリーに反映されます。シリアル実行モードで、EVMとstateDBが協力してトランザクションを処理するプロセスは次のとおりです:1. ブロック内の取引は順番に個別に処理されます2. 各取引は独立したEVMインスタンスを使用しますが、同じstateDBを共有します。3. EVMの実行中にstateDBと継続的に相互作用し、データの読み取りと書き込みを行います。4. すべての取引が処理された後、stateDBの変更をグローバルステートツリーにコミットします。! [並列EVMの最適化パスを示す例としてReddioを取り上げます](https://img-cdn.gateio.im/social/moments-404bb55ec4d21fe81783881149ac0ad6)このシリアルモードの主な問題は、複雑なスマートコントラクト取引が他の取引をブロックし、ハードウェアリソースを十分に活用できないことです。この問題を解決するために、一部のプロジェクトはEVMの並行最適化ソリューションを探求し始めました。あるLayer 2プロジェクトを例にとると、その核心的な考え方は各スレッドに一時的な状態データベースを割り当てることです(pending-stateDB):1. マルチスレッドで異なる取引を並行実行する2. 各スレッドは独立したpending-stateDBを使用して状態の変更を記録します。3. すべての取引が完了した後、pending-stateDBの変更をグローバルstateDBに同期します。! [並列EVMの最適化パスを示す例としてReddioを取り上げます](https://img-cdn.gateio.im/social/moments-fc9301b18b6299dc8f792e68961977cd)このプランは読み書き操作に特別な処理を施しました:- 読み取り操作はまずpending-stateDBをチェックし、データがない場合はグローバルstateDBを読み取ります。- 書き込み操作は一時的に pending-stateDB に保存され、グローバル stateDB は直接変更されません! [並列EVMの最適化パスを示す例としてReddioを取り上げます](https://img-cdn.gateio.im/social/moments-c62d7268de0c9ada677dc15618b1e024)状態の競合を避けるために、この提案は競合検出メカニズムを導入しました:- 異なる取引の読み書きセットに重複があるかどうかを監視する- 衝突を発見した場合、関連する取引を再実行する必要があります! [並列EVMの最適化パスを説明するためにReddioを例にとります](https://img-cdn.gateio.im/social/moments-75575d5ea4bfa2edcc71ad93d3277caf)最後に、複数の pending-stateDB からの変更がグローバル stateDB にマージされ、新しい状態ルートが生成されます。! [並列EVMの最適化パスを示す例としてReddioを取り上げます](https://img-cdn.gateio.im/social/moments-6274c33f6c958750df5cf3e53949b7fb)この並行最適化ソリューションは、低い競合負荷の下でTPSを3〜5倍向上させることができます。高い競合状況では、理論的には60倍の向上が可能です。! [Reddioを例にとり、並列EVMの最適化パスを示します](https://img-cdn.gateio.im/social/moments-4966960247a4550afa25f04eaaabbbd8)全体的に見て、EVMの並列化はイーサリアムおよびそのLayer 2の性能向上において重要な方向性です。マルチスレッドの並列実行や一時的ステートライブラリなどの技術を通じて、一貫性を保証しつつ、取引処理能力を大幅に向上させることができます。将来的には、ストレージ効率のさらなる最適化や衝突処理戦略の改善などの手段を通じて、EVMの性能をさらに向上させることができます。! [並列EVMの最適化パスを示す例としてReddioを取り上げます](https://img-cdn.gateio.im/social/moments-af377193cf86df94c08df49ba217e327)! [並列EVMの最適化パスを示す例としてReddioを取り上げます](https://img-cdn.gateio.im/social/moments-cd65f3332323ef44ea8f5f572cafd188)! [Reddioを例にとり、並列EVMの最適化パスを示します](https://img-cdn.gateio.im/social/moments-77a2eed7aad280b3028c93d8cb81f124)
EVMの並行処理の突破:マルチスレッド実行による取引処理能力の向上
EVMの並行化の道:シリアルからマルチスレッド実行へ
誰もが知っているように、EVMはイーサリアムのコア実行エンジンであり、スマートコントラクトの実行を担当しています。異なるノードでスマートコントラクトが同じ実行結果を得られるようにするために、EVMはJava仮想マシン(JVM)に似た統一された仮想環境を提供します。
スマートコントラクトはブロックチェーンにデプロイされる際、最初にEVMバイトコードにコンパイルされます。EVMはコントラクトを実行する際、これらのバイトコードを順番に読み取ります。各命令には対応するGasコストがあります。EVMは各命令実行時のGas消費を追跡し、その消費量は操作の複雑さによって異なります。
! 並列EVMの最適化パスを説明するために、例としてReddioを取り上げます
従来のEVMは、取引を直列方式で処理し、すべての取引が単一のキューに並んで順番に実行されます。この設計はシンプルでメンテナンスが容易ですが、ユーザー数の増加とTPSの要求の高まりに伴い、直列実行のパフォーマンスのボトルネックがますます顕著になり、特にLayer 2ソリューションではより明らかです。
! 並列EVMの最適化パスを説明するために、例としてReddioを取り上げます
EVMを除いて、イーサリアム取引実行のもう一つのコアコンポーネントはstateDBで、アカウントの状態とデータストレージを管理します。EVMは取引を実行するたびにstateDB内のデータを更新し、これらの変更は最終的にグローバルステートツリーに反映されます。
シリアル実行モードで、EVMとstateDBが協力してトランザクションを処理するプロセスは次のとおりです:
! 並列EVMの最適化パスを示す例としてReddioを取り上げます
このシリアルモードの主な問題は、複雑なスマートコントラクト取引が他の取引をブロックし、ハードウェアリソースを十分に活用できないことです。
この問題を解決するために、一部のプロジェクトはEVMの並行最適化ソリューションを探求し始めました。あるLayer 2プロジェクトを例にとると、その核心的な考え方は各スレッドに一時的な状態データベースを割り当てることです(pending-stateDB):
! 並列EVMの最適化パスを示す例としてReddioを取り上げます
このプランは読み書き操作に特別な処理を施しました:
! 並列EVMの最適化パスを示す例としてReddioを取り上げます
状態の競合を避けるために、この提案は競合検出メカニズムを導入しました:
! 並列EVMの最適化パスを説明するためにReddioを例にとります
最後に、複数の pending-stateDB からの変更がグローバル stateDB にマージされ、新しい状態ルートが生成されます。
! 並列EVMの最適化パスを示す例としてReddioを取り上げます
この並行最適化ソリューションは、低い競合負荷の下でTPSを3〜5倍向上させることができます。高い競合状況では、理論的には60倍の向上が可能です。
! Reddioを例にとり、並列EVMの最適化パスを示します
全体的に見て、EVMの並列化はイーサリアムおよびそのLayer 2の性能向上において重要な方向性です。マルチスレッドの並列実行や一時的ステートライブラリなどの技術を通じて、一貫性を保証しつつ、取引処理能力を大幅に向上させることができます。将来的には、ストレージ効率のさらなる最適化や衝突処理戦略の改善などの手段を通じて、EVMの性能をさらに向上させることができます。
! 並列EVMの最適化パスを示す例としてReddioを取り上げます
! 並列EVMの最適化パスを示す例としてReddioを取り上げます
! Reddioを例にとり、並列EVMの最適化パスを示します