Validators 資訊 API 文件

什麼是 Validators 資訊(getValidatorsInformation)API?

getValidatorsInformation 是一個擴充套件 Solana RPC 方法,用於返回當前 epoch 中至少領導一個 slot 的 validator,並將 stake weight、網路端點後設資料、估算的 leader 位置與參考延遲測量彙整為每個 validator 一筆記錄。它不會返回網路上所有節點的清單,也不會返回 RPC 節點。持有 ERPC 使用額度(API token)的使用者,可以用與標準 Solana RPC 相同的格式呼叫。
此 API 提供:
  • 當前 epoch 中領導 slot 的每個 validator 一筆記錄,slotCount 表示它領導的 slot 數量——與每個 slot 一筆記錄的 getLeaderSlots 不同
  • 每個 leader validator 的 stakeWeight
  • 估算的 leader region、city、country、座標、ASN organization 與 timezone
  • ERPC 觀測 region 到 leader 的參考 ping 測量(pingToLeaders)

端點和請求體示例

text
https://edge.erpc.global?api-key=<YOUR_API_KEY>
所有參數皆為選填;省略 params 或傳入 params: [],將返回當前 epoch 中領導 slot 的全部 validator。
json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getValidatorsInformation",
  "params": []
}
若要縮小結果範圍,可傳入包含 limit、country 與 region 的物件。下面的示例請求德國境內最多 5 個 validator,其消耗也低於上面未篩選的請求。
json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getValidatorsInformation",
  "params": [{ "limit": 5, "country": "DE" }]
}
這三個參數皆為選填。country 使用 ISO 3166-1 alpha-2 代碼與 leaderCountry 比對,不分大小寫。region 與 leaderRegion 做區分大小寫的完全比對——可先送出未篩選的請求,從響應中讀取 leaderRegion,以了解目標 validator 的有效取值。limit 接受 1 到 2000,並會收斂為該 epoch 中 validator 的實際數量,因此超過實際數量的 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 表示本次請求返回的 validator 數量。下面的 data[] 陣列從本 epoch 的 673 筆記錄中節錄了三筆。第一筆記錄展示了 ERPC 全部七個觀測 region 的 pingToLeaders;其餘記錄為便於閱讀只保留一個 region。
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"
          }
        ]
      }
    ]
  }
}

響應欄位

欄位含義
result.success請求是否成功。
result.message可讀的狀態訊息。
result.epoch所返回 leader 集合所屬的 epoch。這是當前 epoch;若當前 epoch 的 schedule 尚未載入,則為 leader schedule 中最新的 epoch。
result.totaldata 中的 validator 數量。計費依據的就是這個數量。
result.totalValidators套用 country、region 或 limit 之前,該 epoch 中的 leader validator 數量。與 result.total 對照即可看出篩選縮小了多少範圍。
result.data[]每個 validator 一筆記錄,依 slotCount 遞減排序,其次依 identity 排序,因此設定 limit 時返回的是領導最多 slot 的 validator。
identityValidator identity 公鑰。
gossipNodeId與此 validator 關聯的 gossip 節點記錄的識別碼。未關聯 gossip 節點時為 null,此時位置、連接埠與 ping 欄位同樣為空。沒有關聯 gossip 節點的 validator 會出現在未篩選的請求中,但無法滿足 country 或 region 篩選。
slotCount此 validator 在所報告 epoch 中領導的 slot 數量。每筆記錄對應一個 validator,而非一個 slot。
stakeWeight此 validator identity 的啟用質押量,單位為 SOL。沒有關聯 gossip 節點的 validator 返回 0。
ipAddress, gossipPort, tpuPort, tpuQuicPort, rpcAddress此 validator 的 gossip 網路端點後設資料。
version, featureSet此 validator 回報的 Solana 用戶端版本與 feature set。
leaderRegion用於路由與分析的正規化運營 region 標籤。它可能將鄰近的城市或供應商位置歸為一組,也是 region 請求參數所比對的值。
leaderCity, leaderCountry, leaderLat, leaderLon, leaderOrg, leaderTimezone此 validator 的估算地理位置與網路組織。
pingToLeaders[]從各個 ERPC 觀測 region(frankfurt、amsterdam、ny、london、tokyo、singapore、sydney)到此 validator 的參考延遲,包含 region、city、ms、icmpReplied、fromIp、country、座標、ASN organization、郵遞區號、timezone 與 measuredAt。
pingToLeaders[].icmpReplied此 validator 是否回應了本次 ICMP 測量。為 false 時,ms 帶的是預設的哨兵值而非延遲實測值,不應以延遲解讀。請把 false 理解為「未知」,而不是「距離遠」或「不可用」:有些 validator 不回應 ICMP,但 TPU 與 QUIC 仍然正常運作,據此過濾會把健康的 leader 從你的發送路徑中剔除。在把 ms 當作延遲使用之前,請先檢查 icmpReplied:該欄位決定這個數字是否可用,而不是決定該向哪個 validator 發送。
pingToLeaders[].measuredAt最近一次測量此延遲的時間,採用 ISO-8601 UTC 格式。可用它判斷讀數的新鮮程度。各觀測 region 各自獨立進行測量,因此同一個 pingToLeaders 陣列中的各筆記錄,measuredAt 可能並不相同。measuredAt 較舊並不代表讀數有問題:某輪測量未能跑完時,系統會保留已存的數值,而不會以捏造的數值覆蓋,因此它仍然反映過去確實進行過的一次測量。

