Tài liệu API thông tin Leader Slot

API thông tin Leader Slot (getLeaderSlots) là gì?

getLeaderSlots là phương thức Solana RPC mở rộng trả về các bản ghi leader slot sắp tới, bao gồm validator identity, stake weight, metadata endpoint mạng, vị trí leader ước tính và số đo latency tham chiếu. Nếu bạn có credit sử dụng ERPC (API token), bạn có thể gọi phương thức này với cùng định dạng như Solana RPC tiêu chuẩn.
API này cung cấp:
  • Lịch trình validator leader bắt đầu từ slot được chỉ định
  • stakeWeight của từng validator leader
  • Region, city, country, tọa độ, ASN organization và timezone ước tính của leader
  • Số đo ping tham chiếu từ các region quan sát của ERPC qua pingToLeaders

Endpoint và ví dụ Request Body

text
https://edge.erpc.global?api-key=<YOUR_API_KEY>
Chỉ định slot bắt đầu trong params.
json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getLeaderSlots",
  "params": [436946064]
}

Ví dụ (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]
  }'

Ví dụ Response (JSON)

Response hiện tại đặt các bản ghi trong result.data[]. result.total cho biết số lượng bản ghi được trả về. Mảng data[] bên dưới được rút gọn còn 3 trong 100 bản ghi của request này. Mục đầu tiên hiển thị pingToLeaders từ cả bảy region quan sát của ERPC; các mục còn lại được cắt còn một region cho dễ đọc.
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"
          }
        ]
      }
    ]
  }
}

Trường trong response

TrườngÝ nghĩa
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 tham chiếu từ các region quan sát của ERPC (frankfurt, amsterdam, ny, london, tokyo, singapore, sydney) tới leader, gồm region, city, ms, icmpReplied, fromIp, country, tọa độ, ASN organization, mã bưu chính, timezone và measuredAt.
pingToLeaders[].icmpRepliedValidator có phản hồi phép đo ICMP hay không. Khi là false, ms chứa giá trị sentinel được lưu sẵn chứ không phải latency, và không nên đọc như latency. Hãy coi false là không xác định, chứ không phải là ở xa hay không dùng được: một số validator không trả lời ICMP nhưng vẫn phục vụ TPU và QUIC bình thường, và việc lọc bỏ chúng có thể loại một leader khỏe mạnh khỏi đường gửi của bạn. Hãy kiểm tra icmpReplied trước khi tin ms là một giá trị latency: trường này quyết định con số đó có dùng được hay không, chứ không quyết định gửi tới validator nào.
pingToLeaders[].measuredAtThời điểm latency được đo lần cuối, theo ISO-8601 UTC. Dùng nó để đánh giá số đo còn mới đến mức nào. Mỗi region quan sát đo độc lập, nên các mục trong cùng một mảng pingToLeaders có thể mang giá trị measuredAt khác nhau. measuredAt cũ hơn không có nghĩa là số đo bị hỏng: khi một lượt đo không chạy xong, giá trị đã lưu được giữ nguyên thay vì bị ghi đè bằng một giá trị bịa ra, nên nó vẫn phản ánh một phép đo có thật trong quá khứ.

Hiển thị Leader Slot trực quan

Cùng một response có thể được đọc như timeline vận hành theo từng slot. Ví dụ dưới đây dùng Frankfurt làm điểm quan sát.
Cửa sổ slotLeader regionVị trí leaderStake weightPing từ FrankfurtCách đọc vận hành
436946064-436946066dublinCrumlin, IE819,031.3718.438 msMột leader nắm giữ ba slot liên tiếp. Frankfurt phục vụ nó ở 18.4 ms, nhưng London (11.0 ms) và Amsterdam (12.8 ms) gần hơn — trong cửa sổ này, tài nguyên London hoặc Amsterdam tốt hơn Frankfurt.
436946068frankfurtFrankfurt am Main, DE166,438.250.062 msLeader cùng metro. Tài nguyên Frankfurt được ưu tiên mạnh cho slot này.
Điều này quan trọng vì Solana là mạng toàn cầu. Khác với HFT truyền thống, nơi mục tiêu thường là ở gần một matching engine, leader của Solana luân phiên giữa các validator trên toàn thế giới. Region nhanh nhất thay đổi theo leader schedule.

Website dữ liệu mạng Solana

Validators Solutions - Solana network data
Để xem phân bố validator và mạng công khai, hãy dùng Validators Solutions. Dùng nó để hiểu bức tranh Solana rộng hơn, sau đó dùng getLeaderSlots cho lịch trình cấp slot, stake weight, vị trí validator và latency đo được phục vụ routing vận hành.

Sử dụng token

API lấy 100 bản ghi leader slot bắt đầu từ slot được chỉ định. Mỗi request tiêu thụ 420 tokens.
Nếu bạn cần một mục cho mỗi validator trong toàn bộ epoch thay vì một mục cho mỗi slot, hãy dùng Validators Information API, vốn được tính phí theo số validator mà nó trả về.

Vì sao thông tin Leader Slot quan trọng

  • Nếu leader xa về địa lý hoặc đường mạng, direct transaction delivery trở nên kém hiệu quả.
  • Stake weight giúp ước lượng validator nào có khả năng xuất hiện thường xuyên hơn trong leader schedule theo thời gian.
  • Trong các chuyển đổi leader toàn cầu, chiến lược chuyển region quan trọng hơn một con số latency trung bình toàn cầu.
  • Kết hợp slot schedule, stake weight, vị trí leader và ping đo được giúp tối ưu routing và vị trí hạ tầng.

Bối cảnh

Một Solana epoch có khoảng 432.000 slots. Việc thu thập liên tục leader schedule, validator metadata, geolocation và latency measurement cần một datapipeline chuyên dụng. ERPC duy trì dữ liệu này và cung cấp nó qua RPC như một leader slot map có thể dùng ngay.

Trường hợp sử dụng chiến lược

  • Tối ưu phát hiện: ưu tiên các leader window gần và latency thấp.
  • Triển khai đa region: đặt tài nguyên tại FRA, AMS, NY, TY, SGP và các region chiến lược khác để giảm khoảng trống khi chuyển leader.
  • Lập kế hoạch theo stake: dùng stakeWeight để hiểu leader nào thường quan trọng hơn trong khung thời gian dài.
  • Visualization và analytics: theo dõi leader ratio, stake distribution và latency distribution theo region.

Khả dụng

getLeaderSlots khả dụng cho tất cả người dùng ERPC. API token và credit sử dụng có thể được phát hành hoặc kiểm tra trên ERPC Web Dashboard.

Tỷ lệ thành công giao dịch và SWQoS Endpoint

Để cải thiện thêm tỷ lệ thành công giao dịch và tốc độ thực thi, chúng tôi khuyến nghị sử dụng SWQoS Endpoint. SWQoS (Stake-weighted Quality of Service) ưu tiên các validator có stake connection. Leader phân bổ khoảng 80% bandwidth cho priority traffic và 20% cho non-priority traffic; priority lane có throughput khoảng 5x. Scheduling này diễn ra trước khi đánh giá Priority fee, nghĩa là vào được SWQoS priority lane là điều kiện nền tảng cho hiệu năng low-latency thực sự.