getClusterNodes RPCメソッドは、現在Solanaクラスターに参加している既知の全てのノードのリストを返します。この情報は、ネットワーク分析、代替RPCエンドポイントの発見、またはクエリノードからみたネットワークの現在のトポロジーを理解するのに役立ちます。
一般的な使用ケース
- ネットワークトポロジー分析: クラスター内の既知のノードのスナップショットを取得し、それらの公開鍵とネットワークアドレス(ゴシップ、TPU、RPC)を含みます。
- RPCエンドポイントの発見: クラスター内で他の潜在的なRPCサーバーを特定します(ただし、可用性やレート制限は異なる場合があります)。
- ノードバージョンの監視: クラスター内の異なるノードで実行されているソフトウェアバージョンを観察します。
リクエストパラメータ
このメソッドはパラメータを受け取りません。レスポンス構造
JSON-RPCレスポンスのresultフィールドはオブジェクトの配列になります。各オブジェクトはノードを表し、以下のフィールドを含みます:
pubkey(string): ノードの公開鍵(アイデンティティ)、base58エンコード。gossip(string | null): ノードのゴシップサービスのIPアドレスとポート。利用不可の場合はnullになることがあります。tpu(string | null): ノードのトランザクション処理ユニット(TPU)のIPアドレスとポート。トランザクションを直接送信するために使用されます。nullになることがあります。rpc(string | null): ノードのJSON-RPCサービスのIPアドレスとポート。このノードによってRPCサービスが有効または広告されていない場合はnullになることがあります。version(string | null): ノードのソフトウェアバージョン。バージョン情報が利用不可の場合はnull。featureSet(u32 | null): ノードのフィーチャーセットの一意の識別子。nullになることがあります。shredVersion(u16 | null): このノードがブロック(シュレッド)を保存および送信する際に使用するデータ構造のバージョン。nullになることがあります。
例
1. 既知のクラスターノードをすべて取得する
この例では、クエリされたRPCエンドポイントが知っているすべてのノードのリストを取得します。開発者向けのヒント
- ノードの視点: 返されるリストは、クエリしている特定のRPCノードが知っているノードを反映しています。異なるRPCノードでは、特にネットワークの変化によって、異なるクラスターの見え方をする可能性があります。
- RPCの可用性: リストにあるすべてのノードが必ずしもRPCポートを開いている、または公開しているわけではありません。
rpcフィールドがnullでないことは広告されたRPCエンドポイントを示しますが、アクセス可能性やパフォーマンスを保証するものではありません。 - 動的リスト: クラスタートポロジーは動的です。ノードは参加と離脱ができるため、リストは時間とともに変わることがあります。
- 大規模なレスポンス: Mainnet Betaのような大規模なネットワークでは、レスポンスが非常に大きくなり、多くのノードをリストすることになります。
getClusterNodes RPCメソッドを使用するための必要な情報を提供します。