Документация по 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>
Все параметры необязательны; если опустить params или передать params: [], вернутся все валидаторы, ведущие слот в текущей эпохе.
json
{
  "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" }]
}
Все три параметра необязательны. 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":[]
  }'

Пример 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"
          }
        ]
      }
    ]
  }
}

Поля 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 weightPing из FrankfurtОперационный вывод
frankfurtFrankfurt am Main, DE13,23212,254,651.760.974 ms13,232 из примерно 432,000 слотов эпохи, в том же metro. Мощности во Frankfurt обслуживают этого валидатора всю эпоху, а не только в одном слотовом окне.
stockholmŠiauliai, LT2,7042,502,391.1427.742 msПовторяющаяся доля эпохи при latency, которую другая европейская локация обслужила бы лучше.
amsterdamAmsterdam, NL304280,745.6916.835 msМало слотов за эпоху. Путь короткий, но само по себе это не повод размещать мощности.
getLeaderSlots отвечает на вопрос, какие валидаторы ведут ближайшие слоты, и поэтому подходит для маршрутизации транзакции прямо сейчас; этот метод отвечает на вопрос, какие валидаторы вообще ведут эпоху и как часто, и поэтому подходит для решения, где на эту эпоху должны находиться мощности.

Сайт данных сети Solana

Validators Solutions - Solana network data
Используйте 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.

Успешность транзакций и 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.