Leader Slot 정보 API 문서
Leader Slot 정보 (getLeaderSlots) API란?
getLeaderSlots는 validator 신원, stake 가중치, 네트워크 endpoint 메타데이터, 추정 leader 위치, 참조 지연 측정값과 함께 다가오는 leader slot 레코드를 반환하는 확장 Solana RPC 메서드입니다. ERPC 사용 Credits(API Token)를 보유하고 있다면 표준 Solana RPC 메서드와 동일한 형식으로 호출할 수 있습니다.이 API는 다음을 제공합니다.
- 요청한 slot부터 시작하는 leader validator 일정
- 각 leader validator에 대한
stakeWeight - 추정 leader 지역, 도시, 국가, 좌표, ASN 조직, 시간대
pingToLeaders를 통한 ERPC 관측 지역으로부터의 참조 ping 측정값
Endpoint 및 요청 본문 예시
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 | 요청 성공 여부. |
result.message | 사람이 읽을 수 있는 상태 메시지. |
result.total | 반환된 leader slot 레코드 수. 현재 API는 요청당 100개의 레코드를 반환합니다. |
result.data[] | 요청한 slot부터 시작하여 순서대로 정렬된 leader slot 레코드. |
identity | Leader validator 신원 공개 키. |
epoch | 해당 slot이 포함된 Solana epoch. |
slot | Slot 번호. 문자열로 반환되므로 클라이언트는 JSON 숫자로 가정해서는 안 됩니다. |
stakeWeight | Leader validator에 위임된 stake. 일반적으로 stake가 높을수록 시간이 지나면서 해당 validator가 leader 일정에 더 자주 나타납니다. |
leaderRegion | 라우팅 및 분석에 사용되는 정규화된 운영 지역 라벨. 인접한 도시나 제공자 위치를 묶을 수 있습니다. |
leaderCity, leaderCountry, leaderLat, leaderLon, leaderOrg, leaderTimezone | Leader validator의 추정 지리적 위치 및 네트워크 조직. |
pingToLeaders[] | ERPC 관측 지역에서 leader까지의 참조 지연. 지역, 도시, ms, fromIp, 국가, 좌표, ASN 조직, 우편번호, 시간대를 포함합니다. |
Leader Slot 시각화
동일한 응답을 slot 단위 운영 타임라인으로 볼 수 있습니다. 이 예시는 Frankfurt를 관측 지점으로 사용합니다.
| Slot 구간 | Leader 지역 | Leader 위치 | Stake 가중치 | Frankfurt로부터의 Ping | 운영 해석 |
|---|---|---|---|---|---|
| 416462031 | stockholm | Šiauliai, LT | 2,502,391.14 | 27.742 ms | 유럽 내에서는 합리적인 지연이지만 동일한 대도시권은 아님. |
| 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 | 동일 지역 leader. 이 slot에서는 Frankfurt 리소스가 강력하게 유리함. |
이 관점이 유용한 이유는 Solana가 글로벌하기 때문입니다. 하나의 매칭 엔진 근처에 자리 잡는 것이 주요 목표인 전통적인 HFT와 달리, Solana leader는 전 세계 validator를 가로질러 순환합니다. Leader 일정이 바뀌면 가장 빠른 지역도 바뀝니다.
Solana 네트워크 데이터 웹사이트
validator 및 네트워크 분포를 공개적으로 확인하려면 Validators Solutions를 사용하세요. 이를 통해 더 넓은 Solana 네트워크를 이해한 뒤, 운영 라우팅에 필요한 slot 단위 일정, stake 가중치, validator 위치, 측정된 지연 데이터를 얻으려면
getLeaderSlots를 사용하세요.Token 사용량
이 API는 지정한 slot부터 시작하여 100개의 leader slot 레코드를 가져옵니다. 각 요청은 420 Token을 소비합니다.
Leader Slot 정보가 중요한 이유
- Leader가 지리적으로 또는 네트워크 경로상 멀리 떨어져 있으면 직접 트랜잭션 전달이 비효율적입니다.
- Stake 가중치는 시간이 지나면서 validator가 leader 일정에 얼마나 자주 나타날지 추정하는 데 도움이 됩니다.
- 글로벌 leader 전환 중에는 단일 글로벌 평균 지연보다 지역 전환 전략이 더 중요합니다.
- slot 일정, stake 가중치, leader 위치, 측정된 ping 데이터를 결합하면 최적화된 라우팅과 validator 배치가 가능합니다.
배경
단일 Solana epoch는 약 432,000개의 slot으로 구성됩니다. Leader 일정, validator 메타데이터, 지리적 위치, 지연 측정값을 지속적으로 수집하려면 전용 데이터 파이프라인이 필요합니다. ERPC는 이 데이터를 유지하고 RPC 인터페이스를 통해 즉시 사용 가능한 leader slot 맵으로 제공합니다.
전략적 활용 사례
- 탐지 최적화: 가깝고 지연이 낮은 leader 구간을 우선시.
- 멀티 리전 배포: FRA, AMS, NY, TY, SGP 및 기타 전략적 지역에 배포하여 전환 격차를 줄임.
- Stake 인식 계획:
stakeWeight를 활용하여 더 긴 구간에서 어떤 leader가 더 자주 중요한지 파악. - 시각화 및 분석: 지역별 leader 비율, stake 분포, 지연 분포를 모니터링.
이용 가능 여부
getLeaderSlots는 모든 ERPC 사용자가 이용할 수 있습니다. API Token 및 사용 Credits는 ERPC 웹 Dashboard에서 발급하거나 확인할 수 있습니다.- ERPC 웹 Dashboard: ERPC 웹 Dashboard
트랜잭션 성공률 및 SWQoS Endpoint
트랜잭션 성공률과 실행 속도를 더욱 높이려면 SWQoS Endpoint 사용을 권장합니다. SWQoS(Stake-weighted Quality of Service)는 stake 연결이 있는 validator를 우선시합니다. Leader는 대역폭의 약 80%를 우선 트래픽에, 20%를 비우선 트래픽에 할당하며, 우선 레인은 약 5배의 처리량을 제공합니다. 이 스케줄링은 Priority-fee 평가 이전에 이루어지므로, SWQoS 우선 레인에 진입하는 것이 진정한 저지연 성능의 전제 조건입니다.







