وثائق Leader Slot Information API

ما هي Leader Slot Information (getLeaderSlots) API؟

getLeaderSlots هي طريقة RPC موسّعة في Solana تُعيد سجلات خانات القائد القادمة مع هوية المدقق ووزن الحصة وبيانات نقطة النهاية الشبكية والموقع التقديري للقائد وقياسات زمن الاستجابة المرجعية. إذا كنت تملك أرصدة استخدام ERPC (رموز API)، فيمكنك استدعاؤها بنفس تنسيق طريقة Solana RPC القياسية.
توفر هذه API ما يلي:
  • جدول المدققين القادة بدءًا من الخانة المطلوبة
  • stakeWeight لكل مدقق قائد
  • المنطقة والمدينة والدولة والإحداثيات ومنظمة ASN والمنطقة الزمنية التقديرية للقائد
  • قياسات ping مرجعية من مناطق مراقبة ERPC عبر pingToLeaders

مثال على نقطة النهاية ونص الطلب

text
https://edge.erpc.global?api-key=<YOUR_API_KEY>
حدّد رقم الخانة الابتدائية في 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]
  }'

مثال على الاستجابة (JSON)

تغلّف الاستجابة الحالية السجلات داخل result.data[]. ويعرض result.total عدد السجلات المُعادة. مصفوفة data[] أدناه مختصرة إلى ثلاثة من السجلات المئة لهذا الطلب. يعرض الإدخال الأول pingToLeaders من مناطق مراقبة 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"
          }
        ]
      }
    ]
  }
}

حقول الاستجابة

الحقلالمعنى
result.successما إذا كان الطلب قد نجح.
result.messageرسالة حالة مقروءة للبشر.
result.totalعدد سجلات خانات القائد المُعادة. تُعيد API حاليًا 100 سجل لكل طلب.
result.data[]سجلات خانات القائد مرتبة بدءًا من الخانة المطلوبة.
identityالمفتاح العام لهوية المدقق القائد.
epochحقبة Solana التي تحتوي الخانة.
slotرقم الخانة. يُعاد كسلسلة نصية، لذا يجب ألا تفترض البرامج العميلة أنه رقم JSON.
stakeWeightالحصة المفوَّضة إلى المدقق القائد. تعني الحصة الأعلى عمومًا أن المدقق يظهر في جداول القادة بوتيرة أكبر بمرور الوقت.
leaderRegionتسمية منطقة تشغيلية مُطبَّعة تُستخدم للتوجيه والتحليل. وقد تجمع مدنًا متقاربة أو مواقع مزودين.
leaderCity وleaderCountry وleaderLat وleaderLon وleaderOrg وleaderTimezoneالموقع الجغرافي التقديري والمنظمة الشبكية للمدقق القائد.
pingToLeaders[]زمن استجابة مرجعي من مناطق مراقبة ERPC (frankfurt وamsterdam وny وlondon وtokyo وsingapore وsydney) إلى القائد، متضمنًا region وcity وms وicmpReplied وfromIp وcountry والإحداثيات ومنظمة ASN والرمز البريدي وtimezone وmeasuredAt.
pingToLeaders[].icmpRepliedما إذا كان المدقق قد ردّ على القياس. عندما تكون false، يحمل ms قيمة حارسة مخزّنة وليس زمن استجابة، ويجب ألا يُقرأ على أنه كذلك؛ تعامل مع false على أنها «غير معروف»، لا على أنها بعيد أو غير قابل للاستخدام، إذ إن بعض المدققين الذين لا يجيبون على ICMP ما زالوا يخدمون TPU وQUIC بشكل طبيعي، وقد يؤدي استبعادهم بالتصفية إلى إسقاط قائد سليم من مسار الإرسال لديك. تحقق من icmpReplied قبل الوثوق بـ ms كزمن استجابة — فهو يقرر ما إذا كان الرقم قابلًا للاستخدام، لا أيّ مدقق ترسل إليه.
pingToLeaders[].measuredAtوقت آخر قياس لزمن الاستجابة، بتنسيق ISO-8601 UTC. استخدمه للحكم على حداثة القراءة. تقيس كل منطقة مراقبة بشكل مستقل، لذا يمكن أن تحمل الإدخالات في مصفوفة pingToLeaders نفسها قيم measuredAt مختلفة. القيمة الأقدم في measuredAt ليست قراءة معطوبة: عندما يفشل تشغيل قياس في الاكتمال، تُترك القيمة المخزّنة كما هي بدلًا من الكتابة فوقها بقيمة مُختلَقة، لذا فهي ما تزال تعكس قياسًا سابقًا حقيقيًا.

عرض خانات القائد مرئيًا

