Документация по Leader Slot Information API

Что такое Leader Slot Information API (getLeaderSlots)?

getLeaderSlots - это расширенный метод Solana RPC, который возвращает будущие записи leader slot: validator identity, stake weight, сетевые endpoint metadata, предполагаемую локацию leader и справочные измерения latency. Если у вас есть usage credits ERPC (API tokens), вы можете вызывать его в том же формате, что и стандартный Solana RPC method.
API предоставляет:
  • расписание leader validators, начиная с указанного slot
  • 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>
Укажите начальный slot в params.
json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getLeaderSlots",
  "params": [436946064]
}

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

Пример response (JSON)

Текущий response помещает записи в result.data[]. result.total показывает, сколько записей вернул запрос. Массив data[] ниже сокращён до трёх из 100 записей этого запроса. Первая запись показывает pingToLeaders из всех семи observation regions ERPC; остальные записи для читаемости урезаны до одного региона.
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"
          }
        ]
      }
    ]
  }
}

Поля response

ПолеЗначение
result.successWhether the request succeeded.
result.messageHuman-readable status message.
result.totalNumber of returned leader slot records. The API currently returns 100 records per request.
result.data[]Ordered leader slot records starting from the requested slot.
identityLeader validator identity public key.
epochSolana epoch containing the slot.
slotSlot number. It is returned as a string, so clients should not assume a JSON number.
stakeWeightStake delegated to the leader validator. Higher stake generally means the validator appears in leader schedules more often over time.
leaderRegionNormalized operational region label used for routing and analysis. It may group nearby cities or provider locations.
leaderCity, leaderCountry, leaderLat, leaderLon, leaderOrg, leaderTimezoneEstimated geolocation and network organization for the leader validator.
pingToLeaders[]Справочная latency от observation regions ERPC (frankfurt, amsterdam, ny, london, tokyo, singapore, sydney) до лидера, включая region, city, ms, icmpReplied, fromIp, country, координаты, ASN organization, почтовый индекс, timezone и measuredAt.
pingToLeaders[].icmpRepliedОтветил ли валидатор на измерение по ICMP. Если значение false, в ms стоит сохранённый sentinel, а не latency, и читать его как latency нельзя. Считайте false признаком «неизвестно», а не «далеко» или «непригоден»: часть валидаторов не отвечает на ICMP, но при этом штатно обслуживает TPU и QUIC, и их отсев может убрать здорового лидера из вашего пути отправки. Проверьте icmpReplied, прежде чем считать ms задержкой: это поле решает, пригодно ли число, а не то, какому валидатору отправлять.
pingToLeaders[].measuredAtВремя последнего измерения latency в UTC, ISO-8601. По нему судят, насколько свежо значение. Каждая observation region измеряет независимо, поэтому записи в одном и том же массиве pingToLeaders могут иметь разные measuredAt. Более старый measuredAt не означает испорченное значение: если прогон измерения не доходит до конца, сохранённое значение остаётся на месте и не перезаписывается выдуманным, так что оно по-прежнему отражает реально выполненное измерение.

Визуализация Leader Slots

Тот же response можно читать как операционный timeline по slot. В примере ниже точкой наблюдения является Frankfurt.
Окно slotLeader regionЛокация leaderStake weightPing из FrankfurtОперационный вывод
436946064-436946066dublinCrumlin, IE819,031.3718.438 msОдин leader занимает три подряд идущих slot. Frankfurt обслуживает его с latency 18.4 ms, но London (11.0 ms) и Amsterdam (12.8 ms) ближе — в этом окне мощности в London или Amsterdam выигрывают у Frankfurt.
436946068frankfurtFrankfurt am Main, DE166,438.250.062 msLeader в том же metro. Frankfurt resources имеют сильное преимущество для этого slot.
Это важно, потому что Solana является глобальной сетью. В отличие от традиционного HFT, где часто достаточно быть рядом с одним matching engine, leaders Solana ротируются между validators по всему миру. Самая быстрая region меняется вместе с leader schedule.

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

Validators Solutions - Solana network data
Для публичного просмотра распределения validators и сети используйте Validators Solutions. Он помогает понять широкую картину сети Solana, а getLeaderSlots нужен для slot-level schedule, stake weight, validator location и измеренной latency, необходимых для operational routing.

Использование tokens

API получает 100 leader slot records, начиная с указанного slot. Каждый request потребляет 420 tokens.
Если вам нужна одна запись на валидатора за всю эпоху, а не одна запись на слот, используйте API информации о валидаторах — начисление идёт по числу возвращаемых валидаторов.

Почему Leader Slot Information важна

  • Если leader далеко географически или по network path, direct transaction delivery становится неэффективной.
  • Stake weight помогает оценить, какие validators будут чаще появляться в leader schedule на длинном горизонте.
  • При глобальных leader transitions regional switching важнее, чем одно среднее значение latency.
  • Сочетание slot schedule, stake weight, leader location и measured ping позволяет оптимизировать routing и размещение инфраструктуры.

Контекст

Одна Solana epoch состоит примерно из 432 000 slots. Непрерывный сбор leader schedules, validator metadata, geolocation и latency measurements требует отдельного datapipeline. ERPC поддерживает эти данные и предоставляет их через RPC как готовую к использованию leader slot map.

Стратегические сценарии

  • Detection optimization: приоритизируйте близкие leader windows с низкой latency.
  • Multi-region deployment: размещайтесь в FRA, AMS, NY, TY, SGP и других стратегических regions, чтобы уменьшить gaps при transitions.
  • Stake-aware planning: используйте stakeWeight, чтобы понимать, какие leaders чаще важны на длинных окнах.
  • Visualization и analytics: отслеживайте leader ratios, stake distribution и latency distribution по region.

Доступность

getLeaderSlots доступен всем пользователям 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.