リーダースロット情報 API ドキュメント
リーダースロット情報 (getLeaderSlots) API とは
getLeaderSlots は、今後のリーダースロットについて、バリデータ identity、ステーク量、ネットワークエンドポイント情報、推定リーダー位置、参考レイテンシ計測を返す Solana 拡張 RPC メソッドです。ERPC の利用クレジット(API トークン)をお持ちの方は、通常の Solana RPC と同じ形式で呼び出せます。取得できる主な情報:
- 指定スロット以降のリーダーバリデータスケジュール
- 各リーダーバリデータの
stakeWeight - 推定リーダーリージョン、都市、国、緯度経度、ASN 組織、タイムゾーン
- ERPC の観測リージョンからリーダーへの参考 ping 計測(
pingToLeaders)
エンドポイントとリクエストボディ例
text
https://edge.erpc.global?api-key=<YOUR_API_KEY>https://edge.erpc.global?api-key=<YOUR_API_KEY>params に開始スロット番号を指定します。json
{
"jsonrpc": "2.0",
"id": 1,
"method": "getLeaderSlots",
"params": [436946064]
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getLeaderSlots",
"params": [436946064]
}使用例(HTTP)
bash
curl 'https://edge.erpc.global?api-key=<YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"getLeaderSlots",
"params":[436946064]
}'curl 'https://edge.erpc.global?api-key=<YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"getLeaderSlots",
"params":[436946064]
}'レスポンス例(JSON)
現在のレスポンスでは、レコードは
result.data[] に入ります。result.total は返却された件数です。以下の data[] 配列は、このリクエストの 100 件のうち 3 件に省略しています。最初のエントリは ERPC の観測リージョン 7 か所すべてからの pingToLeaders を示し、残りのエントリは読みやすさのため 1 リージョンに絞っています。json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true,
"message": "Leader schedule records retrieved successfully",
"total": 100,
"data": [
{
"identity": "BXAxLMMMUNYfC1z166VjWHR3WjTmqzLxB837o5ghmRtH",
"epoch": 1011,
"slot": "436946064",
"stakeWeight": 819031.365477103,
"ipAddress": "202.8.10.164",
"gossipPort": 8000,
"tpuPort": null,
"tpuQuicPort": 5010,
"rpcAddress": null,
"version": "4.1.2",
"featureSet": "3345198602",
"leaderRegion": "dublin",
"leaderCity": "Crumlin",
"leaderCountry": "IE",
"leaderLat": 53.32154,
"leaderLon": -6.31439,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Dublin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 18.438,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-03T06:20:48.000Z"
},
{
"city": "Newark",
"region": "ny",
"ms": 74.981,
"icmpReplied": true,
"fromIp": "64.130.37.222",
"country": "US",
"lat": 40.73566,
"lon": -74.17237,
"org": "AS20326 TeraSwitch Networks Inc.",
"postal": "07102",
"timezone": "America/New_York",
"measuredAt": "2026-08-03T06:22:21.000Z"
},
{
"city": "London",
"region": "london",
"ms": 10.978,
"icmpReplied": true,
"fromIp": "67.209.52.250",
"country": "GB",
"lat": 51.50853,
"lon": -0.12574,
"org": "AS20326 TeraSwitch Networks Inc.",
"postal": "WC2N",
"timezone": "Europe/London",
"measuredAt": "2026-08-03T06:23:06.000Z"
},
{
"city": "Singapore",
"region": "singapore",
"ms": 166.379,
"icmpReplied": true,
"fromIp": "202.8.11.52",
"country": "SG",
"lat": 1.2959,
"lon": 103.7907,
"org": "AS20326 TeraSwitch Networks Inc.",
"postal": "139963",
"timezone": "Asia/Singapore",
"measuredAt": "2026-08-03T06:24:52.000Z"
},
{
"city": "Amsterdam",
"region": "amsterdam",
"ms": 12.827,
"icmpReplied": true,
"fromIp": "84.32.103.245",
"country": "NL",
"lat": 52.37403,
"lon": 4.88969,
"org": "AS59642 UAB Cherry Servers",
"postal": "1012",
"timezone": "Europe/Amsterdam",
"measuredAt": "2026-08-03T06:21:33.000Z"
},
{
"city": "Ebara",
"region": "tokyo",
"ms": 212.499,
"icmpReplied": true,
"fromIp": "198.13.133.88",
"country": "JP",
"lat": 35.617,
"lon": 139.7486,
"org": "AS20326 TeraSwitch Networks Inc.",
"postal": "140-0002",
"timezone": "Asia/Tokyo",
"measuredAt": "2026-08-03T06:24:01.000Z"
},
{
"city": "Sydney",
"region": "sydney",
"ms": 274.379,
"icmpReplied": true,
"fromIp": "82.26.116.36",
"country": "AU",
"lat": -33.86785,
"lon": 151.20732,
"org": "AS29802 HIVELOCITY, Inc.",
"postal": "1001",
"timezone": "Australia/Sydney",
"measuredAt": "2026-08-03T06:25:50.000Z"
}
]
},
{
"identity": "BXAxLMMMUNYfC1z166VjWHR3WjTmqzLxB837o5ghmRtH",
"epoch": 1011,
"slot": "436946065",
"stakeWeight": 819031.365477103,
"ipAddress": "202.8.10.164",
"gossipPort": 8000,
"tpuPort": null,
"tpuQuicPort": 5010,
"rpcAddress": null,
"version": "4.1.2",
"featureSet": "3345198602",
"leaderRegion": "dublin",
"leaderCity": "Crumlin",
"leaderCountry": "IE",
"leaderLat": 53.32154,
"leaderLon": -6.31439,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Dublin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 18.438,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-03T06:20:48.000Z"
}
]
},
{
"identity": "BXAxLMMMUNYfC1z166VjWHR3WjTmqzLxB837o5ghmRtH",
"epoch": 1011,
"slot": "436946066",
"stakeWeight": 819031.365477103,
"ipAddress": "202.8.10.164",
"gossipPort": 8000,
"tpuPort": null,
"tpuQuicPort": 5010,
"rpcAddress": null,
"version": "4.1.2",
"featureSet": "3345198602",
"leaderRegion": "dublin",
"leaderCity": "Crumlin",
"leaderCountry": "IE",
"leaderLat": 53.32154,
"leaderLon": -6.31439,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Dublin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 18.438,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-03T06:20:48.000Z"
}
]
}
]
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true,
"message": "Leader schedule records retrieved successfully",
"total": 100,
"data": [
{
"identity": "BXAxLMMMUNYfC1z166VjWHR3WjTmqzLxB837o5ghmRtH",
"epoch": 1011,
"slot": "436946064",
"stakeWeight": 819031.365477103,
"ipAddress": "202.8.10.164",
"gossipPort": 8000,
"tpuPort": null,
"tpuQuicPort": 5010,
"rpcAddress": null,
"version": "4.1.2",
"featureSet": "3345198602",
"leaderRegion": "dublin",
"leaderCity": "Crumlin",
"leaderCountry": "IE",
"leaderLat": 53.32154,
"leaderLon": -6.31439,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Dublin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 18.438,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-03T06:20:48.000Z"
},
{
"city": "Newark",
"region": "ny",
"ms": 74.981,
"icmpReplied": true,
"fromIp": "64.130.37.222",
"country": "US",
"lat": 40.73566,
"lon": -74.17237,
"org": "AS20326 TeraSwitch Networks Inc.",
"postal": "07102",
"timezone": "America/New_York",
"measuredAt": "2026-08-03T06:22:21.000Z"
},
{
"city": "London",
"region": "london",
"ms": 10.978,
"icmpReplied": true,
"fromIp": "67.209.52.250",
"country": "GB",
"lat": 51.50853,
"lon": -0.12574,
"org": "AS20326 TeraSwitch Networks Inc.",
"postal": "WC2N",
"timezone": "Europe/London",
"measuredAt": "2026-08-03T06:23:06.000Z"
},
{
"city": "Singapore",
"region": "singapore",
"ms": 166.379,
"icmpReplied": true,
"fromIp": "202.8.11.52",
"country": "SG",
"lat": 1.2959,
"lon": 103.7907,
"org": "AS20326 TeraSwitch Networks Inc.",
"postal": "139963",
"timezone": "Asia/Singapore",
"measuredAt": "2026-08-03T06:24:52.000Z"
},
{
"city": "Amsterdam",
"region": "amsterdam",
"ms": 12.827,
"icmpReplied": true,
"fromIp": "84.32.103.245",
"country": "NL",
"lat": 52.37403,
"lon": 4.88969,
"org": "AS59642 UAB Cherry Servers",
"postal": "1012",
"timezone": "Europe/Amsterdam",
"measuredAt": "2026-08-03T06:21:33.000Z"
},
{
"city": "Ebara",
"region": "tokyo",
"ms": 212.499,
"icmpReplied": true,
"fromIp": "198.13.133.88",
"country": "JP",
"lat": 35.617,
"lon": 139.7486,
"org": "AS20326 TeraSwitch Networks Inc.",
"postal": "140-0002",
"timezone": "Asia/Tokyo",
"measuredAt": "2026-08-03T06:24:01.000Z"
},
{
"city": "Sydney",
"region": "sydney",
"ms": 274.379,
"icmpReplied": true,
"fromIp": "82.26.116.36",
"country": "AU",
"lat": -33.86785,
"lon": 151.20732,
"org": "AS29802 HIVELOCITY, Inc.",
"postal": "1001",
"timezone": "Australia/Sydney",
"measuredAt": "2026-08-03T06:25:50.000Z"
}
]
},
{
"identity": "BXAxLMMMUNYfC1z166VjWHR3WjTmqzLxB837o5ghmRtH",
"epoch": 1011,
"slot": "436946065",
"stakeWeight": 819031.365477103,
"ipAddress": "202.8.10.164",
"gossipPort": 8000,
"tpuPort": null,
"tpuQuicPort": 5010,
"rpcAddress": null,
"version": "4.1.2",
"featureSet": "3345198602",
"leaderRegion": "dublin",
"leaderCity": "Crumlin",
"leaderCountry": "IE",
"leaderLat": 53.32154,
"leaderLon": -6.31439,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Dublin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 18.438,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-03T06:20:48.000Z"
}
]
},
{
"identity": "BXAxLMMMUNYfC1z166VjWHR3WjTmqzLxB837o5ghmRtH",
"epoch": 1011,
"slot": "436946066",
"stakeWeight": 819031.365477103,
"ipAddress": "202.8.10.164",
"gossipPort": 8000,
"tpuPort": null,
"tpuQuicPort": 5010,
"rpcAddress": null,
"version": "4.1.2",
"featureSet": "3345198602",
"leaderRegion": "dublin",
"leaderCity": "Crumlin",
"leaderCountry": "IE",
"leaderLat": 53.32154,
"leaderLon": -6.31439,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Dublin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 18.438,
"icmpReplied": true,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin",
"measuredAt": "2026-08-03T06:20:48.000Z"
}
]
}
]
}
}レスポンスフィールド
| フィールド | 意味 |
|---|---|
result.success | リクエストが成功したかどうか。 |
result.message | ステータスメッセージ。 |
result.total | 返却されたリーダースロット件数。現在は 1 リクエストあたり 100 件です。 |
result.data[] | 指定スロット以降のリーダースロットレコード。 |
identity | リーダーバリデータの identity public key。 |
epoch | 対象スロットが含まれる Solana epoch。 |
slot | スロット番号。JSON number ではなく文字列として返るため、クライアント側でも文字列として扱うのが安全です。 |
stakeWeight | リーダーバリデータに委任されているステーク量。ステークが大きいほど、長い時間軸ではリーダーに選ばれる頻度が高くなりやすいです。 |
leaderRegion | ルーティングや分析に使う正規化済みリージョン名。近い都市やプロバイダ拠点をまとめる場合があります。 |
leaderCity, leaderCountry, leaderLat, leaderLon, leaderOrg, leaderTimezone | リーダーバリデータの推定地理情報とネットワーク組織。 |
pingToLeaders[] | ERPC の観測リージョンからリーダーへの参考レイテンシ。region、city、ms、icmpReplied、fromIp、国、緯度経度、ASN 組織、郵便番号、タイムゾーン、measuredAt を含みます。region は frankfurt、amsterdam、ny、london、tokyo、singapore、sydney のいずれかです。 |
pingToLeaders[].icmpReplied | バリデータが ICMP の計測に応答したかどうか。false のとき ms はレイテンシではなく保存されたセンチネル値です。false は応答が無かったことを示すだけで、「遠い」「避けるべき」という意味ではありません。ICMP には応答しないものの TPU/QUIC では正常に機能しているバリデータもあり、この値だけで送信対象を絞ると、健全なリーダーを送信経路から落としてしまうことがあります。ms を読む前に icmpReplied を確認してください。 |
pingToLeaders[].measuredAt | レイテンシを最後に計測した時刻(UTC・ISO-8601)。その計測値がどれだけ新しいかの判断に使います。計測は観測リージョンごとに独立して行われるため、同じ pingToLeaders 配列の中でも measuredAt はエントリごとに異なることがあります。完了しなかった更新は、実測していない値で上書きせず前回の実測値をそのまま残すため、古い measuredAt も、実際に計測が行われた時刻です。 |
リーダースロットを視覚的に見る
同じレスポンスは、スロットごとの運用タイムラインとして見ると分かりやすくなります。以下はフランクフルトを観測地点にした例です。
| スロット範囲 | リーダーリージョン | リーダー位置 | ステーク量 | Frankfurt からの ping | 読み取り方 |
|---|---|---|---|---|---|
| 436946064-436946066 | dublin | Crumlin, IE | 819,031.37 | 18.438 ms | 1 つのリーダーが 3 スロットを連続で担当。Frankfurt からは 18.4 ms だが、London (11.0 ms) と Amsterdam (12.8 ms) のほうが近い。このウィンドウでは London または Amsterdam の拠点が Frankfurt より有利。 |
| 436946068 | frankfurt | Frankfurt am Main, DE | 166,438.25 | 0.062 ms | 同一メトロのリーダー。このスロットでは Frankfurt 拠点が強く有利。 |
この見方が重要なのは、Solana がグローバルに動作するためです。従来型 HFT のように一つの取引所マッチングエンジン近くに置けば終わりではなく、Solana では世界中のバリデータ間でリーダーが交代します。そのため、最速に近いリージョンもリーダースケジュールに合わせて変わります。
Solana ネットワークデータサイト
バリデータ分布やネットワーク全体の公開情報を確認するには、Validators Solutions を利用できます。Solana ネットワーク全体の分布を Validators Solutions で把握し、スロット単位のリーダースケジュール、ステーク量、バリデータ位置、実測レイテンシが必要な運用判断には
getLeaderSlots を使います。トークン使用量
指定したスロットから 100 件のリーダースロット情報を取得します。1 回のリクエストにつき 420 トークンを使用します。
スロット単位ではなく、エポック全体をバリデータ 1 台につき 1 エントリで取得したい場合は、Validators Information API を使います。課金は実際に返したバリデータ数に従います。
なぜリーダースロット情報が重要か
- リーダーの物理距離やネットワーク経路が遠い場合、直接送信は不利になりやすい。
- ステーク量を見ることで、長い時間軸でどのバリデータがリーダーに現れやすいかを把握できる。
- グローバルなリーダー交代では、単一の平均レイテンシよりもリージョン切替戦略が重要になる。
- スロットスケジュール、ステーク量、リーダー位置、実測 ping を組み合わせることで、送信先と配置を最適化できる。
背景
Solana の 1 epoch は約 432,000 スロットです。リーダースケジュール、バリデータメタデータ、地理情報、レイテンシ計測を継続的に収集するには専用のデータ基盤が必要です。ERPC ではこれを整備し、即利用できるリーダースロットマップとして RPC 経由で提供しています。
戦略的活用例
- 検知最適化: 近距離、低 ms のリーダーウィンドウを優先する。
- 多拠点化: FRA、AMS、NY、TY、SGP などに拠点を置き、リーダー交代時の取りこぼしを減らす。
- ステーク考慮:
stakeWeightを使い、長い時間軸で重要度が高いリーダーを把握する。 - 可視化・分析: リージョン別のリーダー比率、ステーク分布、レイテンシ分布を監視する。
利用条件
getLeaderSlots は ERPC の全ユーザーが利用可能です。API トークン(利用クレジット)は ERPC Web ダッシュボードで発行・確認できます。- ERPC Web ダッシュボード: ERPC Web ダッシュボード
トランザクション成功率と SWQoS エンドポイント
トランザクションの成功率と実行速度をさらに高めるには、SWQoS エンドポイントの利用をおすすめします。SWQoS(Stake-weighted Quality of Service)は、ステーク接続を持つバリデータを優先する仕組みです。リーダーは帯域の約 80% を優先帯域、約 20% を非優先帯域に割り当て、優先帯域は非優先の約 5 倍の throughput を持ちます。このスケジューリングは Priority fee の評価より前に適用されるため、まず SWQoS の優先レーンに乗ることが低レイテンシ処理の前提になります。







