メインコンテンツへスキップ
getLeaderSchedule RPCメソッドは、特定のエポックにおけるブロック生成のリーダーシップの割り当てをバリデータに対して返します。リーダースケジュールを理解することは、ネットワークの分析や、特定の時間にどのバリデータがブロックを生成するかの予測、特定のリーダーと連携するツールに役立ちます。

共通のユースケース

  • ネットワークモニタリング: エポックにおけるバリデータ間のリーダースロットの分布を観察します。
  • トランザクションルーティング(高度な技術): 一部の高度なアプリケーションは、通常ネットワークとRPCノードが処理するものの、現在または今後のリーダーにトランザクションをルーティングしようとするかもしれません。
  • バリデータのパフォーマンス分析: リーダースケジュールと実際のブロック生成を関連付けて、バリデータの稼働時間とパフォーマンスを評価します。
  • エポックの進行理解: エポック全体を通じてどのバリデータがブロックの生成を担当しているかを確認します。

リクエストパラメータ

このメソッドは最大2つのオプションパラメータを取ることができます:
  1. slot (u64, optional): スロット番号。提供された場合、このスロットを含むエポックのリーダースケジュールが取得されます。nullが提供されない場合、現在のエポックのリーダースケジュールが取得されます。
  2. config (object, optional): 以下を含むことができる設定オブジェクト:
  • commitment (string, optional): コミットメントレベルを指定します。指定されない場合、ノードのデフォルトのコミットメントが使用されます。
  • identity (string, optional): バリデータのbase-58エンコードされた公開鍵。指定された場合、返されるスケジュールにはこの特定のバリデータに割り当てられたスロットのみが含まれます。

応答構造

JSON-RPC応答のresultフィールドは次のようになります:
  • null: 要求されたslotに対応するエポック(またはスロットが提供されていない場合の現在のエポック)が見つからない場合、またはそのリーダースケジュールが利用できない場合(例:計算されていない未来のエポック)。
  • オブジェクト: スケジュールが見つかった場合。このオブジェクトはマップで、
  • キーはバリデータのbase-58エンコードされた公開鍵(アイデンティティ)です。
  • 対応するは数値の配列です。それぞれの数値は、そのバリデータがリーダーであるエポックの開始からのスロットインデックスです。
例えば、エポックがスロット1000で始まり、バリデータがスケジュール内の[0, 1, 5]を持っている場合、そのバリデータはスロット100010011005のリーダーです。

1. 現在のエポックのリーダースケジュールを取得

この例は、現在のエポックの完全なリーダースケジュールを取得します。

2. 特定のスロット内の特定のバリデータのリーダースケジュールを取得

この例は、スロット200000を含むエポックにおける特定のバリデータのリーダースケジュールを取得します。

開発者向けのヒント

  • エポックの境界: リーダースケジュールはエポック全体で固定されます。getEpochInfoを使用してエポックの開始および終了スロットを確認できます。
  • 未来のエポック: ネットワークがまだ計算していない遠い未来のエポックのスケジュールを要求する場合、nullが返されることがあります。
  • 相対スロットインデックス: 応答にあるスロット番号は、ブロックチェーンの絶対スロット番号ではなく、要求されたエポックの最初のスロットに対する相対的なものです。
  • 大きな応答: アイデンティティフィルタなしでエポック全体のスケジュールを取得する場合、応答は大きくなる可能性があり、すべてのバリデータとその割り当てられたスロットがリストされます。
このガイドは、Solanaネットワーク上で特定のエポックにおけるブロック生成者の割り当てをクエリするためにgetLeaderScheduleを使用するための必要な情報を提供します。

関連メソッド

getEpochInfo

スロット境界を含む現在のエポック情報を取得します

getSlotLeaders

特定のスロット範囲のリーダーを取得します