視覺化 Validator 覆蓋

同一響應可以按 epoch 層級的覆蓋分佈來閱讀,而非逐 slot 查詢。下面示例以 Frankfurt 作為觀測點。
Validator region位置epoch 內 slot 數Stake weight來自 Frankfurt 的 ping運營含義
frankfurtFrankfurt am Main, DE16,91216,803,592.921.374 ms本 epoch 中 slot 數最多的 leader,且位於同一 metro。Frankfurt 的資源在整個 epoch 都在服務此 validator,而不只是在某一個 slot 視窗內。
londonLondon, GB15,65616,025,294.3311.246 msslot 數第二多的 leader。Frankfurt 足以服務它,但 London 的資源能把這條路徑降到接近同 metro 水準的延遲。
frankfurtFrankfurt am Main, DE12,92012,539,698.450.061 ms另一個同一 metro 的 leader,slot 數約為榜首的四分之三。同 region 的資源同樣能妥善覆蓋它。
getLeaderSlots 回答的是接下來的 slot 由哪些 validator 領導,因此適合當下的交易路由;本方法回答的是整個 epoch 中究竟有哪些 validator 領導、各自領導多少次,因此適合決定該 epoch 的資源應當部署在何處。

Solana 網路資料網站

Validators Solutions - Solana network data
網路分佈的公開檢視可以透過 Validators Solutions 查看,接著使用 getValidatorsInformation 獲取每個 validator 的 slot 數量、stake、位置與實測延遲。

Token 使用量

該方法依實際返回的 validator 數量計費,以 10 個為一個計費單位:每 10 個 validator 收取 100 tokens,不足一個單位也以一個完整單位計算。因此返回 95 個 validator 時以 10 個單位計費,即 1,000 tokens。
由於計費依據的是實際返回的數量而非請求的數量,用 country 或 region 縮小範圍會按比例減少消耗,沒有符合任何 validator 的請求則不計費。超過該 epoch 中 validator 數量的 limit 會被收斂為實際數量,因此請求不會為不存在的 validator 付費。
leader 集合的規模會隨 epoch 變動。在上面示例的 epoch 中為 673 個 validator,因此完整讀取約需 6,800 tokens。

為什麼 Validator 資訊重要

  • 每個 validator 一筆記錄,可直接回答本 epoch 由誰領導、領導多少,無需在用戶端彙總數十萬筆 slot 記錄。
  • slotCount 表明某個 validator 在本 epoch 中擔任 leader 的頻率,因此通往高 slotCount validator 的短路徑會反覆帶來收益。
  • country 與 region 表明該 epoch 的 leader 資源實際位於何處。
  • Ping 結合 measuredAt 可以區分「路徑慢」與「讀數過時」。

背景

一個 Solana epoch 大約包含 432,000 個 slot。將這些 slot 的 leader 分配依 validator identity 歸組之後,會收斂為大約 670 筆 validator 記錄。ERPC 維護 leader schedule、validator metadata、geolocation 與 latency 收集,並透過 RPC 介面提供結果。

戰略使用場景

  • epoch 層級容量規劃:依當前 epoch 全部 leader validator 的集合來規劃基礎設施規模,而非依滾動的 slot 視窗。
  • 區域候選名單:使用 country 與 region 取出在目標位置領導 slot 的 validator。
  • 結合 slot 數與 stake 的優先順序:組合 slotCount 與 stakeWeight,在候選名單內為 validator 排序。
  • 跨 epoch 監控:比較不同 epoch 之間的 leaderRegion 分佈,觀察 leader 地理分佈如何變化。

可用性

getValidatorsInformation 對所有 ERPC 使用者可用。API token 與使用額度可在 ERPC Web 儀表盤發行或確認。

交易成功率與 SWQoS Endpoint

若要進一步提高交易成功率和執行速度,建議使用 SWQoS Endpoint。SWQoS(Stake-weighted Quality of Service)會優先處理擁有 stake connection 的 validator。Leader 大約將 80% 頻寬分配給 priority traffic,20% 分配給 non-priority traffic,priority lane 約有 5 倍 throughput。該排程發生在 Priority fee 評估之前,因此進入 SWQoS priority lane 是實現真正低延遲效能的前提。