導入
トランザクション プール (別名「メモリプール」) は、ブロックの確認とブロックへの組み込みを待つ、ブロックチェーン上の未確認トランザクションの一時的な保管領域です。ビットコインの出現により、メモリプールの概念が導入されました。イーサリアムも後にこれをアーキテクチャに組み込みました。ユーザーが 2 つのコイン間のスワップ、DeFi 市場での取引、または単に NFT を購入するなどのトランザクションを開始すると、トランザクションはネットワークにブロードキャストされ、一時的にメモリプールに保持されます。
バリデーターが確認して新しいブロックに含めるまで、そこに残ります。メモリプールに送信されたトランザクションは、トランザクション手数料に基づいて整理され、通常はガス料金が高いトランザクションが最初に確定されます。これにより、バリデーターは、マイニングしたブロックがブロックチェーンに追加されるときに、そのブロックに含まれるトランザクションの報酬としてガス料金を受け取るため、手数料の高いトランザクションを優先します。
メモリプールは、それを利用するブロックチェーンにとって重要なコンポーネントとして機能します。メモリプールは、署名が間違っているためにトランザクションが無効である場合や、送信者のウォレットの資金が不足している場合を除き、送信されたすべてのトランザクションがバリデータによって処理され、確認されることを保証します。メモリプールは、ネットワークが混雑しているときにユーザーが適切なトランザクション手数料を選択してトランザクションをより速く処理できる市場を作成します。
Ethereum と Bitcoin のメモリプールには、合計 50,000 ~ 200,000 件の未確認トランザクションがあります。これは、ブロックスペースの可用性に依存することが多く、ほとんどの場合、ネットワークのスループットの低下やネットワークの混雑など、ネットワークにいくつかのボトルネックを引き起こします。Ethereum と Bitcoin では、ゴシップ プロトコルを使用して、ランダム ノード間でピアツーピア方式でメモリプールを分散します。
Solana メインネットには 1,000 を超えるバリデーターがあり、130,000 のメモリプール サイズを管理できます。つまり、ネットワーク スループットが 65,000 の場合、130,000 のメモリプールが実行され、Solana は 1 秒あたり 4,000 ~ 4,500 を超える処理を実行できます。高性能ブロックチェーンである Solana は、最初からメモリプールに依存しないように設計されているため、メモリプールのないブロックチェーンと見なされています。代わりに、すべてのトランザクション メッセージを、リーダーとしてタグ付けされたスロットごとに設定されたバリデーターにプッシュするという異なるアプローチを採用しています。リーダーは 4 スロットごとに交代し、リーダーのスケジュールはすべてのアクティブなネットワーク ノードによって事前に知られています。Solana が提案したこのソリューションは、トランザクション メッセージのキャッシュをネットワークのエッジにプッシュするもので、 Solana Gulf Streamと呼ばれています。
注: Solana トランザクションにはデフォルトで最新のブロックハッシュが含まれている必要がありますが、開発者は基本的な API 呼び出しで簡単に取得できます。Solana ブロックハッシュには最大 150 個のスロットがあります。この時間が経過すると古くなるため、このブロックハッシュを参照するトランザクションはネットワークによって削除されます。これにより、未処理のトランザクションが残らないことが保証されます。ブロックハッシュは最近、トランザクションの重複排除に役立ちます。
メキシコ湾流の歴史
ガルフストリームは、ローンチ以来、QUIC とステーク加重 QoS という少なくとも 2 つの重要なアップグレードを実施してきました。また、近年 Solana のネットワーク トラフィックの急増により、コア プロトコルのコンポーネントの中で最も大きな負担がかかっていると言えます。これをわかりやすく説明すると、バリデーターがリーダーの役割を担う場合、ネットワーク全体がパケットを送信するため、受信トラフィックが劇的に増加し、1 秒あたり 1 ギガバイトを超えることも珍しくありません。
クイック
当初、Solana は RPC ノードから現在のリーダーにトランザクション メッセージを送信するために UDP プロトコルに依存していました。UDP はハンドシェイク ダイアログがないため高速で効率的ですが、データ配信、パケット順序、重複防止の信頼性が低いなどの重大な欠点があります。これらの制限は、DDoS 攻撃やスパム トランザクションによるネットワークの中断時、特に NFT ミントのような需要の高いイベント時に明らかになりました。
Solana は、これらの課題に対処するために、バリデータ取り込みプロセスに QUIC プロトコルを統合しました。UDP とは異なり、QUIC は輻輳制御とパケット シーケンスが組み込まれた信頼性の高いデータ転送を提供し、ノード間のよりスムーズで安全な通信を保証します。このアップグレードにより、ネットワークの安定性と回復力が大幅に向上し、将来の中断を防ぎ、トランザクション負荷が高い状況でも Solana のパフォーマンスを最適化します。
QUIC プロトコルは、UDP プロトコルのような高速な非同期通信を可能にしますが、TCP のようなセッションとフロー制御を備えています。QUIC プロトコルはブロックチェーン分野では採用率が低いですが、ネットワークは依然として多くの QUIC ハンドシェイク中に輻輳の懸念に遭遇するため、Solana にとって万能のソリューションではありません。このプロトコルには既存の欠陥がすべてありますが、いくつかの利点があります。QUIC は 2 つのハンドシェイク (TCP と TLS) を必要とせず、完了に必要なパケット数が少ない安全なネットワーク接続プロトコルです。クローズ後も耐久性があり、データ アクセスが高速になります。
QUIC は、ストリームとセッション チケットを通じてセッションを再利用し、クライアントとサーバーの接続数を最小限に抑え、高速で安全な再接続を提供します。また、接続の移行もサポートしているため、IP の変更後も接続を維持でき、モバイル ユーザー エクスペリエンスがよりスムーズになります。QUIC は、サービス拒否 (DoS)、リプレイ、リフレクション、スプーフィングなどの攻撃の影響を軽減することも目的としています。すべての攻撃を排除することはできませんが、攻撃を困難にすることを目指しています。全体として、QUIC はより効率的で安全なネットワーク接続エクスペリエンスを提供します。
ステーク重み付けQoS
Solana ステーク加重 QoS は Solana ネットワーク上の実装であり、リーダーが追加のシビル耐性メカニズムとしてステークされたバリデーターを介してプロキシされたトランザクションを識別して優先順位を付けることができます。このメカニズムは 2024 年初頭に Solana ネットワークに実装されました。このメカニズムでは、ネットワーク内でより高いステークを持つバリデーターが、大きなトランザクション メッセージ パケットをリーダーに送信できます。
たとえば、0.5% のステークを持つバリデーターは、ネットワークの残りの部分からのシビル攻撃に対抗し、最大 0.5% のパケットをリーダーに送信できます。ステーク重み付け QoS を有効にすると、1% のステークを持つバリデーターは、最大 1% のパケットをリーダーに送信する権利を持ちます。この方法では、ステークの高いバリデーターは、より高品質のサービスを受けることが保証されるため、ステークの少ない低品質のバリデーターが意図的にこれらのトランザクションをフラッディングするのを防ぎ、全体的なシビル耐性を強化します。
このメカニズムの導入は Solana エコシステムに大きな影響を与え、商業的な RPC インフラストラクチャ オペレーターと取引所が主な受益者として浮上しています。RPC オペレーターは、ステークされたバリデーターとの契約を確保するのに有利な立場にあり、ブロックに含まれるトランザクションの割合を高めるのに役立ちます。一方、同じインフラストラクチャ上でバリデーターと RPC ノードの両方をホストしている取引所やその他の組織は、インフラストラクチャ上の RPC ノードが信頼できるものであることを知っているので、自信を持ってシステム内でこの機能を有効にすることができます。
Solanaと従来のMempoolアーキテクチャの違い
Solana と Ethereum のメモリプール アーキテクチャには多くの違いがあります。
- Ethereumブロックチェーンでは、保留中のトランザクションはパブリック メモリプールに保持され、ブロックに含まれるまでゴシップ プロトコルを介してノード全体に分散されます。Solanaにはパブリック メモリプールがありません。代わりに、保留中のトランザクションは現在のリーダーにプッシュされます。
- Ethereumトランザクションにはガス料金が必要で、トランザクションの優先順位は通常ガス価格に結びついています。Solanaトランザクションには署名ごとに固定の基本料金 (通常は 0.000005 SOL) が必要ですが、トランザクションをより速く実行するために優先料金を含めるオプションがあります。
- Solanaのデフォルトのバリデータ実装は、継続的なブロック生成も提供します。トランザクションは継続的にバリデータに送信され、実行され、ブロックが生成され、最終的にトランザクションが伝播されます。Ethereum では、保留中のトランザクションはバリデータまたはブロックビルダーによって保留され、12 秒間隔でブロック全体が生成さます。継続的なブロック生成は、優先手数料がブロック内の位置を保証するものではないことを意味します。
- Ethereum は、バリデーターがブロックスペースに入札し、マイナーが MEV (最大抽出可能値) を通じて資金を引き出すことができる MEV-Boost などの外部オークションに依存しています。このオークション タイプは、市場シェアが支配的です (ネットワークの約 85%)。 Solana はプロトコル外のブロックスペース オークション (Jito) を実装しましたが、その市場シェアは低下しています (約 25%)。これは、Solana と Ethereum がエコシステム内で MEV とブロックスペース オークションを処理する方法の違いを反映しています。
結論
この記事では、Solana の独自のトランザクション処理メカニズムについて、Gulf Stream プロトコルと、それが Ethereum で使用されるような従来のメモリプール アーキテクチャとどのように異なるかに焦点を当てて説明しました。Solana の継続的なブロック生成、固定トランザクション手数料、QUIC とステーク加重 QoS の革新的な使用によるネットワーク パフォーマンスとセキュリティの最適化を強調しました。