Leader Slot 資訊 API 文件
什麼是 Leader Slot 資訊(getLeaderSlots)API?
getLeaderSlots 是一個擴充套件 Solana RPC 方法,用於返回即將到來的 leader slot 記錄,包括 validator identity、stake weight、網路端點後設資料、leader 估算位置,以及參考延遲測量。持有 ERPC 使用額度(API token)的使用者,可以用與標準 Solana RPC 相同的格式呼叫。此 API 提供:
- 從指定 slot 開始的 leader validator 排程
- 每個 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>https://edge.erpc.global?api-key=<YOUR_API_KEY>在
params 中指定起始 slot 編號。json
{
"jsonrpc": "2.0",
"id": 1,
"method": "getLeaderSlots",
"params": [416462031]
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getLeaderSlots",
"params": [416462031]
}示例(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":[416462031]
}'curl 'https://edge.erpc.global?api-key=<YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"getLeaderSlots",
"params":[416462031]
}'響應示例(JSON)
當前響應會將記錄放在
result.data[] 中。result.total 表示返回的記錄數量。json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true,
"message": "Leader schedule records retrieved successfully",
"total": 100,
"data": [
{
"identity": "BSVckjdW2f8kcXPGcrPPtV9kUDBZ8w8PjrrGVnxgEdwq",
"epoch": 964,
"slot": "416462031",
"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,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
},
{
"identity": "2oHUYyW2PU9VJh4XBs5TbGgzdernunvGqyKth3kxW4ns",
"epoch": 964,
"slot": "416462032",
"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,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
},
{
"identity": "JupmVLmA8RoyTUbTMMuTtoPWHEiNQobxgTeGTrPNkzT",
"epoch": 964,
"slot": "416462036",
"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,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
}
]
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true,
"message": "Leader schedule records retrieved successfully",
"total": 100,
"data": [
{
"identity": "BSVckjdW2f8kcXPGcrPPtV9kUDBZ8w8PjrrGVnxgEdwq",
"epoch": 964,
"slot": "416462031",
"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,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
},
{
"identity": "2oHUYyW2PU9VJh4XBs5TbGgzdernunvGqyKth3kxW4ns",
"epoch": 964,
"slot": "416462032",
"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,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
},
{
"identity": "JupmVLmA8RoyTUbTMMuTtoPWHEiNQobxgTeGTrPNkzT",
"epoch": 964,
"slot": "416462036",
"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,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
}
]
}
}響應欄位
| 欄位 | 含義 |
|---|---|
result.success | Whether the request succeeded. |
result.message | Human-readable status message. |
result.total | Number of returned leader slot records. The API currently returns 100 records per request. |
result.data[] | Ordered leader slot records starting from the requested slot. |
identity | Leader validator identity public key. |
epoch | Solana epoch containing the slot. |
slot | Slot number. It is returned as a string, so clients should not assume a JSON number. |
stakeWeight | Stake delegated to the leader validator. Higher stake generally means the validator appears in leader schedules more often over time. |
leaderRegion | Normalized operational region label used for routing and analysis. It may group nearby cities or provider locations. |
leaderCity, leaderCountry, leaderLat, leaderLon, leaderOrg, leaderTimezone | Estimated geolocation and network organization for the leader validator. |
pingToLeaders[] | Reference latency from ERPC observation regions to the leader, including region, city, ms, fromIp, country, coordinates, ASN organization, postal code, and timezone. |
視覺化 Leader Slot
同一響應可以按 slot 時間線來閱讀。下面示例以 Frankfurt 作為觀測點。
| Slot 範圍 | Leader region | Leader 位置 | Stake weight | 來自 Frankfurt 的 ping | 運營含義 |
|---|---|---|---|---|---|
| 416462031 | stockholm | Šiauliai, LT | 2,502,391.14 | 27.742 ms | 歐洲內部延遲合理,但不是同一 metro。 |
| 416462032-416462035 | amsterdam | Amsterdam, NL | 280,745.69 | 16.835 ms | 低延遲歐洲視窗,Amsterdam 資源可能有優勢。 |
| 416462036 | frankfurt | Frankfurt am Main, DE | 12,254,651.76 | 0.974 ms | 同 region leader,Frankfurt 資源明顯有利。 |
這很重要,因為 Solana 是全球網路。它不像傳統 HFT 那樣只需要靠近一個交易所 matching engine;Solana 的 leader 會在全球 validator 之間輪換,因此最快 region 會隨著 leader schedule 改變。
Solana 網路資料網站
公開的 validator 與網路分佈可以透過 Validators Solutions 檢視。先用 Validators Solutions 理解 Solana 網路整體分佈,再使用
getLeaderSlots 獲取 slot 級別的排程、stake weight、validator 位置與實測延遲,用於運營路由判斷。Token 使用量
該 API 從指定 slot 開始返回 100 條 leader slot 記錄。每次請求消耗 420 tokens。
為什麼 Leader Slot 資訊重要
- 如果 leader 在地理或網路路徑上很遠,直接傳送交易會變得低效。
- Stake weight 有助於判斷哪些 validator 在長期 leader schedule 中更常出現。
- 全球 leader 切換時,region 切換策略比單一平均延遲更重要。
- 結合 slot schedule、stake weight、leader 位置和實測 ping,可以最佳化路由和 validator 部署。
背景
一個 Solana epoch 大約包含 432,000 個 slot。持續收集 leader schedule、validator metadata、geolocation 與 latency measurement 需要專用資料管線。ERPC 維護這些資料,並透過 RPC 介面以可立即使用的 leader slot map 形式提供。
戰略使用場景
- 檢測最佳化:優先處理附近、低延遲的 leader 視窗。
- 多 region 部署:在 FRA、AMS、NY、TY、SGP 等關鍵 region 部署資源,減少切換空檔。
- Stake-aware 規劃:使用
stakeWeight理解長期視窗中更頻繁出現的 leader。 - 視覺化與分析:按 region 監控 leader 比率、stake 分佈與 latency 分佈。
可用性
getLeaderSlots 對所有 ERPC 使用者可用。API token 與使用額度可在 ERPC Web 儀表盤發行或確認。- ERPC Web 儀表盤: 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 是實現真正低延遲效能的前提。
