Документация по Validators Information API
Что такое Validators Information API (getValidatorsInformation)?
getValidatorsInformation — это расширенный метод Solana RPC, который возвращает валидаторов, ведущих в текущей эпохе хотя бы один слот, с весом стейка, сетевыми endpoint metadata, предполагаемой локацией leader и справочными измерениями latency, сведёнными в одну строку на валидатора. Он не возвращает список всех узлов сети и не возвращает RPC-узлы. Если у вас есть usage credits ERPC (API tokens), вы можете вызывать его в том же формате, что и стандартный Solana RPC method.API предоставляет:
- по одной строке на валидатора, ведущего слот в текущей эпохе, где
slotCountпоказывает, сколько слотов он ведёт, — в отличие отgetLeaderSlots, который возвращает по одной строке на слот stakeWeightдля каждого leader validator- предполагаемые leader region, city, country, coordinates, ASN organization и timezone
- справочные ping-измерения из observation regions ERPC через
pingToLeaders
Пример endpoint и request body
text
https://edge.erpc.global?api-key=<YOUR_API_KEY>https://edge.erpc.global?api-key=<YOUR_API_KEY>Все параметры необязательны; если опустить
params или передать params: [], вернутся все валидаторы, ведущие слот в текущей эпохе.json
{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": []
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getValidatorsInformation",
"params": []
}Чтобы сузить выборку, передайте объект с
limit, country и region. В этом примере запрашивается до 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 сопоставляется с leaderCountry по кодам ISO 3166-1 alpha-2 без учёта регистра. region сопоставляется с leaderRegion точно и с учётом регистра — посмотрите leaderRegion в неотфильтрованном ответе, чтобы узнать допустимые значения для нужных вам валидаторов. limit принимает значения от 1 до 2000 и приводится к фактическому числу валидаторов в эпохе, поэтому 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":[]
}'Пример response (JSON)
result.total показывает, сколько валидаторов вернул этот запрос. Массив data[] ниже сокращён до трёх из 670 записей этой эпохи, а pingToLeaders каждой записи для читаемости урезан до одной observation region.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"
}
]
}
]
}
}Поля response
| Поле | Значение |
|---|---|
result.success | Успешно ли выполнен запрос. |
result.message | Человекочитаемый статус запроса. |
result.epoch | Эпоха, к которой относится возвращённый набор лидеров. Это самая свежая эпоха в расписании лидеров. |
result.total | Количество валидаторов в data. Именно по этому числу тарифицируется вызов. |
result.totalValidators | Количество лидирующих валидаторов в этой эпохе до применения country, region или limit. Сравните с result.total, чтобы увидеть, насколько фильтр сузил выборку. |
result.data[] | По одной записи на валидатора, по убыванию slotCount, затем по identity, поэтому limit возвращает валидаторов с наибольшим числом слотов. |
identity | Публичный ключ identity валидатора. |
gossipNodeId | Идентификатор gossip-записи, связанной с этим валидатором. Равен null, если gossip-узел не связан; в этом случае поля расположения, портов и ping также пусты. Валидаторы без связанного gossip-узла возвращаются в неотфильтрованном запросе, но не могут совпасть с фильтром country или region. |
slotCount | Количество слотов, которые этот валидатор ведёт в указанной эпохе. Каждая запись описывает валидатора, а не слот. |
stakeWeight | Активированный стейк identity валидатора в SOL. Валидаторы без связанного gossip-узла возвращают 0. |
ipAddress, gossipPort, tpuPort, tpuQuicPort, rpcAddress | Метаданные сетевого gossip-endpoint валидатора. |
version, featureSet | Версия клиента Solana и feature set, о которых сообщает валидатор. |
leaderRegion | Нормализованная метка операционного региона для routing и анализа. Может объединять близкие города или локации провайдеров; именно с ней сопоставляется параметр запроса region. |
leaderCity, leaderCountry, leaderLat, leaderLon, leaderOrg, leaderTimezone | Предполагаемые геолокация и сетевая организация валидатора. |
pingToLeaders[] | Справочная latency до этого валидатора из каждой observation region ERPC, включая region, city, ms, icmpReplied, fromIp, country, координаты, ASN organization, почтовый индекс, timezone и measuredAt. |
pingToLeaders[].icmpReplied | Ответил ли валидатор на измерение. Если значение false, в ms стоит сохранённая заглушка, а не latency, и читать её как latency нельзя. |
pingToLeaders[].measuredAt | Время последнего измерения latency в UTC, ISO-8601. По нему судят, насколько свежо значение. |
Визуализация покрытия валидаторами
Тот же response можно читать как карту покрытия на уровне эпохи, а не как послотовый поиск. В примере ниже точкой наблюдения является Frankfurt.
| Регион валидатора | Локация | Слотов в эпохе | Stake weight | Ping из Frankfurt | Операционный вывод |
|---|---|---|---|---|---|
| frankfurt | Frankfurt am Main, DE | 13,232 | 12,254,651.76 | 0.974 ms | 13,232 из примерно 432,000 слотов эпохи, в том же metro. Мощности во Frankfurt обслуживают этого валидатора всю эпоху, а не только в одном слотовом окне. |
| stockholm | Šiauliai, LT | 2,704 | 2,502,391.14 | 27.742 ms | Повторяющаяся доля эпохи при latency, которую другая европейская локация обслужила бы лучше. |
| amsterdam | Amsterdam, NL | 304 | 280,745.69 | 16.835 ms | Мало слотов за эпоху. Путь короткий, но само по себе это не повод размещать мощности. |
getLeaderSlots отвечает на вопрос, какие валидаторы ведут ближайшие слоты, и поэтому подходит для маршрутизации транзакции прямо сейчас; этот метод отвечает на вопрос, какие валидаторы вообще ведут эпоху и как часто, и поэтому подходит для решения, где на эту эпоху должны находиться мощности.
Сайт данных сети Solana
Используйте Validators Solutions для публичного обзора распределения сети, а
getValidatorsInformation — для числа слотов, стейка, локации и измеренной latency по каждому валидатору.Использование tokens
Этот метод тарифицируется по числу возвращённых валидаторов единицами по 10: каждые 10 валидаторов стоят 100 токенов, а неполная единица считается полной. Ответ на 95 валидаторов поэтому оплачивается как 10 единиц, то есть 1 000 токенов.
Поскольку начисление следует за тем, что возвращено, а не за тем, что запрошено, выборка, суженная через
country или region, стоит пропорционально меньше, а запрос, под который не подошёл ни один валидатор, не стоит ничего. limit больше числа валидаторов в эпохе приводится к реальному числу, поэтому запрос никогда не платит за несуществующих валидаторов.Размер набора лидеров меняется от эпохи к эпохе. В показанной выше эпохе это было 670 валидаторов, поэтому полное чтение обходится примерно в 6 700 токенов.
Почему информация о валидаторах важна
- Одна строка на валидатора отвечает, кто ведёт эту эпоху и сколько, без агрегации сотен тысяч слотовых строк на клиенте.
slotCountпоказывает, как часто валидатор является лидером в этой эпохе, поэтому короткий путь до валидатора с высокимslotCountокупается многократно.countryиregionпоказывают, где на самом деле сосредоточены лидерские мощности эпохи.- Ping вместе с
measuredAtотделяет медленный путь от устаревшего измерения.
Контекст
Одна Solana epoch состоит примерно из 432 000 slots. Если сгруппировать назначения лидеров для этих слотов по identity валидатора, они сворачиваются примерно в 670 строк валидаторов. ERPC поддерживает leader schedule, validator metadata, geolocation и сбор latency и предоставляет результат через RPC-интерфейс.
Стратегические сценарии
- Планирование мощностей на уровне эпохи: рассчитывайте инфраструктуру по полному набору валидаторов, ведущих текущую эпоху, а не по скользящему слотовому окну.
- Региональные шорт-листы: используйте
countryиregion, чтобы получить валидаторов, ведущих слоты в нужной локации. - Приоритизация по числу слотов и стейку: сочетайте
slotCountиstakeWeight, чтобы ранжировать валидаторов внутри шорт-листа. - Мониторинг между эпохами: сравнивайте распределение
leaderRegionмежду эпохами, чтобы видеть, как смещается география лидеров.
Доступность
getValidatorsInformation доступен всем пользователям ERPC. API tokens и usage credits можно выпустить или проверить в ERPC Web Dashboard.- ERPC Web Dashboard: ERPC Web Dashboard
Успешность транзакций и SWQoS Endpoint
Чтобы дополнительно повысить успешность транзакций и скорость исполнения, мы рекомендуем использовать SWQoS Endpoint. SWQoS (Stake-weighted Quality of Service) приоритизирует validators со stake connections. Leaders выделяют примерно 80% bandwidth для priority traffic и 20% для non-priority traffic; priority lane дает около 5x throughput. Эта scheduling происходит до оценки Priority fee, поэтому попадание в SWQoS priority lane является предпосылкой настоящей low-latency performance.







