طرق HTTP لواجهة برمجة التطبيقات RPC لسولانا

تقبل عقد سولانا طلبات HTTP باستخدام مواصفات JSON-RPC 2.0.

بالنسبة لتطبيقات JavaScript، استخدم مكتبة @solana/web3.js كواجهة مناسبة لطرق RPC للتفاعل مع عقدة سولانا. للاتصال بواسطة PubSub بعقدة سولانا، استخدم واجهة برمجة تطبيقات Websocket.

نقطة نهاية HTTP RPC

المنفذ الافتراضي: 8899

تنسيق الطلب

لإرسال طلب JSON-RPC، أرسل طلب HTTP POST مع رأس Content-Type: application/json. يجب أن تحتوي بيانات طلب JSON على 4 حقول:

  • jsonrpc: <string> - يتم تعيينه إلى "2.0"
  • id: <string | number | null> - معرف فريد للطلب، يتم إنشاؤه بواسطة العميل. عادة ما يكون سلسلة نصية أو رقمًا، على الرغم من أن القيمة null مسموح بها تقنيًا ولكن لا ينصح بها
  • method: <string> - سلسلة نصية تحتوي على الطريقة المراد استدعاؤها
  • params: <array> - مصفوفة JSON من قيم المعلمات المرتبة

مثال باستخدام curl:

curl https://api.devnet.solana.com -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [
"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri"
]
}
'

سيكون إخراج الاستجابة كائن JSON مع الحقول التالية:

  • jsonrpc: <string> - مطابق لمواصفات الطلب
  • id: <number> - مطابق لمعرف الطلب
  • result: <array|number|object|string> - البيانات المطلوبة أو تأكيد النجاح

يمكن إرسال الطلبات في دفعات عن طريق إرسال مصفوفة من كائنات طلب JSON-RPC كبيانات لطلب POST واحد.

مثال على الطلب

يجب تضمين معلمة الالتزام كآخر عنصر في مصفوفة params:

curl https://api.devnet.solana.com -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [
"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri",
{
"commitment": "finalized"
}
]
}
'

التعريفات

  • التجزئة (Hash): تجزئة SHA-256 لقطعة من البيانات.
  • المفتاح العام (Pubkey): المفتاح العام لزوج مفاتيح Ed25519.
  • المعاملة (Transaction): قائمة من تعليمات سولانا موقعة بواسطة زوج مفاتيح العميل للتصريح بتلك الإجراءات.
  • التوقيع (Signature): توقيع Ed25519 لبيانات حمولة المعاملة بما في ذلك التعليمات. يمكن استخدام هذا لتحديد المعاملات.

فحص الصحة

على الرغم من أنها ليست واجهة برمجة تطبيقات JSON RPC، إلا أن طلب GET /health في نقطة نهاية HTTP RPC يوفر آلية فحص الصحة للاستخدام من قبل موازنات التحميل أو غيرها من البنية التحتية للشبكة. سيعيد هذا الطلب دائمًا استجابة HTTP 200 OK مع نص "ok" أو "behind" أو "unknown":

  • ok: العقدة ضمن HEALTH_CHECK_SLOT_DISTANCE slot من آخر slot مؤكد في الشبكة
  • behind { distance }: العقدة متأخرة بـ distance slot عن آخر slot مؤكد في الشبكة حيث distance > HEALTH_CHECK_SLOT_DISTANCE
  • unknown: العقدة غير قادرة على تحديد موقعها بالنسبة للشبكة

Is this page helpful?

جدول المحتويات

تعديل الصفحة