يمكن عرض الاستجابة نفسها كخط زمني تشغيلي خانةً بخانة. يستخدم هذا المثال Frankfurt كنقطة مراقبة.
نافذة الخاناتمنطقة القائدموقع القائدوزن الحصةPing من Frankfurtالقراءة التشغيلية
436946064-436946066dublinCrumlin, IE819,031.3718.438 msقائد واحد يحوز ثلاث خانات متتالية. تخدمه Frankfurt بزمن 18.4 ms، لكن London (11.0 ms) وAmsterdam (12.8 ms) أقرب — في هذه النافذة، تتفوق سعة London أو Amsterdam على Frankfurt.
436946068frankfurtFrankfurt am Main, DE166,438.250.062 msقائد في المنطقة الحضرية نفسها. تُفضَّل موارد Frankfurt بقوة لهذه الخانة.
هذا العرض مفيد لأن Solana شبكة عالمية. وعلى خلاف HFT التقليدي، حيث يكون الهدف الرئيس غالبًا التموضع قرب محرك مطابقة واحد، يتناوب قادة Solana عبر مدققين حول العالم. وتتغير أسرع منطقة مع تغيّر جدول القادة.

موقع بيانات شبكة Solana

Validators Solutions - Solana network data
للاطلاع العام على توزيع المدققين والشبكة، استخدم Validators Solutions. استخدمه لفهم شبكة Solana الأوسع، ثم استخدم getLeaderSlots للحصول على الجدول على مستوى الخانة ووزن الحصة وموقع المدقق وبيانات زمن الاستجابة المقيسة اللازمة للتوجيه التشغيلي.

استهلاك الرموز

تسترجع API عدد 100 سجل من سجلات خانات القائد بدءًا من الخانة المحددة. ويستهلك كل طلب 420 رمزًا.
إذا كنت تحتاج إلى إدخال واحد لكل مدقق لكامل الحقبة بدلًا من إدخال واحد لكل خانة، فاستخدم Validators Information API، الذي تُحتسب فاتورته على عدد المدققين الذين يعيدهم.

أهمية معلومات خانات القائد

  • إذا كان القائد بعيدًا جغرافيًا أو في مسار الشبكة، يصبح تسليم المعاملات المباشر غير فعّال.
  • يساعد وزن الحصة في تقدير مدى تكرار ظهور المدقق في جدول القادة بمرور الوقت.
  • أثناء الانتقالات العالمية للقادة، تكون استراتيجيات التبديل الإقليمي أهم من متوسط زمن استجابة عالمي واحد.
  • يتيح الجمع بين جدول الخانات ووزن الحصة وموقع القائد وبيانات ping المقيسة توجيهًا مُحسَّنًا وتحديدًا أفضل لمواضع المدققين.

الخلفية

تتكون حقبة Solana الواحدة من حوالي 432,000 خانة. ويتطلب الجمع المستمر لجداول القادة وبيانات المدققين الوصفية والموقع الجغرافي وقياسات زمن الاستجابة خط بيانات مخصصًا. تحتفظ ERPC بهذه البيانات وتتيحها كخريطة خانات قادة جاهزة للاستخدام الفوري عبر واجهة RPC.

حالات الاستخدام الاستراتيجية

  • تحسين الرصد: إعطاء الأولوية لنوافذ القادة القريبة منخفضة زمن الاستجابة.
  • النشر متعدد المناطق: انشر في FRA وAMS وNY وTY وSGP وغيرها من المناطق الاستراتيجية لتقليل فجوات الانتقال.
  • التخطيط الواعي بالحصة: استخدم stakeWeight لفهم أيّ القادة أكثر أهمية بوتيرة أعلى عبر نوافذ أطول.
  • التصوير المرئي والتحليلات: راقب نسب القادة وتوزيع الحصص وتوزيع زمن الاستجابة حسب المنطقة.

التوفر

getLeaderSlots متاحة لجميع مستخدمي ERPC. ويمكن إصدار رموز API وأرصدة الاستخدام أو التحقق منها في ERPC Web Dashboard.

معدل نجاح المعاملات ونقطة نهاية SWQoS

لتحسين معدل نجاح المعاملات وسرعة التنفيذ بشكل أكبر، نوصي باستخدام نقطة نهاية SWQoS. تعطي SWQoS (Stake-weighted Quality of Service) الأولوية للمدققين أصحاب اتصالات الحصة. يخصص القادة حوالي 80% من النطاق الترددي لحركة الأولوية و20% لحركة غير الأولوية، مع توفير المسار ذي الأولوية إنتاجية تقارب 5 أضعاف. تجري هذه الجدولة قبل تقييم Priority fee، ما يعني أن الدخول إلى مسار أولوية SWQoS هو الشرط المسبق لأداء منخفض زمن الاستجابة حقًا.