getLeaderSchedule RPCメソッドは、特定のエポックにおけるブロック生成のリーダーシップの割り当てをバリデータに対して返します。リーダースケジュールを理解することは、ネットワークの分析や、特定の時間にどのバリデータがブロックを生成するかの予測、特定のリーダーと連携するツールに役立ちます。
共通のユースケース
- ネットワークモニタリング: エポックにおけるバリデータ間のリーダースロットの分布を観察します。
- トランザクションルーティング(高度な技術): 一部の高度なアプリケーションは、通常ネットワークとRPCノードが処理するものの、現在または今後のリーダーにトランザクションをルーティングしようとするかもしれません。
- バリデータのパフォーマンス分析: リーダースケジュールと実際のブロック生成を関連付けて、バリデータの稼働時間とパフォーマンスを評価します。
- エポックの進行理解: エポック全体を通じてどのバリデータがブロックの生成を担当しているかを確認します。
リクエストパラメータ
このメソッドは最大2つのオプションパラメータを取ることができます:slot(u64, optional): スロット番号。提供された場合、このスロットを含むエポックのリーダースケジュールが取得されます。nullが提供されない場合、現在のエポックのリーダースケジュールが取得されます。config(object, optional): 以下を含むことができる設定オブジェクト:
commitment(string, optional): コミットメントレベルを指定します。指定されない場合、ノードのデフォルトのコミットメントが使用されます。identity(string, optional): バリデータのbase-58エンコードされた公開鍵。指定された場合、返されるスケジュールにはこの特定のバリデータに割り当てられたスロットのみが含まれます。
応答構造
JSON-RPC応答のresultフィールドは次のようになります:
null: 要求されたslotに対応するエポック(またはスロットが提供されていない場合の現在のエポック)が見つからない場合、またはそのリーダースケジュールが利用できない場合(例:計算されていない未来のエポック)。- オブジェクト: スケジュールが見つかった場合。このオブジェクトはマップで、
- 各キーはバリデータのbase-58エンコードされた公開鍵(アイデンティティ)です。
- 対応する値は数値の配列です。それぞれの数値は、そのバリデータがリーダーであるエポックの開始からのスロットインデックスです。
1000で始まり、バリデータがスケジュール内の[0, 1, 5]を持っている場合、そのバリデータはスロット1000、1001、1005のリーダーです。
例
1. 現在のエポックのリーダースケジュールを取得
この例は、現在のエポックの完全なリーダースケジュールを取得します。2. 特定のスロット内の特定のバリデータのリーダースケジュールを取得
この例は、スロット200000を含むエポックにおける特定のバリデータのリーダースケジュールを取得します。
開発者向けのヒント
- エポックの境界: リーダースケジュールはエポック全体で固定されます。
getEpochInfoを使用してエポックの開始および終了スロットを確認できます。 - 未来のエポック: ネットワークがまだ計算していない遠い未来のエポックのスケジュールを要求する場合、
nullが返されることがあります。 - 相対スロットインデックス: 応答にあるスロット番号は、ブロックチェーンの絶対スロット番号ではなく、要求されたエポックの最初のスロットに対する相対的なものです。
- 大きな応答: アイデンティティフィルタなしでエポック全体のスケジュールを取得する場合、応答は大きくなる可能性があり、すべてのバリデータとその割り当てられたスロットがリストされます。
getLeaderScheduleを使用するための必要な情報を提供します。
関連メソッド
getEpochInfo
スロット境界を含む現在のエポック情報を取得します
getSlotLeaders
特定のスロット範囲のリーダーを取得します