著者:Ali Sheikh(暗号アナリスト)、翻訳:Golden Finance xiaozou
この記事では、Solana、Sei、Monadの3つの関連する例を引用しながら、ブロックチェーンの並列設計アーキテクチャの概要を説明します。この記事では、楽観的並列処理と決定論的並列処理の違いに注目し、これらのチェーンにおける状態とメモリアクセスのニュアンスを理解します。
1、序文
1837年、コンピュータ科学者であり数学者でもあったチャールズ・バベッジは、並列処理の理論的基礎を築いた「分析エンジン」を設計しました。「並列コンピューティングの理論的基礎を築いた。今日、並列化は暗号の世界における重要なテーマであり、ブロックチェーンは処理、効率、スループットの境界を広げようとしています。
並列コンピューティングは、多くの計算やプロセスを同時に実行することを可能にします。並列コンピューティングとは、大きな問題を、共有メモリを介して通信する複数のプロセッサで実行できる、複数の小さな独立した部分に分解することを指します。並列システムは、効率と速度の向上、スケーラビリティ、信頼性とフォールトトレランスの向上、リソース利用の最適化、非常に大きなデータセットの処理能力など、多くの利点を提供します。
しかし、並列化の有効性は、基礎となるアーキテクチャと実装の詳細に依存することを認識することが重要です。ブロックチェーンにおける2つの中核的なボトルネックは、暗号関数(ハッシュ関数、署名、楕円曲線など)とメモリ/ステートアクセスです。ブロックチェーンの効率的な並列システムを設計するための重要な要素の1つは、ステートアクセスのニュアンスにある。ステートアクセスとは、トランザクションがブロックチェーンのステート(ストレージ、スマートコントラクト、アカウント残高など)を読み書きする能力のことである。並列ブロックチェーンが効果的で高性能であるためには、状態アクセスが最適化されていなければなりません。
現在、並列化ブロックチェーンの状態アクセスの最適化には、決定論的並列主義と楽観的並列主義の2つの考え方があります。決定論的並列処理では、ブロックチェーンの状態のどの部分にアクセスして変更するかを、コードで事前に明示的に宣言する必要があります。これによりシステムは、どのトランザクションが競合することなく並列処理できるかを事前に決定することができる。決定論的並列処理は予測可能性と効率性をサポートする(特にほとんど独立したトランザクションの場合)。しかし、開発者にとってはより複雑なものとなる。
楽観的並列性は、トランザクションを並列に処理するために、競合が発生しないかのように、その状態アクセスを事前に宣言するコードを必要としません。競合が発生した場合、楽観的並列処理は競合するトランザクションを再実行、再処理、またはシリアルに実行します。楽観的並列処理は開発者により大きな柔軟性を提供するが、コンフリクトが発生すると再実行が必要になるため、このアプローチはトランザクションがコンフリクトしていない場合に最も効果的である。どちらのアプローチが優れているかという正解はない。並列化を実装するための2つの異なる実行可能なアプローチがあるだけです。
以下では、ブロックチェーン並列実行の設計空間を見る前に、非暗号並列システムに関連する基本的なことをいくつか探ります。暗号並列システムの概要、メモリと状態アクセス方法、並列設計の機会という3つの中心的な分野に焦点を当てます。
2、非暗号並列システム
並列コンピューティングの能力と並列システムの利点について学んだことで、ここ数年で並列コンピューティングの採用が人気を集め始めた理由を理解するのは簡単です。そして、並列コンピューティングはここ数十年の間に人気を博し、多くのブレークスルーを達成してきました。
医療用画像処理:並列処理は医療用画像処理に根本的な変革をもたらし、幅広い画像モダリティ(MRI、CT、X線、光トモグラフィなど)に速度と効率をもたらしました。光トモグラフィ)は、MRI、CT、X線、光トモグラフィなど、さまざまな画像モダリティに速度と解像度の大幅な向上をもたらしました。NVIDIAはこれらの進歩の最前線にあり、並列処理ツールキットを通じて放射線科医により強力なAI機能を提供し、画像処理システムがより多くのデータと計算負荷をより効率的に処理できるようにしています。
天文学:ブラックホールの理解など、いくつかの新しい天文現象は、並列スーパーコンピュータを使用して初めて可能になります。
Unityゲーム エンジン: Unity エンジンは、パフォーマンスと速度を向上させるためにGPUパワー(大規模なグラフィックス ワークロード用に構築)を使用します。このエンジンは、シームレスなゲーム体験を可能にするマルチスレッド機能と並列処理機能を備えており、複雑でリアルなゲーム環境の構築を可能にします。
並列実行環境を導入した3つのブロックチェーンを見てみましょう。まず、Solanaを見て、続いて2つのEVMベースのチェーン、MonadとSeiを見ていきます。
3, 並列設計の概要
(1)ソラナ
高いレベルで言えば、ソランの設計哲学は、ブロックチェーンのイノベーションはハードウェアの進歩に合わせて進化すべきだということです。Solanaの共同創設者であるAnatoly Yakovenko氏は、5年以上前にSolanaのオリジナルの並列アーキテクチャを設計し、今日、並列処理はブロックチェーンの設計原理として急速に広まっています。
Solanaが決定論的並列処理を採用しているのは、Anatoly氏の組み込みシステムでの過去の経験に由来しており、そこでは通常、すべての状態が事前に宣言されています。これにより、CPUはすべての依存関係を知ることができ、メモリの必要な部分を事前にロードすることができます。その結果、最適化されたシステム実行が可能になるが、繰り返しになるが、開発者が事前に余分な作業をする必要がある。Solanaでは、プログラムのすべてのメモリ依存関係が必要とされ、構築されたトランザクション(すなわち、アクセスリスト)で宣言されるため、ランタイム(実行時)は複数のトランザクションを効率的にスケジューリングし、並列実行することができます。
Solanaアーキテクチャの次の主要コンポーネントは、Sealvel VMであり、これはSolanaの並列スマートコントラクトランタイムです。Sealvelは、検証者のコア数に基づいて、複数のコントラクトとトランザクションの並列処理をネイティブにサポートします。ブロックチェーンにおける検証者は、トランザクションの検証、新しいブロックの提案、ブロックチェーンの整合性とセキュリティの維持を担うネットワーク参加者である。トランザクションは、読み取り/書き込みロックが必要なアカウントを事前に宣言するため、Solanaスケジューラはどのトランザクションを並列実行できるかを判断できる。このため、検証の際には、「ブロックプロデューサー」またはリーダーは、保留中の何千ものトランザクションを選別し、重複しないトランザクションを並行してスケジュールすることができます。
Solanaの最後の設計要素は「パイプライン化」です。パイプラインは、データを一連のステップで処理する必要がある場合にトリガーされ、その各ステップは異なるハードウェアによって処理されます。ここでの重要なアイデアは、シリアルに実行する必要があるデータをパイプラインを使用して並列化することです。これらのパイプラインは並列に実行することができ、各パイプラインステージは異なるトランザクションパッケージを処理することができます。
これらの最適化により、Sealevelは独立したトランザクションを整理して同時に実行し、単一のプログラムを使用して一度に複数のデータポイントを処理するハードウェアの能力を活用することができます。
これらの革新により、Solanaが意図的に並列化をサポートするように設計されていることがわかります。
(2)Sei
Seiは、デジタル資産の取引に特化した、汎用のオープンソースL1ブロックチェーンです。楽観的並列モードでは、開発者がリソースを事前に宣言することなく、スマートコントラクトをよりシームレスに並列実行できる。これは、チェーンが楽観的にすべてのトランザクションを並行して実行することを意味する。それにもかかわらず、競合が発生すると(つまり、複数のトランザクションが同じ状態にアクセスすると)、ブロックチェーンは競合する各トランザクションによって影響を受ける特定のストレージコンポーネントを追跡します。
Seiブロックチェーンは「楽観的同時実行制御(OCC)」メカニズムを使用してトランザクションを実行します。同時実行トランザクション処理は、システム内で複数のトランザクションが同時にアクティブになった場合に発生します。このタイプのトランザクションには、実行と検証という2つのフェーズがあります。
実行フェーズでは、トランザクションは、トランザクション固有のストアにすべての読み取り/書き込みを一時的に格納することによって、最適に処理される。その後、各トランザクションは検証フェーズに進み、そこで一時記憶操作の情報が以前のトランザクションによって行われた状態変更と照合される。トランザクションが独立している場合、トランザクションは並行して実行される。Seiの並列システムは、トランザクションの読み取りデータセットと、トランザクションの順序でインデックス付けされたマルチバージョンストア内の最新の状態変更を比較することにより、各コンフリクトを特定する。これは、競合を修正するための実行、検証、再実行を含む反復プロセスである。次の図は、競合が発生したときにSeiがどのようにトランザクションを処理するかを示している。
Seiの実装は、EVM開発者により低いガス料金と広い設計空間を提供します。sei V2により、開発者は、DeFi、DePIN、ゲームなど、一般的に高いパフォーマンスと低い料金を必要とする分野にアプローチすることができます。
(3)Monad
Monadは完全なバイトコード互換性を持つ並列EVM L1を構築しています。
Monadの設計における重要な革新の1つは、わずかなオフセットによるパイプライン化であり、複数のインスタンスを同時に実行することで、より多くのプロセスを並列化できます。その結果、パイプラインは、状態アクセスのパイプライン、トランザクション実行のパイプライン、コンセンサスと実行内部のパイプライン、コンセンサスメカニズム自体のパイプラインなど、多くの機能を最適化するために使用されている。
次に、Monadの並列化部分について具体的に見ていく。Monadの実行エンジンは楽観的な並列アルゴリズムで設計されている。Monadのエンジンはトランザクションを同時に処理し、トランザクションが次々に実行されたとしても同じ結果になるように分析を行う。衝突があれば、再実行が必要となる。ここでの並列実行は比較的単純なアルゴリズムであるが、Monadの他の主要な革新的技術と組み合わせることで、このアプローチは斬新なものとなる。ここで注意すべき点は、たとえ再実行が発生したとしても、無効なトランザクションに必要な入力はほとんど常にキャッシュに保持されているため、通常は単純なキャッシュ検索で済むという点である。再実行は、ブロック内の前のトランザクションをすでに実行しているので、成功が保証される。
モナドはまた、実行とコンセンサスを分離し(SolanaやSeiに似ている)、実行を遅延させることでパフォーマンスを向上させる。このアイデアは、コンセンサスに達する前に実行が終了するように実行条件を緩和すれば、実行とコンセンサスを並行して実行し、両方に余分な時間を追加できるというものです。もちろん、Monadは決定論的アルゴリズムを使ってこの状況を処理し、どちらかが制御不能にならないようにしている。
4、状態アクセスとメモリへの独自のアプローチ
この記事の冒頭で述べたように、状態アクセスはブロックチェーンの典型的なパフォーマンスボトルネックの1つです。状態アクセスとメモリに関する設計の選択は、並列システムの特定の実装が実際にパフォーマンスを向上させるかどうかを最終的に決定します。以下では、Solana、Sei、Monadが採用しているさまざまなアプローチを詳しく見て比較します。
(1)Solana状態アクセス: AccountsDB / Cloudbreak
Solana は水平スケーリングを使用して、複数のSSDデバイスに状態を分散して管理します。データにアクセスします。今日、多くのブロックチェーンは汎用データベース(LevelDBなど)を使用しており、ステータスデータへの大量の同時読み取りと書き込みの処理には限界があります。これを避けるために、SolanaはCloudbreakを使用して独自のカスタムアカウントデータベースを構築しました。
Cloudbreakは、それ自体が高速であるRAMだけに依存するのではなく、I/O操作全体で並列アクセスできるように設計されています。I/O操作(入出力)とは、ディスク、ネットワーク、周辺機器などの外部ソースからデータを読み取ったり、外部ソースにデータを書き込んだりする操作のことです。当初、クラウドブレイクはRAM内部インデックスを使用して、公開鍵を残高やデータを保有する口座にマッピングしていた。しかし、本稿執筆時点では、v1.9のインデックスはRAMからSSDに移行されている。この移行により、Cloudbreakはキューで32の同時(I/O)操作を処理できるようになり、複数のSSDのスループットが向上した。その結果、アカウントやトランザクションなどのブロックチェーンデータは、メモリマップファイルを使用してRAMと同様に効率的にアクセスできる。下図はメモリ構造を示している。RAMは高速ですが、SSDよりも容量が小さく、高価な場合が多いです。
水平にスケーリングし、ステートフルなデータを複数のデバイスに分散することで、Cloudbreakはレイテンシーを削減し、Solanaエコシステムの効率性、分散化、ネットワーク耐障害性を向上させます。
(2)Seiステートアクセス:SeiDB
Seiはストレージ(SeiDB)を再設計しました。-- を再設計しました。書き込みの増幅(データ構造を維持するために必要なメタデータの量、小さければ小さいほど良い)、状態の肥大化、遅い操作、時間の経過によるパフォーマンスの低下といった問題に対処するためです。新しい再設計は、ステート・ストレージとステート・コミットメントの2つのコンポーネントに分かれている。データへのあらゆる変更の記録と検証は状態約束によって処理され、任意の時点ですべてのデータを記録するデータベースは状態ストア(SS)によって処理されます。
SeiV2では、状態約束はメモリマップドIAVLツリーアーキテクチャ(MemIAVL)を使用します。メモリマップされたIAVLツリーは、より少ないメタデータを保存し、状態の保存と状態の同期時間を減らし、フルノードの実行を容易にします。メモリマップされたIAVLツリーは、ディスク上の3つのファイル(kvファイル、ブランチファイル、リーフファイル)として表現されます。その結果、追跡すべきメタデータが少なくなり、状態の保存を50%以上削減することができます。新しいMemIAVL構造は、データ構造を維持するために必要なメタデータの量を減らすため、書き込み増幅率を減らすのに役立ちます。
更新されたSeiDBは、状態保存レイヤーの柔軟なデータベースバックエンドサポートを可能にします。Seiは、異なるノードオペレータが異なるニーズとストレージ要件を持つことを認識しています。そのため、SSは異なるバックエンド要件に対応し、PebbleDB、RocksDB、SQLiteなどのオペレータに自由と柔軟性を提供するように設計されています。
(3)MonadState Access:MonadDB
Monadのステートアクセスにはいくつかの重要なニュアンスがあります。まず、ほとんどのイーサネット・クライアントは2種類のデータベースを利用している。B-Treeデータベース(LMDBなど)かLog Structure Merge Tree(LSM)データベース(RocksDBやLevelDBなど)だ。いずれも汎用的なデータ構造であり、ブロックチェーン用に特別に設計されたものではない。加えて、これらのデータベースは、特に非同期操作とI/O最適化に関して、Linux技術の最新の進歩を利用していない。最後に、Ether自身は、暗号化、検証、証明に特化したMPTツリーを使用して状態を管理している。主な問題は、クライアントがこの特定のMPTツリーをより一般的なデータベース(すなわちB-Tree / LSM)に統合しなければならないことであり、これは過剰なディスクアクセスなどの深刻なパフォーマンス上の欠点をもたらします。
これらすべてが、ブロックチェーンデータと状態アクセスのより効率的な処理に特化したカスタムMonadDBデータベースを作成するというMonadの決断の土台となりました。MonadDBの主な機能には、データベースへの並列アクセス、Merkle Trieデータ用に最適化されたカスタムデータベース、標準的なRAM使用量を上回る効率的な状態アクセス、データベースへの分散アクセスなどがあります。効率的なステートアクセス、分散機能、スケーラビリティ。
MonadDBはブロックチェーン専用に設計されているため、汎用データベースを使用するよりもパフォーマンスが高くなります。カスタムMonadDBは、Merkle Trie型データの効率的な管理に特化しており、複数のTrieノードへの並列アクセスを同時にサポートしています。MonadDBは、上記の汎用データベースの一部と読み取りあたりのコストは同じですが、MonadDBの主な特徴は、複数の読み取りを並行して実行できるため、大幅なスピードアップを実現できることです。
MonadDBは並列アクセスデータベースへの同期状態アクセスをサポートしています。Monadはこのデータベースをゼロから構築したため、最新のLinuxカーネルテクノロジーとSSDのフルパワーを非同期I/Oに活用することができます。非同期I/Oでは、トランザクションがディスクから状態を読み取る必要がある場合、保留中の操作の足を引っ張ることはありません。その代わり、すぐに読み取りを開始し、同時に他のトランザクションの処理を継続する。このように、非同期I/OはMonadDBの処理を劇的に高速化します。Monadは、SSDの使用を最適化し、過剰なRAMへの依存を減らすことで、より優れたハードウェア性能のメリットを享受することができます。これには、分散化とスケーラビリティに沿うという利点もあります。
5、結論
要約すると、Solana、Sei、Monadのレンズを通してブロックチェーンにおける並列化の開発を探求することで、さまざまなアーキテクチャとアプローチがパフォーマンスとスケーラビリティをどのように向上させることができるかについての包括的な理解が得られます。Solanaの決定論的並列性は、事前に宣言された状態アクセスに焦点を当て、予測可能性と効率性を提供するため、高いスループットが要求されるアプリケーションにとって強力な選択肢となる。一方、Seiの楽観的並列処理アプローチは、開発者の柔軟性を優先し、トランザクションの競合が頻繁に発生しない環境に適しています。独自の楽観的並列性アプローチとカスタムMonadDBにより、Monadは最新の技術進歩を活用して状態アクセスとパフォーマンスを最適化する革新的なソリューションを提供します。
各ブロックチェーンは、並列化の課題を解決するために、独自のトレードオフを設定した独自のアプローチを提供しています。Solanaはハードウェアの利用率とスループットを最大化するように設計されており、Seiは開発プロセスの簡素化に重点を置き、Monadはブロックチェーンデータに合わせたデータベースソリューションを提供することに重点を置いています。これらの違いは、ブロックチェーンエコシステムの多様性と、アプリケーション固有のニーズに適したプラットフォームを選択することの重要性を浮き彫りにしています。
ブロックチェーン領域が進化を続ける中、Solana、Monad、Seiが示した並列化技術の進歩は、間違いなくさらなるイノベーションを促すでしょう。より効率的でスケーラブル、かつ開発者に優しいブロックチェーンへの旅は現在進行中であり、これらのプラットフォームから学んだ教訓は、ブロックチェーン技術の未来を形作る上で重要な役割を果たすでしょう。