Validators 정보 API 문서
Validators 정보 (getValidatorsInformation) API란?
getValidatorsInformation은 현재 epoch에서 slot을 하나 이상 리드하는 validator를 반환하는 확장 Solana RPC 메서드로, stake 가중치, 네트워크 endpoint 메타데이터, 추정 leader 위치, 참조 지연 측정값을 validator 1대당 1개 항목으로 묶어 제공합니다. 네트워크의 모든 노드 목록을 반환하지 않으며, RPC 노드도 반환하지 않습니다. ERPC 사용 Credits(API Token)를 보유하고 있다면 표준 Solana RPC 메서드와 동일한 형식으로 호출할 수 있습니다.이 API는 다음을 제공합니다.
- 현재 epoch에서 slot을 리드하는 validator 1대당 1개 항목.
slotCount가 리드하는 slot 수를 보여줍니다. slot 1개당 1개 항목을 반환하는getLeaderSlots와는 다릅니다 - 각 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를 생략하거나 params: []를 전달하면 현재 epoch에서 slot을 리드하는 모든 validator를 반환합니다.json
{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": []
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": []
}결과 범위를 좁히려면
limit, country, region을 담은 객체를 전달하세요. 이 예시는 독일에 있는 validator를 최대 5대까지 요청하며, 위의 필터 없는 요청보다 비용도 적게 듭니다.json
{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": [{ "limit": 5, "country": "DE" }]
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": [{ "limit": 5, "country": "DE" }]
}세 파라미터 모두 선택 사항입니다.
country는 ISO 3166-1 alpha-2 코드로 leaderCountry와 대조하며 대소문자를 구분하지 않습니다. region은 leaderRegion과 대소문자를 구분하는 완전 일치로 대조합니다. 대상 validator에 유효한 값을 알아내려면 필터 없는 응답에서 leaderRegion을 읽으세요. 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":[]
}'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의 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"
}
]
}
]
}
}{
"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 | 반환된 leader 집합이 속한 epoch. leader 일정에 존재하는 가장 최신 epoch입니다. |
result.total | data에 담긴 validator 수. 과금은 이 수를 기준으로 이루어집니다. |
result.totalValidators | country, region, limit을 적용하기 전 해당 epoch의 leader validator 수. result.total과 비교하면 필터가 범위를 얼마나 좁혔는지 알 수 있습니다. |
result.data[] | validator 1대당 1개 항목이며 slotCount 내림차순, 이어서 identity 순으로 정렬됩니다. 따라서 limit을 지정하면 가장 많은 slot을 리드하는 validator가 반환됩니다. |
identity | Validator identity 공개 키. |
gossipNodeId | 이 validator에 연결된 gossip 노드 레코드의 식별자. 연결된 gossip 노드가 없으면 null이며, 이때 위치, 포트, ping 필드도 비어 있습니다. 연결된 gossip 노드가 없는 validator는 필터 없는 요청에서는 반환되지만 country나 region 필터에는 일치할 수 없습니다. |
slotCount | 이 validator가 보고된 epoch에서 리드하는 slot 수. 각 항목은 slot 1개가 아니라 validator 1대를 나타냅니다. |
stakeWeight | 이 validator identity의 활성화된 stake이며 단위는 SOL입니다. 연결된 gossip 노드가 없는 validator는 0을 보고합니다. |
ipAddress, gossipPort, tpuPort, tpuQuicPort, rpcAddress | 이 validator의 gossip 네트워크 endpoint 메타데이터. |
version, featureSet | 이 validator가 보고한 Solana 클라이언트 버전과 feature set. |
leaderRegion | 라우팅 및 분석에 사용되는 정규화된 운영 지역 라벨. 인접한 도시나 제공자 위치를 묶을 수 있으며, region 요청 파라미터가 대조하는 값입니다. |
leaderCity, leaderCountry, leaderLat, leaderLon, leaderOrg, leaderTimezone | 이 validator의 추정 지리적 위치 및 네트워크 조직. |
pingToLeaders[] | 각 ERPC 관측 지역에서 이 validator까지의 참조 지연. 지역, 도시, ms, icmpReplied, fromIp, 국가, 좌표, ASN 조직, 우편번호, 시간대, measuredAt을 포함합니다. |
pingToLeaders[].icmpReplied | 이 validator가 측정에 응답했는지 여부. false이면 ms에는 실측 지연이 아니라 저장된 센티널 값이 담기므로 지연으로 읽어서는 안 됩니다. |
pingToLeaders[].measuredAt | 해당 지연을 마지막으로 측정한 시각 (ISO-8601 UTC). 값이 얼마나 최신인지 판단하는 데 사용하세요. |
Validator 커버리지 시각화
동일한 응답을 slot 단위 조회가 아니라 epoch 단위 커버리지 지도로 읽을 수 있습니다. 이 예시는 Frankfurt를 관측 지점으로 사용합니다.
| Validator 지역 | 위치 | epoch 내 slot 수 | Stake 가중치 | Frankfurt로부터의 Ping | 운영 해석 |
|---|---|---|---|---|---|
| frankfurt | Frankfurt am Main, DE | 13,232 | 12,254,651.76 | 0.974 ms | 이번 epoch의 약 432,000개 slot 가운데 13,232개이며 동일한 대도시권입니다. Frankfurt 용량은 한 slot 구간에서만이 아니라 epoch 내내 이 validator를 담당합니다. |
| stockholm | Šiauliai, LT | 2,704 | 2,502,391.14 | 27.742 ms | epoch에서 반복적으로 일정 비중을 차지하지만, 이 지연은 다른 유럽 지점이 더 잘 담당할 수 있습니다. |
| amsterdam | Amsterdam, NL | 304 | 280,745.69 | 16.835 ms | epoch당 slot이 적습니다. 경로는 짧지만 그것만으로 용량을 배치할 이유가 되지는 않습니다. |
getLeaderSlots는 다음 slot들을 어떤 validator가 리드하는지에 답하므로 지금 트랜잭션을 라우팅하는 데 적합하고, 이 메서드는 이번 epoch를 애초에 어떤 validator가 얼마나 자주 리드하는지에 답하므로 해당 epoch 동안 용량을 어디에 둘지 결정하는 데 적합합니다.
Solana 네트워크 데이터 웹사이트
네트워크 분포를 공개적으로 확인하려면 Validators Solutions를 사용하고, 이어서 validator별 slot 수, stake, 위치, 측정된 지연을 얻으려면
getValidatorsInformation을 사용하세요.Token 사용량
이 메서드는 반환된 validator 수를 기준으로 10대 단위로 과금됩니다. validator 10대마다 100 Token이며, 10대에 못 미치는 나머지도 한 단위로 계산합니다. 따라서 validator 95대를 반환한 응답은 10단위, 즉 1,000 Token으로 과금됩니다.
과금이 요청한 수가 아니라 반환된 수를 따르므로
country나 region으로 범위를 좁히면 그만큼 비용이 줄고, 일치하는 validator가 없는 요청은 과금되지 않습니다. 해당 epoch의 validator 수보다 큰 limit은 실제 수로 맞춰지므로, 존재하지 않는 validator에 대해 요금을 내는 일은 없습니다.leader 집합의 규모는 epoch마다 달라집니다. 위 예시의 epoch에서는 670대였으며, 이 경우 전체 조회는 대략 6,700 Token입니다.
Validator 정보가 중요한 이유
- validator 1대당 1개 항목이므로, 수십만 개의 slot 행을 클라이언트에서 집계하지 않고도 이번 epoch를 누가 얼마나 리드하는지 알 수 있습니다.
slotCount는 이번 epoch에서 validator가 얼마나 자주 leader가 되는지 보여주므로,slotCount가 높은 validator로 향하는 짧은 경로는 반복해서 이득을 냅니다.country와region은 이번 epoch의 leader 용량이 실제로 어디에 있는지 보여줍니다.- Ping을
measuredAt과 함께 보면 느린 경로와 오래된 측정값을 구분할 수 있습니다.
배경
단일 Solana epoch는 약 432,000개의 slot으로 구성됩니다. 이 slot들의 leader 배정을 validator identity 기준으로 묶으면 약 670개의 validator 항목으로 줄어듭니다. ERPC는 leader 일정, validator 메타데이터, 지리적 위치, 지연 수집을 유지하고 그 결과를 RPC 인터페이스로 제공합니다.
전략적 활용 사례
- epoch 단위 용량 계획: 이동하는 slot 구간이 아니라 현재 epoch를 리드하는 validator 전체 집합을 기준으로 인프라 규모를 산정.
- 지역별 후보 선정:
country와region으로 목표 지역에서 slot을 리드하는 validator를 추출. - slot 수와 stake를 함께 고려한 우선순위:
slotCount와stakeWeight를 결합해 후보 안에서 validator 순위를 결정. - epoch 간 모니터링: epoch 사이의
leaderRegion분포를 비교해 leader 지리 분포가 어떻게 변하는지 확인.
이용 가능 여부
getValidatorsInformation은 모든 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 우선 레인에 진입하는 것이 진정한 저지연 성능의 전제 조건입니다.







