getVoteAccounts RPCメソッドは、現在のバンク内のすべての投票アカウント(バリデーター)に関する情報を返します。current(アクティブ)バリデーターとdelinquentバリデーターを区別し、ステーク、投票活動、アイデンティティに関する詳細を提供します。
一般的なユースケース
- バリデーターモニタリング: ネットワーク上のバリデーターのステータス、ステーク、およびパフォーマンスを追跡します。
- ステーキングダッシュボード: SOLを委任しようとしているユーザー向けに利用可能なバリデーターの情報を表示します。
- ネットワークの健全性分析: ステークの分布とバリデーターの活動を調査することで、ネットワーク全体の健全性と分散性を評価します。
- 怠惰なバリデーターの特定: コンセンサスに積極的に参加していないバリデーターを見つけます。
リクエストパラメータ
このメソッドは、以下のフィールドを持つオプションの設定オブジェクトを受け入れます。commitment(string, optional): クエリのコミットメントレベル を指定します(例:"finalized","confirmed","processed")。省略した場合、ノードのデフォルトのコミットメントが使用されます。votePubkey(string, optional): 提供された場合、指定されたバリデーターの投票アカウントアドレス(base-58エンコード)のみを含むように結果がフィルタリングされます。keepUnstakedDelinquents(boolean, optional): デフォルトはfalseです。trueに設定すると、ステークがアクティブでないバリデーターも含まれます。それ以外の場合はフィルタリングされます。delinquentSlotDistance(u64, optional): 台帳の先端から遅れているスロット数を指定して、怠惰と見なされるバリデーターを決定します。指定しない場合、ノードのデフォルト値が使用されます。
レスポンス構造
JSON-RPCレスポンスのresultフィールドは、2つの配列を含むオブジェクトです。
current: オブジェクトの配列であり、各オブジェクトは次のフィールドを持つアクティブな投票アカウントを表します。votePubkey(string): 投票アカウントアドレス(base-58エンコード)。nodePubkey(string): バリデーターノードのアイデンティティ公開鍵(base-58エンコード)。activatedStake(u64): この投票アカウントに委任され、現在のエポックでアクティブなステーク量(lamports)。epochVoteAccount(boolean): 現在のエポック中に少なくとも一度アクティブだった場合にtrue。commission(number): バリデーターによって課せられる手数料の割合(0-100)。lastVote(u64): 最も最近バリデーターが投票したスロット番号。rootSlot(u64): ノードがルートと見なした最後のスロット(完全に確認されてロールバックされることのないブロック)。epochCredits(array): 各内部配列が[epoch, credits_earned_in_epoch, previous_total_credits]を含む配列の配列。
delinquent: ノードによって怠惰と見なされるバリデーターを表す、currentと同様の構造を持つオブジェクトの配列。
コード例
開発者へのヒント
- 大きなレスポンス: このメソッドは、多くのバリデーターがあるネットワーク(例えばMainnet Beta)で大量のデータを返すことがあります。レスポンスサイズと処理時間に注意してください。
- 怠惰の定義: 「怠惰」の定義は、
delinquentSlotDistanceとノードの視点に依存します。あるノードでは怠惰に見えるバリデーターが、別のノードではそう見えないかもしれません。台帳の先端への見解が異なるためです。 - ステークのアクティベーション:
activatedStakeは、現在のエポックでアクティブなステークを反映しています。ステークのアクティベーションとデアクティベーションには時間がかかります。 - エポッククレジット:
epochCreditsは、投票によってクレジットを獲得するバリデーターのパフォーマンス履歴を提供します。
getVoteAccounts RPCメソッドをカバーしています。