バリデータ情報 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>
パラメータはすべて任意です。params を省略するか params: [] を渡すと、現在のエポックでスロットをリードするすべてのバリデータが返ります。
json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getValidatorsInformation",
  "params": []
}
結果を絞り込むには、limitcountryregion を持つオブジェクトを渡します。次の例はドイツ国内のバリデータを最大 5 台まで要求するもので、上のフィルタなしのリクエストより費用も下がります。
json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getValidatorsInformation",
  "params": [{ "limit": 5, "country": "DE" }]
}
3 つのパラメータはいずれも任意です。country は ISO 3166-1 alpha-2 の国コードで leaderCountry と照合し、大文字小文字は区別しません。regionleaderRegion と完全一致で照合し、大文字小文字を区別します — 対象のバリデータで使える値は、フィルタなしのレスポンスの 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":[]
  }'

レスポンス例(JSON)

result.total は、このリクエストで返したバリデータ数です。以下の data[] 配列は、このエポックの 670 件のうち 3 件に省略しており、各エントリの pingToLeaders も読みやすさのため観測リージョン 1 か所に絞っています。
json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "success": true,
    "message": "Validator information retrieved successfully",
    "epoch": 1010,
    "total": 670,
    "totalValidators": 670,
    "data": [
      {
        "identity": "JupmVLmA8RoyTUbTMMuTtoPWHEiNQobxgTeGTrPNkzT",
        "gossipNodeId": 2233,
        "slotCount": 13232,
        "stakeWeight": 12254651.761860535,
        "ipAddress": "64.130.41.46",
        "gossipPort": 8000,
        "tpuPort": 9001,
        "tpuQuicPort": 9007,
        "rpcAddress": null,
        "version": "3.1.13",
        "featureSet": "534737035",
        "leaderRegion": "frankfurt",
        "leaderCity": "Frankfurt am Main",
        "leaderCountry": "DE",
        "leaderLat": 50.1924,
        "leaderLon": 8.6753,
        "leaderOrg": "AS20326 TeraSwitch Networks Inc.",
        "leaderTimezone": "Europe/Berlin",
        "pingToLeaders": [
          {
            "city": "Frankfurt am Main",
            "region": "frankfurt",
            "ms": 0.974,
            "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-01T06:02:18.000Z"
          }
        ]
      },
      {
        "identity": "BSVckjdW2f8kcXPGcrPPtV9kUDBZ8w8PjrrGVnxgEdwq",
        "gossipNodeId": 1487,
        "slotCount": 2704,
        "stakeWeight": 2502391.138720913,
        "ipAddress": "5.199.172.175",
        "gossipPort": 12000,
        "tpuPort": 12003,
        "tpuQuicPort": 12009,
        "rpcAddress": null,
        "version": "3.1.13",
        "featureSet": "534737035",
        "leaderRegion": "stockholm",
        "leaderCity": "Šiauliai",
        "leaderCountry": "LT",
        "leaderLat": 55.93333,
        "leaderLon": 23.31667,
        "leaderOrg": "AS16125 UAB Cherry Servers",
        "leaderTimezone": "Europe/Vilnius",
        "pingToLeaders": [
          {
            "city": "Frankfurt am Main",
            "region": "frankfurt",
            "ms": 27.742,
            "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-01T06:02:53.000Z"
          }
        ]
      },
      {
        "identity": "2oHUYyW2PU9VJh4XBs5TbGgzdernunvGqyKth3kxW4ns",
        "gossipNodeId": 902,
        "slotCount": 304,
        "stakeWeight": 280745.689124988,
        "ipAddress": "64.130.43.229",
        "gossipPort": 8001,
        "tpuPort": 5004,
        "tpuQuicPort": 5010,
        "rpcAddress": null,
        "version": "3.1.13",
        "featureSet": "534737035",
        "leaderRegion": "amsterdam",
        "leaderCity": "Amsterdam",
        "leaderCountry": "NL",
        "leaderLat": 52.37403,
        "leaderLon": 4.88969,
        "leaderOrg": "AS20326 TeraSwitch Networks Inc.",
        "leaderTimezone": "Europe/Amsterdam",
        "pingToLeaders": [
          {
            "city": "Frankfurt am Main",
            "region": "frankfurt",
            "ms": 16.835,
            "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-01T06:03:07.000Z"
          }
        ]
      }
    ]
  }
}

レスポンスフィールド

フィールド意味
result.successリクエストが成功したかどうか。
result.messageステータスメッセージ。
result.epoch返されたリーダー集合が属するエポック。リーダースケジュールに存在する最新のエポックです。
result.totaldata に含まれるバリデータ数。価格は要求した数ではなく、この数から計算されます。
result.totalValidatorscountryregionlimit を適用する前の、そのエポックのリーダーバリデータ数。result.total と比べると、フィルタでどれだけ絞られたかが分かります。
result.data[]バリデータ 1 台につき 1 エントリ。slotCount の降順、同数なら identity 順に並ぶため、limit を指定するとリーダースロットの多いバリデータから返ります。
identityバリデータの identity public key。
gossipNodeIdこのバリデータに紐づく gossip ノードレコードの識別子。紐づく gossip ノードがない場合は null で、そのときは位置・ポート・ping のフィールドも空になります。gossip ノードが紐づいていないバリデータは、フィルタなしのリクエストでは返りますが、countryregion のフィルタには一致しません。
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 を含みます。
pingToLeaders[].icmpRepliedバリデータが計測に応答したかどうか。false のとき ms はレイテンシではなく保存されたセンチネル値なので、レイテンシとして読まないでください。
pingToLeaders[].measuredAtレイテンシを最後に計測した時刻(UTC・ISO-8601)。その計測値がどれだけ新しいかの判断に使います。

