バリデータ情報 API ドキュメント
バリデータ情報 (getValidatorsInformation) API とは
getValidatorsInformation は、現在のエポックでリーダースロットを 1 つ以上持つバリデータを、ステーク量、ネットワークエンドポイント情報、推定リーダー位置、参考レイテンシ計測とあわせて、バリデータ 1 台につき 1 行で返す Solana 拡張 RPC メソッドです。ネットワーク上の全ノードの一覧を返すわけではなく、RPC ノードも返しません。ERPC の利用クレジット(API トークン)をお持ちの方は、通常の Solana RPC と同じ形式で呼び出せます。取得できる主な情報:
- 現在のエポックでスロットをリードするバリデータ 1 台につき 1 行。
slotCountが担当するスロット数を示します — スロット 1 つにつき 1 行を返すgetLeaderSlotsとは異なります - 各リーダーバリデータの
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 を省略するか params: [] を渡すと、現在のエポックでスロットをリードするすべてのバリデータが返ります。json
{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": []
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": []
}結果を絞り込むには、
limit・country・region を持つオブジェクトを渡します。次の例はドイツ国内のバリデータを最大 5 台まで要求するもので、上のフィルタなしのリクエストより費用も下がります。json
{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": [{ "limit": 5, "country": "DE" }]
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": [{ "limit": 5, "country": "DE" }]
}3 つのパラメータはいずれも任意です。
country は ISO 3166-1 alpha-2 の国コードで leaderCountry と照合し、大文字小文字は区別しません。region は leaderRegion と完全一致で照合し、大文字小文字を区別します — 対象のバリデータで使える値は、フィルタなしのレスポンスの leaderRegion を見て確認してください。limit は 1〜2000 を受け付け、そのエポックの実際のバリデータ数にクランプされるため、実数を超える limit を指定してもエラーにはなりません。使用例(HTTP)
bash
curl 'https://edge.erpc.global?api-key=<YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"getValidatorsInformation",
"params":[]
}'curl 'https://edge.erpc.global?api-key=<YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"getValidatorsInformation",
"params":[]
}'レスポンス例(JSON)
result.total は、このリクエストで返したバリデータ数です。以下の data[] 配列は、このエポックの 673 件のうち 3 件に省略しています。最初のエントリは ERPC の観測リージョン 7 か所すべてからの pingToLeaders を示し、残りのエントリは読みやすさのため 1 リージョンに絞っています。json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true,
"message": "Validator information retrieved successfully",
"epoch": 1011,
"total": 673,
"totalValidators": 673,
"data": [
{
"identity": "Fd7btgySsrjuo25CJCj7oE7VPMyezDhnx7pZkj2v69Nk",
"gossipNodeId": 734,
"slotCount": 16912,
"stakeWeight": 16803592.923637684,
"ipAddress": "141.95.45.24",
"gossipPort": 8001,
"tpuPort": null,
"tpuQuicPort": 8022,
"rpcAddress": null,
"version": "4.1.1",
"featureSet": "2220189554",
"leaderRegion": "frankfurt",
"leaderCity": "Frankfurt am Main",
"leaderCountry": "DE",
"leaderLat": 50.11552,
"leaderLon": 8.68417,
"leaderOrg": "AS16276 OVH SAS",
"leaderTimezone": "Europe/Berlin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 1.374,
"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": "London",
"region": "london",
"ms": 16.174,
"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": "Ebara",
"region": "tokyo",
"ms": 234.25,
"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": "Amsterdam",
"region": "amsterdam",
"ms": 14.072,
"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": "Newark",
"region": "ny",
"ms": 87.983,
"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": "Singapore",
"region": "singapore",
"ms": 221.655,
"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": "Sydney",
"region": "sydney",
"ms": 270.79,
"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": "HEL1USMZKAL2odpNBj2oCjffnFGaYwmbGmyewGv1e2TU",
"gossipNodeId": 678,
"slotCount": 15656,
"stakeWeight": 16025294.32908543,
"ipAddress": "207.241.184.11",
"gossipPort": 8001,
"tpuPort": null,
"tpuQuicPort": 8002,
"rpcAddress": null,
"version": "4.1.0-rc.1",
"featureSet": "3345198602",
"leaderRegion": "london",
"leaderCity": "London",
"leaderCountry": "GB",
"leaderLat": 51.50853,
"leaderLon": -0.12574,
"leaderOrg": "AS399460 Helius",
"leaderTimezone": "Europe/London",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 11.246,
"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": "JUPiTERrZqgf1jUyR7dSkhMx4Kn2qJyekWsg3LT1h4b",
"gossipNodeId": 273524,
"slotCount": 12920,
"stakeWeight": 12539698.447203109,
"ipAddress": "88.216.36.133",
"gossipPort": 8000,
"tpuPort": null,
"tpuQuicPort": 9007,
"rpcAddress": null,
"version": "4.2.0-rc.0",
"featureSet": "4119855713",
"leaderRegion": "frankfurt",
"leaderCity": "Frankfurt am Main",
"leaderCountry": "DE",
"leaderLat": 50.139,
"leaderLon": 8.6725,
"leaderOrg": "AS213896 UAB \"Cherry Servers\"",
"leaderTimezone": "Europe/Berlin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 0.061,
"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": "Validator information retrieved successfully",
"epoch": 1011,
"total": 673,
"totalValidators": 673,
"data": [
{
"identity": "Fd7btgySsrjuo25CJCj7oE7VPMyezDhnx7pZkj2v69Nk",
"gossipNodeId": 734,
"slotCount": 16912,
"stakeWeight": 16803592.923637684,
"ipAddress": "141.95.45.24",
"gossipPort": 8001,
"tpuPort": null,
"tpuQuicPort": 8022,
"rpcAddress": null,
"version": "4.1.1",
"featureSet": "2220189554",
"leaderRegion": "frankfurt",
"leaderCity": "Frankfurt am Main",
"leaderCountry": "DE",
"leaderLat": 50.11552,
"leaderLon": 8.68417,
"leaderOrg": "AS16276 OVH SAS",
"leaderTimezone": "Europe/Berlin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 1.374,
"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": "London",
"region": "london",
"ms": 16.174,
"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": "Ebara",
"region": "tokyo",
"ms": 234.25,
"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": "Amsterdam",
"region": "amsterdam",
"ms": 14.072,
"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": "Newark",
"region": "ny",
"ms": 87.983,
"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": "Singapore",
"region": "singapore",
"ms": 221.655,
"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": "Sydney",
"region": "sydney",
"ms": 270.79,
"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": "HEL1USMZKAL2odpNBj2oCjffnFGaYwmbGmyewGv1e2TU",
"gossipNodeId": 678,
"slotCount": 15656,
"stakeWeight": 16025294.32908543,
"ipAddress": "207.241.184.11",
"gossipPort": 8001,
"tpuPort": null,
"tpuQuicPort": 8002,
"rpcAddress": null,
"version": "4.1.0-rc.1",
"featureSet": "3345198602",
"leaderRegion": "london",
"leaderCity": "London",
"leaderCountry": "GB",
"leaderLat": 51.50853,
"leaderLon": -0.12574,
"leaderOrg": "AS399460 Helius",
"leaderTimezone": "Europe/London",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 11.246,
"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": "JUPiTERrZqgf1jUyR7dSkhMx4Kn2qJyekWsg3LT1h4b",
"gossipNodeId": 273524,
"slotCount": 12920,
"stakeWeight": 12539698.447203109,
"ipAddress": "88.216.36.133",
"gossipPort": 8000,
"tpuPort": null,
"tpuQuicPort": 9007,
"rpcAddress": null,
"version": "4.2.0-rc.0",
"featureSet": "4119855713",
"leaderRegion": "frankfurt",
"leaderCity": "Frankfurt am Main",
"leaderCountry": "DE",
"leaderLat": 50.139,
"leaderLon": 8.6725,
"leaderOrg": "AS213896 UAB \"Cherry Servers\"",
"leaderTimezone": "Europe/Berlin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 0.061,
"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.epoch | 返されたリーダー集合が属するエポック。リーダースケジュールに存在する最新のエポックです。 |
result.total | data に含まれるバリデータ数。価格は要求した数ではなく、この数から計算されます。 |
result.totalValidators | country・region・limit を適用する前の、そのエポックのリーダーバリデータ数。result.total と比べると、フィルタでどれだけ絞られたかが分かります。 |
result.data[] | バリデータ 1 台につき 1 エントリ。slotCount の降順、同数なら identity 順に並ぶため、limit を指定するとリーダースロットの多いバリデータから返ります。 |
identity | バリデータの identity public key。 |
gossipNodeId | このバリデータに紐づく gossip ノードレコードの識別子。紐づく gossip ノードがない場合は null で、そのときは位置・ポート・ping のフィールドも空になります。gossip ノードが紐づいていないバリデータは、フィルタなしのリクエストでは返りますが、country や region のフィルタには一致しません。 |
slotCount | このエポックでこのバリデータが担当するリーダースロット数。各エントリはスロット単位ではなくバリデータ単位です。 |
stakeWeight | このバリデータ identity のアクティブステーク量(SOL 単位)。gossip ノードが紐づいていないバリデータは 0 を返します。 |
ipAddress, gossipPort, tpuPort, tpuQuicPort, rpcAddress | バリデータの gossip ネットワークエンドポイント情報。 |
version, featureSet | バリデータが報告する Solana クライアントバージョンと feature set。 |
leaderRegion | ルーティングや分析に使う正規化済みリージョン名。近い都市やプロバイダ拠点をまとめる場合があり、リクエストパラメータ region が照合する値です。 |
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 | 読み取り方 |
|---|---|---|---|---|---|
| frankfurt | Frankfurt am Main, DE | 16,912 | 16,803,592.92 | 1.374 ms | エポックでスロット数が最も多いリーダーで、同一メトロ。Frankfurt の設備は 1 つのスロットウィンドウだけでなく、エポック全体を通してこのバリデータに効きます。 |
| london | London, GB | 15,656 | 16,025,294.33 | 11.246 ms | 2 番目にスロット数の多いリーダー。Frankfurt からでも十分届くが、London の拠点ならこの経路をほぼメトロ内並みのレイテンシに下げられる。 |
| frankfurt | Frankfurt am Main, DE | 12,920 | 12,539,698.45 | 0.061 ms | トップの約 4 分の 3 のスロット数を持つ、もう 1 つの同一メトロのリーダー。同一リージョンの拠点で同じようにカバーできる。 |
getLeaderSlots は「次のスロットを誰がリードするか」に答えるため、いま送るトランザクションのルーティングに向いています。本メソッドは「そのエポックでリードするのは誰で、どれだけの頻度か」に答えるため、そのエポックのあいだ設備をどこに置くかの判断に向いています。
Solana ネットワークデータサイト
ネットワーク分布の公開情報は Validators Solutions で確認し、バリデータ単位のスロット数、ステーク量、位置、実測レイテンシには
getValidatorsInformation を使います。トークン使用量
このメソッドは、返したバリデータ数に応じて 10 台単位で課金されます。バリデータ 10 台につき 100 トークンで、端数は 1 単位として数えます。したがってバリデータ 95 台のレスポンスは 10 単位、つまり 1,000 トークンとして課金されます。
課金は要求した内容ではなく実際に返した内容に従うため、
country や region で絞り込むとその分だけ費用も下がり、1 台も一致しないリクエストは課金されません。エポックのバリデータ数を超える limit は実際の数にクランプされるため、存在しないバリデータの分を支払うことはありません。リーダー集合の規模はエポックごとに変わります。上の例のエポックでは 673 台だったため、全台の取得はおおよそ 6,800 トークンになります。
なぜバリデータ情報が重要か
- バリデータ 1 台につき 1 行なので、数十万件のスロット行をクライアント側で集計しなくても、このエポックで誰がどれだけリードするのかが分かります。
slotCountはこのエポックでそのバリデータがリーダーになる頻度を示すため、slotCountの大きいバリデータへの短い経路は繰り返し効いてきます。countryとregionから、そのエポックのリーダー能力が実際にどこにあるのかが分かります。- ping と
measuredAtを組み合わせると、遅い経路と古い計測値を切り分けられます。
背景
Solana の 1 エポックは約 432,000 スロットです。それらのスロットのリーダー割り当てをバリデータ identity ごとにまとめると、およそ 670 行のバリデータに集約されます。ERPC ではリーダースケジュール、バリデータメタデータ、地理情報、レイテンシ計測を整備し、その結果を RPC 経由で提供しています。
戦略的活用例
- エポック単位のキャパシティプランニング: 直近のスロットウィンドウではなく、現在のエポックでリードするバリデータ全体に対して設備規模を決める。
- リージョン別の候補抽出:
countryとregionで、対象地域でスロットをリードしているバリデータを絞り込む。 - スロット数とステーク量を考慮した優先順位付け:
slotCountとstakeWeightを組み合わせて、候補内のバリデータを順位付けする。 - エポック間のモニタリング: エポック間で
leaderRegionの分布を比較し、リーダーの地理的な偏りがどう動くかを見る。
利用条件
getValidatorsInformation は ERPC の全ユーザーが利用可能です。API トークン(利用クレジット)は ERPC Web ダッシュボードで発行・確認できます。- ERPC Web ダッシュボード: ERPC Web ダッシュボード
トランザクション成功率と SWQoS エンドポイント
トランザクションの成功率と実行速度をさらに高めるには、SWQoS エンドポイントの利用をおすすめします。SWQoS(Stake-weighted Quality of Service)は、ステーク接続を持つバリデータを優先する仕組みです。リーダーは帯域の約 80% を優先帯域、約 20% を非優先帯域に割り当て、優先帯域は非優先の約 5 倍の throughput を持ちます。このスケジューリングは Priority fee の評価より前に適用されるため、まず SWQoS の優先レーンに乗ることが低レイテンシ処理の前提になります。







