Documentazione della Leader Slot Information API
Che cos'è la Leader Slot Information (getLeaderSlots) API?
getLeaderSlots è un metodo RPC esteso di Solana che restituisce i record dei prossimi leader slot con l'identità del validator, il peso dello stake, i metadati degli endpoint di rete, la posizione stimata del leader e misurazioni di latenza di riferimento. Se disponi di crediti di utilizzo ERPC (token API), puoi chiamarlo nello stesso formato di un metodo RPC standard di Solana.Questa API fornisce:
- Lo schedule dei validator leader a partire dallo slot richiesto
stakeWeightper ogni validator leader- Regione, città, paese, coordinate, organizzazione ASN e fuso orario stimati del leader
- Misurazioni ping di riferimento dalle regioni di osservazione di ERPC tramite
pingToLeaders
Esempio di endpoint e corpo della richiesta
text
https://edge.erpc.global?api-key=<YOUR_API_KEY>https://edge.erpc.global?api-key=<YOUR_API_KEY>Specifica il numero dello slot iniziale in
params.json
{
"jsonrpc": "2.0",
"id": 1,
"method": "getLeaderSlots",
"params": [436946064]
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getLeaderSlots",
"params": [436946064]
}Esempio (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]
}'Esempio di risposta (JSON)
La risposta attuale racchiude i record in
result.data[]. result.total indica quanti record sono stati restituiti. L'array data[] qui sotto è abbreviato a tre dei 100 record di questa richiesta. La prima voce mostra pingToLeaders da tutte e sette le regioni di osservazione di ERPC; le voci restanti sono ridotte a una regione per leggibilità.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"
}
]
}
]
}
}Campi della risposta
| Campo | Significato |
|---|---|
result.success | Indica se la richiesta è andata a buon fine. |
result.message | Messaggio di stato leggibile. |
result.total | Numero di record di leader slot restituiti. L'API restituisce attualmente 100 record per richiesta. |
result.data[] | Record di leader slot ordinati a partire dallo slot richiesto. |
identity | Chiave pubblica di identità del validator leader. |
epoch | Epoch di Solana che contiene lo slot. |
slot | Numero dello slot. Viene restituito come stringa, quindi i client non devono assumere che sia un numero JSON. |
stakeWeight | Stake delegato al validator leader. Uno stake più alto significa in genere che il validator compare più spesso negli schedule dei leader nel tempo. |
leaderRegion | Etichetta normalizzata della regione operativa usata per routing e analisi. Può raggruppare città vicine o sedi di provider. |
leaderCity, leaderCountry, leaderLat, leaderLon, leaderOrg, leaderTimezone | Geolocalizzazione stimata e organizzazione di rete del validator leader. |
pingToLeaders[] | Latenza di riferimento dalle regioni di osservazione di ERPC (frankfurt, amsterdam, ny, london, tokyo, singapore, sydney) verso il leader, con region, city, ms, icmpReplied, fromIp, country, coordinate, organizzazione ASN, codice postale, timezone e measuredAt. |
pingToLeaders[].icmpReplied | Indica se il validator ha risposto alla misurazione. Quando è false, ms contiene un valore sentinella memorizzato anziché una latenza e non va letto come tale; tratta false come valore sconosciuto, non come distante o inutilizzabile, poiché alcuni validator che non rispondono a ICMP servono comunque TPU e QUIC normalmente, ed escluderli può eliminare un leader sano dal tuo percorso di invio. Controlla icmpReplied prima di considerare ms una latenza: determina se il numero è utilizzabile, non a quale validator inviare. |
pingToLeaders[].measuredAt | Indica quando la latenza è stata misurata l'ultima volta, in ISO-8601 UTC. Usalo per giudicare quanto è aggiornata una lettura. Ogni regione di osservazione misura in modo indipendente, quindi le voci nello stesso array pingToLeaders possono avere valori measuredAt diversi. Un measuredAt più vecchio non è una lettura errata: quando un ciclo di misurazione non viene completato, il valore memorizzato viene lasciato al suo posto anziché sovrascritto con uno fittizio, quindi riflette comunque una misurazione passata reale. |
Visualizzare i leader slot
La stessa risposta può essere vista come una timeline operativa slot per slot. Questo esempio usa Francoforte come punto di osservazione.
| Finestra di slot | Regione del leader | Posizione del leader | Peso dello stake | Ping da Francoforte | Lettura operativa |
|---|---|---|---|---|---|
| 436946064-436946066 | dublin | Crumlin, IE | 819,031.37 | 18.438 ms | Un unico leader occupa tre slot consecutivi. Francoforte lo serve a 18.4 ms, ma Londra (11.0 ms) e Amsterdam (12.8 ms) sono più vicine — per questa finestra, la capacità di Londra o Amsterdam batte Francoforte. |
| 436946068 | frankfurt | Frankfurt am Main, DE | 166,438.25 | 0.062 ms | Leader nella stessa area metropolitana. Le risorse di Francoforte sono fortemente favorite per questo slot. |
Questa vista è utile perché Solana è globale. A differenza dell'HFT tradizionale, dove l'obiettivo principale è spesso trovarsi vicino a un unico matching engine, i leader di Solana ruotano tra validator in tutto il mondo. La regione più veloce cambia al cambiare dello schedule dei leader.
Sito web dei dati della rete Solana
Per una vista pubblica della distribuzione dei validator e della rete, usa Validators Solutions. Utilizzalo per comprendere la rete Solana nel suo complesso, quindi usa
getLeaderSlots per lo schedule a livello di slot, il peso dello stake, la posizione dei validator e i dati di latenza misurata necessari per il routing operativo.Consumo di token
L'API recupera 100 record di leader slot a partire dallo slot specificato. Ogni richiesta consuma 420 token.
Se ti serve una voce per validator per l'intera epoch invece di una voce per slot, usa la Validators Information API, che viene addebitata in base al numero di validator restituiti.
Perché le informazioni sui leader slot sono importanti
- Se il leader è distante geograficamente o come percorso di rete, la consegna diretta delle transazioni diventa inefficiente.
- Il peso dello stake aiuta a stimare con quale frequenza un validator è probabile che compaia nello schedule dei leader nel tempo.
- Durante le transizioni globali dei leader, le strategie di cambio regionale contano più di un'unica latenza media globale.
- Combinare schedule degli slot, peso dello stake, posizione del leader e dati di ping misurati consente di ottimizzare routing e posizionamento rispetto ai validator.
Contesto
Una singola epoch di Solana è composta da circa 432,000 slot. Raccogliere continuamente schedule dei leader, metadati dei validator, geolocalizzazione e misurazioni di latenza richiede una pipeline di dati dedicata. ERPC mantiene questi dati e li espone come una mappa dei leader slot immediatamente utilizzabile tramite l'interfaccia RPC.
Casi d'uso strategici
- Ottimizzazione del rilevamento: assegna priorità alle finestre di leader vicine e a bassa latenza.
- Deployment multi-regione: distribuisci in FRA, AMS, NY, TY, SGP e altre regioni strategiche per ridurre i gap di transizione.
- Pianificazione consapevole dello stake: usa
stakeWeightper capire quali leader contano più frequentemente su finestre più lunghe. - Visualizzazione e analisi: monitora i rapporti dei leader, la distribuzione dello stake e la distribuzione della latenza per regione.
Disponibilità
getLeaderSlots è disponibile per tutti gli utenti ERPC. I token API e i crediti di utilizzo possono essere emessi o verificati sulla ERPC Web Dashboard.- ERPC Web Dashboard: ERPC Web Dashboard
Tasso di successo delle transazioni e SWQoS Endpoint
Per migliorare ulteriormente il tasso di successo delle transazioni e la velocità di esecuzione, consigliamo di utilizzare lo SWQoS Endpoint. SWQoS (Stake-weighted Quality of Service) dà priorità ai validator con connessioni di stake. I leader allocano circa l'80% della banda al traffico prioritario e il 20% al traffico non prioritario, con la corsia prioritaria che offre un throughput circa 5 volte superiore. Questa pianificazione avviene prima della valutazione della Priority fee, il che significa che entrare nella corsia prioritaria di SWQoS è il prerequisito per prestazioni a bassa latenza reali.