バリデータのカバレッジを視覚的に見る

同じレスポンスは、スロットごとの参照ではなく、エポック単位のカバレッジマップとして見ることもできます。以下はフランクフルトを観測地点にした例です。
バリデータリージョン位置エポック内スロット数ステーク量Frankfurt からの ping読み取り方
frankfurtFrankfurt am Main, DE13,23212,254,651.760.974 msエポック約 432,000 スロットのうち 13,232 が同一メトロ。Frankfurt の設備は 1 つのスロットウィンドウだけでなく、エポック全体を通してこのバリデータに効きます。
stockholmŠiauliai, LT2,7042,502,391.1427.742 msエポックの一定割合を繰り返し担当するが、レイテンシは他の欧州拠点のほうが有利。
amsterdamAmsterdam, NL304280,745.6916.835 msエポック内のスロット数は少ない。経路は短いが、それだけでは設備を置く理由にならない。
getLeaderSlots は「次のスロットを誰がリードするか」に答えるため、いま送るトランザクションのルーティングに向いています。本メソッドは「そのエポックでリードするのは誰で、どれだけの頻度か」に答えるため、そのエポックのあいだ設備をどこに置くかの判断に向いています。

Solana ネットワークデータサイト

Validators Solutions - Solana ネットワークデータ
ネットワーク分布の公開情報は Validators Solutions で確認し、バリデータ単位のスロット数、ステーク量、位置、実測レイテンシには getValidatorsInformation を使います。

トークン使用量

このメソッドは、返したバリデータ数に応じて 10 台単位で課金されます。バリデータ 10 台につき 100 トークンで、端数は 1 単位として数えます。したがってバリデータ 95 台のレスポンスは 10 単位、つまり 1,000 トークンとして課金されます。
課金は要求した内容ではなく実際に返した内容に従うため、countryregion で絞り込むとその分だけ費用も下がり、1 台も一致しないリクエストは課金されません。エポックのバリデータ数を超える limit は実際の数にクランプされるため、存在しないバリデータの分を支払うことはありません。
リーダー集合の規模はエポックごとに変わります。上の例のエポックでは 670 台だったため、全台の取得はおおよそ 6,700 トークンになります。

なぜバリデータ情報が重要か

  • バリデータ 1 台につき 1 行なので、数十万件のスロット行をクライアント側で集計しなくても、このエポックで誰がどれだけリードするのかが分かります。
  • slotCount はこのエポックでそのバリデータがリーダーになる頻度を示すため、slotCount の大きいバリデータへの短い経路は繰り返し効いてきます。
  • countryregion から、そのエポックのリーダー能力が実際にどこにあるのかが分かります。
  • ping と measuredAt を組み合わせると、遅い経路と古い計測値を切り分けられます。

背景

Solana の 1 エポックは約 432,000 スロットです。それらのスロットのリーダー割り当てをバリデータ identity ごとにまとめると、およそ 670 行のバリデータに集約されます。ERPC ではリーダースケジュール、バリデータメタデータ、地理情報、レイテンシ計測を整備し、その結果を RPC 経由で提供しています。

戦略的活用例

  • エポック単位のキャパシティプランニング: 直近のスロットウィンドウではなく、現在のエポックでリードするバリデータ全体に対して設備規模を決める。
  • リージョン別の候補抽出: countryregion で、対象地域でスロットをリードしているバリデータを絞り込む。
  • スロット数とステーク量を考慮した優先順位付け: slotCountstakeWeight を組み合わせて、候補内のバリデータを順位付けする。
  • エポック間のモニタリング: エポック間で leaderRegion の分布を比較し、リーダーの地理的な偏りがどう動くかを見る。

利用条件

getValidatorsInformation は ERPC の全ユーザーが利用可能です。API トークン(利用クレジット)は ERPC Web ダッシュボードで発行・確認できます。

トランザクション成功率と SWQoS エンドポイント

トランザクションの成功率と実行速度をさらに高めるには、SWQoS エンドポイントの利用をおすすめします。SWQoS(Stake-weighted Quality of Service)は、ステーク接続を持つバリデータを優先する仕組みです。リーダーは帯域の約 80% を優先帯域、約 20% を非優先帯域に割り当て、優先帯域は非優先の約 5 倍の throughput を持ちます。このスケジューリングは Priority fee の評価より前に適用されるため、まず SWQoS の優先レーンに乗ることが低レイテンシ処理の前提になります。