
ゴシップ プロトコルは、分散システムにおけるピアツーピア通信方式です。ネットワーク内のノードは、自分自身と、各ノードが接続している他のノードの状態情報を定期的に分散的に交換します。これは、ソーシャル メディアで噂が広がる仕組みに似ています。つまり、わずかな状態の変化も最終的にはネットワーク全体に伝わり、すべてのノードがその状態の変化に関する完全な情報を持つことになります。
Solana では、ゴシップ プロトコルの実装に、Plumtree アルゴリズムをモデルにしたツリー ブロードキャスト アプローチによる非公式の通信方法が使用されます。これにより、中央のヘッド ソースに依存せずに状態変更が伝播されます。これは Solana のコントロール パネルとして機能し、バリデータと RPC ノードが通信用に開いているアドレスとポートを知るのに役立ちます。Solana ゴシップは、バリデータ、タービン プロトコル、アーカイブ ノード、履歴証明などの他の主要コンポーネントと連携します。バリデータと RPC は、ゴシップを使用して UDP 経由で 0.1 秒ごとに署名済みデータ オブジェクトを交換し、ネットワーク全体で情報の可用性を保証します。すべてのゴシップ メッセージは、コードベースで「パケット構造」と呼ばれる最大転送単位 (MTU) の 1280 バイト以下である必要があります。
ゴシップ プロトコルは、連絡先情報、台帳の高さ、投票などの署名済みデータ オブジェクトを継続的に共有することで、ノードがクラスター通信を効率的に管理するための中心的なメカニズムとして機能します。0.1 秒ごとに、ノードは「プッシュ」メッセージと「プル」メッセージを交換します。プッシュ メッセージは転送でき、両方のタイプが応答をトリガーできるため、ネットワーク全体での迅速なデータ配布が促進されます。既知の UDP/IP ポートまたはポート範囲で動作するゴシップ プロトコルにより、クラスターがブートストラップされた後、ノードはゴシップ エンドポイント (ソケット アドレス) を相互にアドバタイズできます。この分散型の高頻度通信グラフにより、Solana のノードは同期され、回復力を維持し、ブロックチェーンのスケーラビリティとパフォーマンスをサポートします。
Solana のゴシップ プロトコルでは、4 つのメッセージ タイプがクラスター通信を容易にします。最も頻繁に使用されるプッシュ メッセージは、選択された「プッシュ ピア」グループにデータを配布します。プル メッセージは、プル レスポンスとともに定期的に送信され、共有されていないデータを要求して配信することで、不足している情報を取得します。プル メッセージを使用すると、ノードは必要に応じてアクティブな接続を削減できます。最後に、Ping メッセージと Pong メッセージは、ピア ノードの動作状態を確認するために、ping によって pong 応答が促される、バイタリティ チェックとして機能します。
ゴシップ データは、クラスタ複製データ ストア (CrdsTable) に保存されます。このデータ構造は、ゴシップ プロトコル メッセージによって継続的に更新されます。これらのメッセージには、基本的に CrdsTable への増分更新であるゴシップ レコードが含まれています。
Solana は、アカウントの現在の状態を判断するために完全なトランザクション履歴を必要としない点で、他のブロックチェーンと異なります。そのアカウント モデルでは、特定のスロットの状態がわかっているため、バリデーターはすべての履歴ブロックを処理することなく現在の状態を保存できます。RPC とバリデーターは通常、元帳の履歴全体を保持しません。代わりに、最新のブロックを検証するのに十分な 1 または 2 エポック (2 〜 4 日) のトランザクション データのみを保存します。
アーカイブ データは、プロの RPC サービス プロバイダー、Solana Foundation、およびその他のエコシステム参加者によって実行される「ウェアハウス ノード」によって管理され、トランザクション履歴へのアクセスが保証されます。これらのウェアハウス ノードは、多くの場合、最初から再生できるように生の元帳と AccountsDB スナップショットを保存する Ledger アーカイブ、またはジェネシス ブロック以降のブロック データを RPC リクエストに適した形式で保存する Google Bigtable インスタンスのいずれかを維持します。
結論として、Solana のゴシップ プロトコルとアーカイブ システムは、ネットワーク全体で効率的な通信とデータ同期を可能にします。ゴシップ プロトコルは迅速な状態伝播を保証し、アーカイブ システムはトランザクション履歴を保存してバリデータと RPC が簡単にアクセスできるようにします。これらの機能が組み合わさって、Solana のスケーラビリティ、パフォーマンス、分散化がサポートされます。