要するに、この研究論文は、Solana、Sei、およびMonadという3つの関連例を使用して、ブロックチェーンの並列設計アーキテクチャについての概要を提供しています。楽観的および決定論的並列化の違いを強調し、これらのチェーン間での状態とメモリアクセスの微妙なニュアンスを検討しています。
1837年、コンピューターサイエンティストで数学者のチャールズ・バベッジが「解析エンジン、「並列計算の理論的基盤を築いた。今日、並列化は、ブロックチェーンが処理、効率、およびスループットの限界を押し広げようとする中で、暗号世界の中心的テーマとなっています。
平行宇宙
並列計算は、計算を直列で実行するのではなく、多くの計算やプロセスを同時に実行できるようにする。並列コンピューティングとは、共有メモリを介して通信する複数のプロセッサによって実行できるように、より大きな問題をより小さな独立した部分に分割することを指す。並列システムには、効率とスピードの向上、スケーラビリティ、信頼性と耐障害性の向上、リソースの効率的な利用、非常に大きなデータセットの処理能力などの利点がある。
ただし、並列化の効果は、基礎となるアーキテクチャと実装の具体的な内容に依存することを認識することが重要です。ブロックチェーンの主要なボトルネックは、暗号関数(ハッシュ関数、署名、楕円曲線など)とメモリ/状態アクセスです。ブロックチェーンにおいて、効率的な並列システムを設計する際の重要な要素の1つは、状態へのアクセスの微妙なニュアンスにあります。状態アクセスとは、トランザクションがブロックチェーンの状態(ストレージ、スマートコントラクト、口座残高など)に読み書きする能力を指します。効果的で高性能な並列化されたブロックチェーンを実現するためには、状態アクセスを最適化する必要があります。
現在、並列化されたブロックチェーンの状態アクセスを最適化するための2つの考え方があります: 決定論的並列化と楽観的並列化。 決定論的並列化では、コードは明示的に宣言する必要があります。ブロックチェーンの状態のどの部分がアクセスおよび変更されるかを事前に宣言します。これにより、システムはトランザクションが事前に競合せずに並列で処理できるかどうかを判断できます。決定論的並列化は予測可能性と効率性を可能にします(特にトランザクションがほとんど独立している場合)。ただし、これにより開発者にとってはより複雑さが増します。
楽観的並列化は、コードが状態アクセスを事前に宣言する必要がなく、競合がないかのようにトランザクションを並列で処理します。競合が発生した場合、楽観的並列化は再実行、再処理、または競合するトランザクションを直列で実行します。楽観的並列化は開発者により柔軟性をもたらしますが、競合時に再実行が必要であり、トランザクションが競合していない場合に効率的です。これらのアプローチのどちらが優れているかについて正解はありません。単に並列化における2つの異なる(かつ有効な)アプローチです。
このシリーズの第1部では、まず、非暗号並列システムの基本をいくつか探求し、その後、ブロックチェーンの並列実行のための設計空間に焦点を当て、3つの主要領域に焦点を当てます。
先ほど読んだ並列計算が可能にするものや並列システムの利点について考えると、なぜ近年並列計算の採用が急速に進んでいるか理解するのは簡単です。過去数十年間における並列コンピューティングの採用拡大は、多くの画期的な進展をもたらしています。
並列実行環境を実装した3つのブロックチェーンを検証しましょう。まず、Solanaを解説し、次にMonadとSeiの2つのEVMベースのチェーンを解説します。
高いレベルで、Solanaの設計思想は、ブロックチェーンの革新はハードウェアの進化と共に進化すべきだというものです。ハードウェアが時間とともに改良されるにつれて、Mooreの法則を通じて、Solanaは性能とスケーラビリティの向上を受けるように設計されています。Solana共同創業者アナトーリ・ヤコヴェンコ最初に設計されましたSolanaの並列化アーキテクチャ5年以上前に、そして今日、並列処理はブロックチェーン設計の原則として急速に広がっています。
Solanaは、Anatolyが組み込みシステムでの過去の経験から来ている決定論的並列化を使用しています。そこでは通常、すべての状態を前もって宣言します。これにより、CPUはすべての依存関係を知ることができ、メモリの必要な部分を事前に取得できます。その結果、最適化されたシステムの実行が可能になりますが、再び、開発者に前もって追加作業を行う必要があります。Solanaでは、プログラムのすべてのメモリ依存関係が必要であり、構築されたトランザクション(すなわち、アクセスリスト)に記載されており、ランタイムは複数のトランザクションを効率的に並列実行するためにスケジュールを立てることができます。
Solanaのアーキテクチャの次の主要コンポーネントは、Solanaの並列スマートコントラクトランタイムであるSealevel VMです。Sealevelは、バリデーターのコア数に基づいて、複数のコントラクトとトランザクションを並行して処理することをネイティブにサポートしています。ブロックチェーンのバリデーターは、トランザクションの検証と検証、新しいブロックの提案、ブロックチェーンの整合性とセキュリティの維持を担当するネットワーク参加者です。トランザクションは、どのアカウントを読み書きロックする必要があるかを事前に宣言するため、Solanaスケジューラーは、どのトランザクションを同時に実行できるかを判断できます。このため、検証に関しては、「ブロックプロデューサー」またはリーダーは、何千もの保留中のトランザクションをソートし、重複しないトランザクションを並行してスケジュールすることができます。
Solanaの最終設計要素は「パイプライン処理」です。 パイプライン処理は、データを一連のステップで処理する必要がある場合に発生し、異なるハードウェアがそれぞれ担当します。 ここでの主要なアイデアは、シリアルに実行する必要があるデータを取り、パイプライン処理を使用して並列化することです。 これらのパイプラインは並行して実行でき、各パイプライン段階で異なるトランザクションバッチを処理できます。
これらの最適化により、Sealevelはハードウェアの能力を利用して、独立したトランザクションを同時に組織化および実行し、単一のプログラムで複数のデータポイントを一度に処理することができます。 SealevelはprogramIDで命令を並べ替え、関連するすべてのアカウントで同じ命令を並列に実行します。
これらの革新を考慮すると、Solanaは意図的に並列化をサポートするよう設計されていることがわかります。
Seiは、デジタルアセットの交換に特化した一般目的のオープンソースLayer 1ブロックチェーンです。Sei V2は楽観的並列化を活用しており、その結果、確定的な対応策よりも開発者向けです。楽観的並列化では、スマートコントラクトを事前にリソースを宣言する必要なく、よりシームレスにかつ同時に実行できます。これは、チェーンがすべてのトランザクションを楽観的に並列実行することを意味します。ただし、競合が発生する場合(つまり、複数のトランザクションが同じ状態にアクセスする場合)、ブロックチェーンはそれぞれの競合するトランザクションが影響を与える特定のストレージコンポーネントを追跡します。
Seiのブロックチェーンは、「楽観的同時実行制御(OCC)」を使用して取引を実行するアプローチを取っています。複数の取引がシステム内で同時に有効な状態にあるとき、並行取引処理が発生します。この取引アプローチには、実行と検証の2つのフェーズがあります。
実行フェーズでは、トランザクションは楽観的に処理され、すべての読み取り/書き込みは一時的にトランザクション固有のストアに格納されます。その後、すべてのトランザクションは検証フェーズに入り、一時ストア操作の情報が前のトランザクションによって行われた状態変更と照合されます。トランザクションが独立している場合、トランザクションは並行して実行されます。トランザクションが他のトランザクションによって変更されたデータを読み取る場合、これにより競合が発生します。Seiの並列システムは、トランザクションの読み取りセットとマルチバージョンストア内の最新の状態変更を比較して、各競合を特定します(これらはトランザクションの順序でインデックス化されています)。Seiは、競合が発生したインスタンスを再実行および再検証します。これは、競合を修正するために実行、検証、および再実行を含む反復プロセスです。以下の図は、競合が発生した場合のトランザクションに対するSeiのアプローチを示しています。
ソース: https://blog.sei.io/sei-v2-the-first-parallelized-evm/
Seiの実装により、ガス手数料が安くなり、EVM開発者にとってより広い設計空間が生まれます。歴史的には、EVM環境は50 TPS未満に制限されており、これにより開発者はアンチパターンに従うアプリケーションを作成する必要がありました。Sei V2では、DeFi、DePIN、およびゲームなど、通常高性能と低手数料が必要なセクターにアプローチすることが可能になります。
Monadは、完全なバイトコード互換性を備えた並列EVMレイヤー1を構築しています。Monadをユニークにしているのは、並列化エンジンだけでなく、最適化するためにネット下に構築したものです。Monadは、パイプライン処理、非同期I/O、コンセンサスと実行の分離を含むいくつかの主要な機能を取り入れることで、独自のアプローチを取っています。MonadDB.
Monadの設計における重要な革新点は、パイプラインわずかなオフセットを持つ。 オフセットにより、複数のインスタンスを同時に実行することで、より多くのプロセスを並列化することが可能になります。 したがって、パイプライン処理は、状態アクセスのパイプライン処理、トランザクション実行のパイプライン処理、合意と実行内のパイプライン処理、および合意メカニズム自体内のパイプライン処理など、多くの機能を最適化するために使用されます。
次に、Monadの並列化部分にダブルクリックします。 Monadでは、トランザクションはブロック内で直線状に順序付けられていますが、この最終状態に到達するために並列実行を活用して速く到達することが目標です。 Monadは、実行エンジンの設計に楽観的な並列化アルゴリズムを使用しています。 Monadのエンジンはトランザクションを同時に処理し、その後、トランザクションが一つずつ実行された場合と同じ結果になることを確認するための分析を行います。 衝突がある場合は、再実行する必要があります。 ここでの並列実行は比較的単純なアルゴリズムですが、Monadの他の主要な革新と組み合わせることがこの手法を新しいものにしています。 ここで注意すべき一点は、再実行が発生しても、ほとんどの場合、無効なトランザクションに必要な入力がキャッシュに残っているため、単純なキャッシュの検索になります。 再実行は成功することが保証されています。なぜなら、以前のトランザクションはすでにブロック内で実行されているからです。
Monadは、実行とコンセンサスを分離することでパフォーマンスを向上させ、遅延実行に加えてSolanaやSeiと同様のアプローチを取っています。ここでのアイデアは、実行の条件を緩和してコンセンサスが完了するまでに実行が完了する必要がないとすることで、両方を並行して実行できるようにし、両方に追加の時間をもたらすことです。もちろん、Monadはこの条件を処理するために確定的アルゴリズムを使用しており、これにより、どちらかが追い越してしまい、追いつく可能性がない状況が生じることを防ぎます。
この投稿の冒頭で述べたように、ステートアクセスはブロックチェーンの典型的なパフォーマンスボトルネックの1つです。ステートアクセスおよびメモリに関する設計選択は、最終的に特定の並列システムの実装が実際にパフォーマンスを向上させるかどうかを決定します。ここでは、Solana、Sei、およびMonadが取る異なるアプローチを解説し比較します。
Solanaステートアクセス:AccountsDB / Cloudbreak
Solanaは、水平スケーリングを利用して、複数のSSDデバイスに状態データを分散および管理します。多くのブロックチェーンは現在、大量の同時読み取りおよび状態データの書き込みを制限する一般的なデータベース(例:LevelDB)を使用しています。これを回避するために、Solanaは独自のカスタムaccountsDBを構築しました。クラウドブレイク.
Cloudbreakは、本質的に高速であるRAMにのみ頼るのではなく、I/O操作全体での並行アクセスに設計されています。I/O操作(入力/出力)とは、データを外部ソース(ディスク、ネットワーク、周辺機器など)から読み取ることまたは書き込むことを指します。最初は、Cloudbreakは公開鍵を残高とデータを保持するアカウントにマップするために、RAM内のインデックスを使用していました。しかし、この論文の執筆時点およびバージョン1.9では、そのインデックスがRAMからSSDに移動されました。この変更により、Cloudbreakはキュー内で32の(I/O)操作を同時に処理できるようになり、複数のSSD間でスループットが向上します。その結果、アカウントや取引などのブロックチェーンデータは、メモリマップファイルを使用してRAMにあるかのように効率的にアクセスできます。以下の図は、説明的なメモリ階層を表しています。RAMは高速ですが、SSDよりも容量が少なく、一般的に高価です。
説明的なメモリ階層図
水平方向にスケーリングし、状態データを複数のデバイスに分散させることで、CloudbreakはSolanaエコシステム内でのレイテンシーを低減し、効率を向上させ、分散化、ネットワークの弾力性を高めます。
Sei State Access: SeiDB
Seiはそのストレージを再デザインしました、SeiDB,複数の問題に対処するためには、書き込み増幅(データ構造を維持するために必要なメタデータの量、小さい方がより良い)、状態膨張、遅い操作、および時間の経過とともに性能の低下などがあります。新しいリデザインは、現在、ステートストアとステートコミットの2つのコンポーネントに分かれています。データへの変更を記録および検証することはステートコミットによって処理され、任意の時点ですべてのデータを管理するデータベースはステートストレージ(SS)によって処理されています。
In Sei V2、State Commitment はメモリマップされた IAVLツリーアーキテクチャ(MemIAVL)メモリマップドIAVLツリーは、状態のストレージと状態の同期時間を削減し、フルノードの実行を容易にします。メモリマップドIAVLツリーは、ディスク上で3つのファイル(kv、branch、leaves)として表現されます。したがって、追跡する必要のあるメタデータが少なくなり、状態のストレージが50%以上削減されます。新しいMemIAVL構造は、データ構造を維持するために必要なメタデータを削減するため、書き込み増幅因子を削減します。
更新されたSeiDBは、状態ストレージレイヤーに対する柔軟なデータベースバックエンドサポートを可能にします。Seiは、異なるノードオペレーターが多様な要件とストレージニーズを持つと考えています。そのため、SSは異なるバックエンドを収容できるよう設計されており、オペレーターにPebbleDB、RocksDB、SQLiteなどの自由と柔軟性を提供しています。
State Access: MonadDB
Monadの状態アクセスにはいくつかの重要なニュアンスがあります。まず、ほとんどのEthereumクライアントは、B-Treeデータベース(つまり、LMDB)またはログ構造マージツリーデータベース(つまり、RocksDB、LevelDB)の2種類のデータベースを活用しています。これらはいずれも、ブロックチェーン向けに明示的に設計されたものではない汎用データ構造です。さらに、これらのデータベースは、Linuxテクノロジーの最新の進歩、特に非同期操作とI/Oの最適化を活用していません。最後に、Ethereum自体が状態を管理しています。Patricia Merkle Trie, これは暗号化、検証、および証明を専門とするものです。主な問題は、クライアントがこの特定のパトリシア・マークル木をより汎用的なデータベース(すなわちBツリー/LSM)に統合する必要があり、過剰なディスクアクセスなどの大きなパフォーマンスの欠点があります。
上記すべては、Monadが独自に構築したMonadDBデータベースを作成することを決定した理由の舞台を設定するのに役立ちます。これは、ブロックチェーンデータと状態アクセスをより効率的に処理するために特別に設計されています。MonadDBの主な機能には、並列アクセスデータベース、Merkle Trie Dataに最適化されたカスタムデータベース、標準RAM使用量よりも効率的な状態アクセス、分散化、スケーラビリティが含まれています。
MonadDBは明示的にブロックチェーン向けに設計されており、一般的なデータベースを利用するよりもパフォーマンスが向上しています。カスタムMonadDBは、Merkle trieタイプのデータを効率的に管理するために特化しており、同時に複数のtrieノードに並列アクセスすることが可能です。上記にリストされている一部の一般的なデータベースと比較して、MonadDBでの単一の読み取りのコストは同じですが、ここでの重要なポイントは、MonadDBが多くの読み取りを並列で実行できることであり、これにより大幅な高速化が実現されます。
MonadDBは、並列アクセスデータベースに同時に状態アクセスを可能にします。Monadはこのデータベースをゼロから構築しているため、最新のLinuxカーネル技術とSSDのフルパワーを活用することができます。非同期I/Oを使用すると、トランザクションがディスクから状態を読み取る必要がある場合、その操作が完了を待つことなく進行するようになります。代わりに、読み取りを開始し、同時に他のトランザクションの処理を続行するべきです。これが非同期I/OがMonadDBの処理を大幅に高速化する方法です。Monadは、SSDの使用を最適化し、過剰なRAMへの依存を減らすことで、ハードウェアからより優れたパフォーマンスを引き出すことができます。これにより、分散化とスケーラビリティとの一致がさらに利点として得られます。
SolanaとSeiとMonadの比較の概要
結論として、Solana、Sei、およびMonadのレンズを通してブロックチェーンにおける並列化を探求することは、異なるアーキテクチャとアプローチがパフォーマンスとスケーラビリティを向上させる方法について包括的な理解を提供します。Solanaの確定的並列化は、状態アクセスを事前に宣言することに重点を置いており、予測可能性と効率性を提供し、高スループットを必要とするアプリケーションにとって強力な選択肢となっています。一方、Seiの楽観的並列化アプローチは、開発者の柔軟性を重視し、トランザクションの競合がまれな環境に適しています。楽観的並列化とカスタムビルトのMonadDBを組み合わせたMonadは、最新の技術革新を活用して状態アクセスとパフォーマンスを最適化する革新的なソリューションを提供しています。
各ブロックチェーンは、それぞれ独自のトレードオフを持ちながら、並列化の課題に取り組む独自のアプローチを示しています。Solanaの設計はハードウェアの利用とスループットの最大化を目指しており、Seiは開発プロセスの簡素化に焦点を当て、Monadはブロックチェーンデータのための特注データベースソリューションを重視しています。これらの違いは、ブロックチェーンエコシステムの多様性と、アプリケーションの特定のニーズに基づいて適切なプラットフォームを選択する重要性を強調しています。
ブロックチェーン空間が進化し続ける中、Solana、Monad、およびSeiによって示された並列化技術の進歩は間違いなくさらなるイノベーションをもたらすでしょう。より効率的でスケーラブルかつ開発者向けのフレンドリーなブロックチェーンへの道のりは続いており、これらのプラットフォームから得られた教訓がブロックチェーン技術の未来を形作る上で重要な役割を果たすことでしょう。
このシリーズの第2部では、これらの並行設計システムに関連する経済的影響とトレードオフについて詳しく説明します。
要するに、この研究論文は、Solana、Sei、およびMonadという3つの関連例を使用して、ブロックチェーンの並列設計アーキテクチャについての概要を提供しています。楽観的および決定論的並列化の違いを強調し、これらのチェーン間での状態とメモリアクセスの微妙なニュアンスを検討しています。
1837年、コンピューターサイエンティストで数学者のチャールズ・バベッジが「解析エンジン、「並列計算の理論的基盤を築いた。今日、並列化は、ブロックチェーンが処理、効率、およびスループットの限界を押し広げようとする中で、暗号世界の中心的テーマとなっています。
平行宇宙
並列計算は、計算を直列で実行するのではなく、多くの計算やプロセスを同時に実行できるようにする。並列コンピューティングとは、共有メモリを介して通信する複数のプロセッサによって実行できるように、より大きな問題をより小さな独立した部分に分割することを指す。並列システムには、効率とスピードの向上、スケーラビリティ、信頼性と耐障害性の向上、リソースの効率的な利用、非常に大きなデータセットの処理能力などの利点がある。
ただし、並列化の効果は、基礎となるアーキテクチャと実装の具体的な内容に依存することを認識することが重要です。ブロックチェーンの主要なボトルネックは、暗号関数(ハッシュ関数、署名、楕円曲線など)とメモリ/状態アクセスです。ブロックチェーンにおいて、効率的な並列システムを設計する際の重要な要素の1つは、状態へのアクセスの微妙なニュアンスにあります。状態アクセスとは、トランザクションがブロックチェーンの状態(ストレージ、スマートコントラクト、口座残高など)に読み書きする能力を指します。効果的で高性能な並列化されたブロックチェーンを実現するためには、状態アクセスを最適化する必要があります。
現在、並列化されたブロックチェーンの状態アクセスを最適化するための2つの考え方があります: 決定論的並列化と楽観的並列化。 決定論的並列化では、コードは明示的に宣言する必要があります。ブロックチェーンの状態のどの部分がアクセスおよび変更されるかを事前に宣言します。これにより、システムはトランザクションが事前に競合せずに並列で処理できるかどうかを判断できます。決定論的並列化は予測可能性と効率性を可能にします(特にトランザクションがほとんど独立している場合)。ただし、これにより開発者にとってはより複雑さが増します。
楽観的並列化は、コードが状態アクセスを事前に宣言する必要がなく、競合がないかのようにトランザクションを並列で処理します。競合が発生した場合、楽観的並列化は再実行、再処理、または競合するトランザクションを直列で実行します。楽観的並列化は開発者により柔軟性をもたらしますが、競合時に再実行が必要であり、トランザクションが競合していない場合に効率的です。これらのアプローチのどちらが優れているかについて正解はありません。単に並列化における2つの異なる(かつ有効な)アプローチです。
このシリーズの第1部では、まず、非暗号並列システムの基本をいくつか探求し、その後、ブロックチェーンの並列実行のための設計空間に焦点を当て、3つの主要領域に焦点を当てます。
先ほど読んだ並列計算が可能にするものや並列システムの利点について考えると、なぜ近年並列計算の採用が急速に進んでいるか理解するのは簡単です。過去数十年間における並列コンピューティングの採用拡大は、多くの画期的な進展をもたらしています。
並列実行環境を実装した3つのブロックチェーンを検証しましょう。まず、Solanaを解説し、次にMonadとSeiの2つのEVMベースのチェーンを解説します。
高いレベルで、Solanaの設計思想は、ブロックチェーンの革新はハードウェアの進化と共に進化すべきだというものです。ハードウェアが時間とともに改良されるにつれて、Mooreの法則を通じて、Solanaは性能とスケーラビリティの向上を受けるように設計されています。Solana共同創業者アナトーリ・ヤコヴェンコ最初に設計されましたSolanaの並列化アーキテクチャ5年以上前に、そして今日、並列処理はブロックチェーン設計の原則として急速に広がっています。
Solanaは、Anatolyが組み込みシステムでの過去の経験から来ている決定論的並列化を使用しています。そこでは通常、すべての状態を前もって宣言します。これにより、CPUはすべての依存関係を知ることができ、メモリの必要な部分を事前に取得できます。その結果、最適化されたシステムの実行が可能になりますが、再び、開発者に前もって追加作業を行う必要があります。Solanaでは、プログラムのすべてのメモリ依存関係が必要であり、構築されたトランザクション(すなわち、アクセスリスト)に記載されており、ランタイムは複数のトランザクションを効率的に並列実行するためにスケジュールを立てることができます。
Solanaのアーキテクチャの次の主要コンポーネントは、Solanaの並列スマートコントラクトランタイムであるSealevel VMです。Sealevelは、バリデーターのコア数に基づいて、複数のコントラクトとトランザクションを並行して処理することをネイティブにサポートしています。ブロックチェーンのバリデーターは、トランザクションの検証と検証、新しいブロックの提案、ブロックチェーンの整合性とセキュリティの維持を担当するネットワーク参加者です。トランザクションは、どのアカウントを読み書きロックする必要があるかを事前に宣言するため、Solanaスケジューラーは、どのトランザクションを同時に実行できるかを判断できます。このため、検証に関しては、「ブロックプロデューサー」またはリーダーは、何千もの保留中のトランザクションをソートし、重複しないトランザクションを並行してスケジュールすることができます。
Solanaの最終設計要素は「パイプライン処理」です。 パイプライン処理は、データを一連のステップで処理する必要がある場合に発生し、異なるハードウェアがそれぞれ担当します。 ここでの主要なアイデアは、シリアルに実行する必要があるデータを取り、パイプライン処理を使用して並列化することです。 これらのパイプラインは並行して実行でき、各パイプライン段階で異なるトランザクションバッチを処理できます。
これらの最適化により、Sealevelはハードウェアの能力を利用して、独立したトランザクションを同時に組織化および実行し、単一のプログラムで複数のデータポイントを一度に処理することができます。 SealevelはprogramIDで命令を並べ替え、関連するすべてのアカウントで同じ命令を並列に実行します。
これらの革新を考慮すると、Solanaは意図的に並列化をサポートするよう設計されていることがわかります。
Seiは、デジタルアセットの交換に特化した一般目的のオープンソースLayer 1ブロックチェーンです。Sei V2は楽観的並列化を活用しており、その結果、確定的な対応策よりも開発者向けです。楽観的並列化では、スマートコントラクトを事前にリソースを宣言する必要なく、よりシームレスにかつ同時に実行できます。これは、チェーンがすべてのトランザクションを楽観的に並列実行することを意味します。ただし、競合が発生する場合(つまり、複数のトランザクションが同じ状態にアクセスする場合)、ブロックチェーンはそれぞれの競合するトランザクションが影響を与える特定のストレージコンポーネントを追跡します。
Seiのブロックチェーンは、「楽観的同時実行制御(OCC)」を使用して取引を実行するアプローチを取っています。複数の取引がシステム内で同時に有効な状態にあるとき、並行取引処理が発生します。この取引アプローチには、実行と検証の2つのフェーズがあります。
実行フェーズでは、トランザクションは楽観的に処理され、すべての読み取り/書き込みは一時的にトランザクション固有のストアに格納されます。その後、すべてのトランザクションは検証フェーズに入り、一時ストア操作の情報が前のトランザクションによって行われた状態変更と照合されます。トランザクションが独立している場合、トランザクションは並行して実行されます。トランザクションが他のトランザクションによって変更されたデータを読み取る場合、これにより競合が発生します。Seiの並列システムは、トランザクションの読み取りセットとマルチバージョンストア内の最新の状態変更を比較して、各競合を特定します(これらはトランザクションの順序でインデックス化されています)。Seiは、競合が発生したインスタンスを再実行および再検証します。これは、競合を修正するために実行、検証、および再実行を含む反復プロセスです。以下の図は、競合が発生した場合のトランザクションに対するSeiのアプローチを示しています。
ソース: https://blog.sei.io/sei-v2-the-first-parallelized-evm/
Seiの実装により、ガス手数料が安くなり、EVM開発者にとってより広い設計空間が生まれます。歴史的には、EVM環境は50 TPS未満に制限されており、これにより開発者はアンチパターンに従うアプリケーションを作成する必要がありました。Sei V2では、DeFi、DePIN、およびゲームなど、通常高性能と低手数料が必要なセクターにアプローチすることが可能になります。
Monadは、完全なバイトコード互換性を備えた並列EVMレイヤー1を構築しています。Monadをユニークにしているのは、並列化エンジンだけでなく、最適化するためにネット下に構築したものです。Monadは、パイプライン処理、非同期I/O、コンセンサスと実行の分離を含むいくつかの主要な機能を取り入れることで、独自のアプローチを取っています。MonadDB.
Monadの設計における重要な革新点は、パイプラインわずかなオフセットを持つ。 オフセットにより、複数のインスタンスを同時に実行することで、より多くのプロセスを並列化することが可能になります。 したがって、パイプライン処理は、状態アクセスのパイプライン処理、トランザクション実行のパイプライン処理、合意と実行内のパイプライン処理、および合意メカニズム自体内のパイプライン処理など、多くの機能を最適化するために使用されます。
次に、Monadの並列化部分にダブルクリックします。 Monadでは、トランザクションはブロック内で直線状に順序付けられていますが、この最終状態に到達するために並列実行を活用して速く到達することが目標です。 Monadは、実行エンジンの設計に楽観的な並列化アルゴリズムを使用しています。 Monadのエンジンはトランザクションを同時に処理し、その後、トランザクションが一つずつ実行された場合と同じ結果になることを確認するための分析を行います。 衝突がある場合は、再実行する必要があります。 ここでの並列実行は比較的単純なアルゴリズムですが、Monadの他の主要な革新と組み合わせることがこの手法を新しいものにしています。 ここで注意すべき一点は、再実行が発生しても、ほとんどの場合、無効なトランザクションに必要な入力がキャッシュに残っているため、単純なキャッシュの検索になります。 再実行は成功することが保証されています。なぜなら、以前のトランザクションはすでにブロック内で実行されているからです。
Monadは、実行とコンセンサスを分離することでパフォーマンスを向上させ、遅延実行に加えてSolanaやSeiと同様のアプローチを取っています。ここでのアイデアは、実行の条件を緩和してコンセンサスが完了するまでに実行が完了する必要がないとすることで、両方を並行して実行できるようにし、両方に追加の時間をもたらすことです。もちろん、Monadはこの条件を処理するために確定的アルゴリズムを使用しており、これにより、どちらかが追い越してしまい、追いつく可能性がない状況が生じることを防ぎます。
この投稿の冒頭で述べたように、ステートアクセスはブロックチェーンの典型的なパフォーマンスボトルネックの1つです。ステートアクセスおよびメモリに関する設計選択は、最終的に特定の並列システムの実装が実際にパフォーマンスを向上させるかどうかを決定します。ここでは、Solana、Sei、およびMonadが取る異なるアプローチを解説し比較します。
Solanaステートアクセス:AccountsDB / Cloudbreak
Solanaは、水平スケーリングを利用して、複数のSSDデバイスに状態データを分散および管理します。多くのブロックチェーンは現在、大量の同時読み取りおよび状態データの書き込みを制限する一般的なデータベース(例:LevelDB)を使用しています。これを回避するために、Solanaは独自のカスタムaccountsDBを構築しました。クラウドブレイク.
Cloudbreakは、本質的に高速であるRAMにのみ頼るのではなく、I/O操作全体での並行アクセスに設計されています。I/O操作(入力/出力)とは、データを外部ソース(ディスク、ネットワーク、周辺機器など)から読み取ることまたは書き込むことを指します。最初は、Cloudbreakは公開鍵を残高とデータを保持するアカウントにマップするために、RAM内のインデックスを使用していました。しかし、この論文の執筆時点およびバージョン1.9では、そのインデックスがRAMからSSDに移動されました。この変更により、Cloudbreakはキュー内で32の(I/O)操作を同時に処理できるようになり、複数のSSD間でスループットが向上します。その結果、アカウントや取引などのブロックチェーンデータは、メモリマップファイルを使用してRAMにあるかのように効率的にアクセスできます。以下の図は、説明的なメモリ階層を表しています。RAMは高速ですが、SSDよりも容量が少なく、一般的に高価です。
説明的なメモリ階層図
水平方向にスケーリングし、状態データを複数のデバイスに分散させることで、CloudbreakはSolanaエコシステム内でのレイテンシーを低減し、効率を向上させ、分散化、ネットワークの弾力性を高めます。
Sei State Access: SeiDB
Seiはそのストレージを再デザインしました、SeiDB,複数の問題に対処するためには、書き込み増幅(データ構造を維持するために必要なメタデータの量、小さい方がより良い)、状態膨張、遅い操作、および時間の経過とともに性能の低下などがあります。新しいリデザインは、現在、ステートストアとステートコミットの2つのコンポーネントに分かれています。データへの変更を記録および検証することはステートコミットによって処理され、任意の時点ですべてのデータを管理するデータベースはステートストレージ(SS)によって処理されています。
In Sei V2、State Commitment はメモリマップされた IAVLツリーアーキテクチャ(MemIAVL)メモリマップドIAVLツリーは、状態のストレージと状態の同期時間を削減し、フルノードの実行を容易にします。メモリマップドIAVLツリーは、ディスク上で3つのファイル(kv、branch、leaves)として表現されます。したがって、追跡する必要のあるメタデータが少なくなり、状態のストレージが50%以上削減されます。新しいMemIAVL構造は、データ構造を維持するために必要なメタデータを削減するため、書き込み増幅因子を削減します。
更新されたSeiDBは、状態ストレージレイヤーに対する柔軟なデータベースバックエンドサポートを可能にします。Seiは、異なるノードオペレーターが多様な要件とストレージニーズを持つと考えています。そのため、SSは異なるバックエンドを収容できるよう設計されており、オペレーターにPebbleDB、RocksDB、SQLiteなどの自由と柔軟性を提供しています。
State Access: MonadDB
Monadの状態アクセスにはいくつかの重要なニュアンスがあります。まず、ほとんどのEthereumクライアントは、B-Treeデータベース(つまり、LMDB)またはログ構造マージツリーデータベース(つまり、RocksDB、LevelDB)の2種類のデータベースを活用しています。これらはいずれも、ブロックチェーン向けに明示的に設計されたものではない汎用データ構造です。さらに、これらのデータベースは、Linuxテクノロジーの最新の進歩、特に非同期操作とI/Oの最適化を活用していません。最後に、Ethereum自体が状態を管理しています。Patricia Merkle Trie, これは暗号化、検証、および証明を専門とするものです。主な問題は、クライアントがこの特定のパトリシア・マークル木をより汎用的なデータベース(すなわちBツリー/LSM)に統合する必要があり、過剰なディスクアクセスなどの大きなパフォーマンスの欠点があります。
上記すべては、Monadが独自に構築したMonadDBデータベースを作成することを決定した理由の舞台を設定するのに役立ちます。これは、ブロックチェーンデータと状態アクセスをより効率的に処理するために特別に設計されています。MonadDBの主な機能には、並列アクセスデータベース、Merkle Trie Dataに最適化されたカスタムデータベース、標準RAM使用量よりも効率的な状態アクセス、分散化、スケーラビリティが含まれています。
MonadDBは明示的にブロックチェーン向けに設計されており、一般的なデータベースを利用するよりもパフォーマンスが向上しています。カスタムMonadDBは、Merkle trieタイプのデータを効率的に管理するために特化しており、同時に複数のtrieノードに並列アクセスすることが可能です。上記にリストされている一部の一般的なデータベースと比較して、MonadDBでの単一の読み取りのコストは同じですが、ここでの重要なポイントは、MonadDBが多くの読み取りを並列で実行できることであり、これにより大幅な高速化が実現されます。
MonadDBは、並列アクセスデータベースに同時に状態アクセスを可能にします。Monadはこのデータベースをゼロから構築しているため、最新のLinuxカーネル技術とSSDのフルパワーを活用することができます。非同期I/Oを使用すると、トランザクションがディスクから状態を読み取る必要がある場合、その操作が完了を待つことなく進行するようになります。代わりに、読み取りを開始し、同時に他のトランザクションの処理を続行するべきです。これが非同期I/OがMonadDBの処理を大幅に高速化する方法です。Monadは、SSDの使用を最適化し、過剰なRAMへの依存を減らすことで、ハードウェアからより優れたパフォーマンスを引き出すことができます。これにより、分散化とスケーラビリティとの一致がさらに利点として得られます。
SolanaとSeiとMonadの比較の概要
結論として、Solana、Sei、およびMonadのレンズを通してブロックチェーンにおける並列化を探求することは、異なるアーキテクチャとアプローチがパフォーマンスとスケーラビリティを向上させる方法について包括的な理解を提供します。Solanaの確定的並列化は、状態アクセスを事前に宣言することに重点を置いており、予測可能性と効率性を提供し、高スループットを必要とするアプリケーションにとって強力な選択肢となっています。一方、Seiの楽観的並列化アプローチは、開発者の柔軟性を重視し、トランザクションの競合がまれな環境に適しています。楽観的並列化とカスタムビルトのMonadDBを組み合わせたMonadは、最新の技術革新を活用して状態アクセスとパフォーマンスを最適化する革新的なソリューションを提供しています。
各ブロックチェーンは、それぞれ独自のトレードオフを持ちながら、並列化の課題に取り組む独自のアプローチを示しています。Solanaの設計はハードウェアの利用とスループットの最大化を目指しており、Seiは開発プロセスの簡素化に焦点を当て、Monadはブロックチェーンデータのための特注データベースソリューションを重視しています。これらの違いは、ブロックチェーンエコシステムの多様性と、アプリケーションの特定のニーズに基づいて適切なプラットフォームを選択する重要性を強調しています。
ブロックチェーン空間が進化し続ける中、Solana、Monad、およびSeiによって示された並列化技術の進歩は間違いなくさらなるイノベーションをもたらすでしょう。より効率的でスケーラブルかつ開発者向けのフレンドリーなブロックチェーンへの道のりは続いており、これらのプラットフォームから得られた教訓がブロックチェーン技術の未来を形作る上で重要な役割を果たすことでしょう。
このシリーズの第2部では、これらの並行設計システムに関連する経済的影響とトレードオフについて詳しく説明します。