هياكل بيانات JSON الشائعة لطرق RPC في سولانا

تقوم طرق RPC المختلفة في سولانا بإرجاع استجابات أكثر تعقيدًا على شكل كائنات JSON منظمة، مملوءة بقيم مفتاحية محددة.

تشمل هياكل بيانات JSON الأكثر شيوعًا ما يلي:

المعاملات

تختلف المعاملات في سولانا كثيرًا عن المعاملات في سلاسل الكتل الأخرى. تأكد من مراجعة تشريح المعاملة للتعرف على المعاملات في سولانا.

JSON

يتم تعريف بنية JSON للمعاملة على النحو التالي:

  • message: <object> - يحدد محتوى المعاملة.
    • accountKeys: <array[string]> - قائمة المفاتيح العامة المشفرة بنظام base-58 المستخدمة في المعاملة، بما في ذلك التعليمات والتوقيعات. يجب أن تكون أول message.header.numRequiredSignatures مفاتيح عامة موقعة على المعاملة.
    • header: <object> - يوضح أنواع الحسابات والتوقيعات المطلوبة من قبل المعاملة.
      • numRequiredSignatures: <number> - العدد الإجمالي للتوقيعات المطلوبة لجعل المعاملة صالحة. يجب أن تتطابق التوقيعات مع أول numRequiredSignatures من message.accountKeys.
      • numReadonlySignedAccounts: <number> - آخر numReadonlySignedAccounts من المفاتيح الموقعة هي حسابات للقراءة فقط. يمكن للبرامج معالجة معاملات متعددة تقوم بتحميل حسابات للقراءة فقط ضمن إدخال PoH واحد، ولكن لا يُسمح لها بإضافة أو خصم lamport أو تعديل بيانات الحساب. يتم تقييم المعاملات التي تستهدف نفس حساب القراءة والكتابة بشكل متسلسل.
      • numReadonlyUnsignedAccounts: <number> - آخر numReadonlyUnsignedAccounts من المفاتيح غير الموقعة هي حسابات للقراءة فقط.
    • recentBlockhash: <string> - تجزئة مشفرة بنظام base-58 لكتلة حديثة في دفتر الأستاذ تستخدم لمنع تكرار المعاملات وتحديد مدة صلاحية المعاملات.
    • instructions: <array[object]> - قائمة تعليمات البرنامج التي سيتم تنفيذها بالتسلسل والالتزام بها في معاملة ذرية واحدة إذا نجحت جميعها.
      • programIdIndex: <number> - فهرس في مصفوفة message.accountKeys يشير إلى حساب البرنامج الذي ينفذ هذا التعليمات.
      • accounts: <array[number]> - قائمة الفهارس المرتبة في مصفوفة message.accountKeys تشير إلى الحسابات التي سيتم تمريرها إلى البرنامج.
      • data: <string> - بيانات إدخال البرنامج المشفرة في سلسلة base-58.
    • addressTableLookups: <array[object]|undefined> - قائمة عمليات البحث في جدول العناوين المستخدمة بواسطة المعاملة لتحميل العناوين ديناميكيًا من جداول البحث عن العناوين على السلسلة. غير محدد إذا لم يتم تعيين maxSupportedTransactionVersion.
      • accountKey: <string> - مفتاح عام مشفر بنظام base-58 لحساب جدول البحث عن العناوين.
      • writableIndexes: <array[number]> - قائمة الفهارس المستخدمة لتحميل عناوين الحسابات القابلة للكتابة من جدول البحث.
      • readonlyIndexes: <array[number]> - قائمة الفهارس المستخدمة لتحميل عناوين الحسابات للقراءة فقط من جدول البحث.
  • signatures: <array[string]> - قائمة التوقيعات المشفرة بنظام base-58 المطبقة على المعاملة. القائمة دائمًا بطول message.header.numRequiredSignatures وليست فارغة. التوقيع في الفهرس i يتوافق مع المفتاح العام في الفهرس i في message.accountKeys. يتم استخدام التوقيع الأول كـ معرف المعاملة.

تحليل JSON

الهيكل المحلل لـ JSON للمعاملة يتبع هيكلاً مشابهاً لتنسيق JSON العادي، مع تحليل إضافي لمعلومات الحساب والتعليمات:

  • message: <object> - يحدد محتوى المعاملة.
    • accountKeys: <array[object]> - قائمة معلومات الحساب المستخدمة بواسطة المعاملة.
      • pubkey: <string> - المفتاح العام المشفر بنظام base-58 للحساب.
      • signer: <boolean> - يشير إلى ما إذا كان الحساب موقعًا مطلوبًا للمعاملة.
      • writable: <boolean> - يشير إلى ما إذا كان الحساب قابلاً للكتابة.
      • source: <string> - مصدر الحساب (المعاملة أو جدول البحث).
    • recentBlockhash: <string> - تجزئة مشفرة بنظام base-58 لكتلة حديثة في السجل تستخدم لمنع تكرار المعاملة وإعطاء المعاملات فترات حياة.
    • instructions: <array[object]> - قائمة تعليمات البرنامج المحللة.
      • program: <string> - اسم البرنامج الذي يتم استدعاؤه.
      • programId: <string> - المفتاح العام المشفر بنظام base-58 للبرنامج.
      • stackHeight: <number|null> - ارتفاع المكدس للتعليمات.
      • parsed: <object> - بيانات محللة خاصة بالبرنامج.
        • type: <string> - نوع التعليمات (مثل "تحويل").
        • info: <object> - معلومات التعليمات المحللة الخاصة بالبرنامج ونوع التعليمات.
  • signatures: <array[string]> - قائمة التوقيعات المشفرة بنظام base-58 المطبقة على المعاملة.

بيانات تعريف حالة المعاملة

  • err: <object|null> - خطأ إذا فشلت المعاملة، null إذا نجحت المعاملة. تعريفات TransactionError
  • fee: <u64> - الرسوم التي تم فرضها على هذه المعاملة، كعدد صحيح u64
  • preBalances: <array> - مصفوفة أرصدة الحسابات u64 من قبل معالجة المعاملة
  • postBalances: <array> - مصفوفة أرصدة الحسابات u64 بعد معالجة المعاملة
  • innerInstructions: <array|null> - قائمة التعليمات الداخلية أو null إذا لم يتم تمكين تسجيل التعليمات الداخلية أثناء هذه المعاملة
  • preTokenBalances: <array|undefined> - قائمة أرصدة الرموز من قبل معالجة المعاملة أو تم حذفها إذا لم يتم تمكين تسجيل رصيد الرمز بعد أثناء هذه المعاملة
  • postTokenBalances: <array|undefined> - قائمة أرصدة الرموز من بعد معالجة المعاملة أو تم حذفها إذا لم يتم تمكين تسجيل رصيد الرمز بعد أثناء هذه المعاملة
  • logMessages: <array|null> - مصفوفة رسائل سجل النص أو null إذا لم يتم تمكين تسجيل رسائل السجل أثناء هذه المعاملة
  • rewards: <array|null> - مكافآت على مستوى المعاملة؛ مصفوفة من كائنات JSON تحتوي على:
    • pubkey: <string> - المفتاح العام، كسلسلة مشفرة بنظام base-58، للحساب الذي تلقى المكافأة
    • lamports: <i64>- عدد lamport المكافأة المضافة أو المخصومة من الحساب، كـ i64
    • postBalance: <u64> - رصيد الحساب بالـ lamport بعد تطبيق المكافأة
    • rewardType: <string|undefined> - نوع المكافأة: "fee"، "rent"، "voting"، "staking"
    • commission: <u8|undefined> - عمولة حساب التصويت عند إضافة المكافأة، موجودة فقط لمكافآت التصويت والتخزين
  • مهمل: status: <object> - حالة المعاملة
    • "Ok": <null> - المعاملة كانت ناجحة
    • "Err": <ERR> - فشلت المعاملة مع TransactionError
  • loadedAddresses: <object|undefined> - عناوين المعاملة المحملة من جداول بحث العناوين. غير محدد إذا لم يتم تعيين maxSupportedTransactionVersion في معلمات الطلب، أو إذا تم تعيين ترميز jsonParsed في معلمات الطلب.
    • writable: <array[string]> - قائمة مرتبة من العناوين المشفرة بنظام base-58 للحسابات المحملة القابلة للكتابة
    • readonly: <array[string]> - قائمة مرتبة من العناوين المشفرة بنظام base-58 للحسابات المحملة للقراءة فقط
  • returnData: <object|undefined> - أحدث بيانات إرجاع تم إنشاؤها بواسطة تعليمات في المعاملة، مع الحقول التالية:
    • programId: <string> - البرنامج الذي أنشأ بيانات الإرجاع، كـ Pubkey مشفر بنظام base-58
    • data: <[string, encoding]> - بيانات الإرجاع نفسها، كبيانات ثنائية مشفرة بنظام base-64
  • computeUnitsConsumed: <u64|undefined> - عدد وحدات الحوسبة المستهلكة بواسطة المعاملة
  • version: <"legacy"|number|undefined> - إصدار المعاملة. غير محدد إذا لم يتم تعيين maxSupportedTransactionVersion في معلمات الطلب.
  • signatures: <array> - موجود إذا تم طلب "التوقيعات" لتفاصيل المعاملة؛ مصفوفة من سلاسل التوقيعات، المقابلة لترتيب المعاملة في الكتلة

التعليمات الداخلية

يسجل نظام تشغيل سولانا التعليمات البرمجية المتداخلة التي يتم استدعاؤها أثناء معالجة المعاملات ويجعلها متاحة لمزيد من الشفافية حول ما تم تنفيذه على السلسلة لكل تعليمة معاملة. يتم تجميع التعليمات المستدعاة حسب تعليمة المعاملة الأصلية وتُدرج بترتيب المعالجة.

تم تعريف البنية JSON للتعليمات الداخلية كقائمة من الكائنات في الهيكل التالي:

  • index: number - فهرس تعليمة المعاملة التي نشأت منها التعليمة (التعليمات) الداخلية
  • instructions: <array[object]> - قائمة مرتبة من تعليمات البرنامج الداخلية التي تم استدعاؤها خلال تعليمة معاملة واحدة.
    • programIdIndex: <number> - فهرس في مصفوفة message.accountKeys يشير إلى حساب البرنامج الذي ينفذ هذه التعليمة.
    • accounts: <array[number]> - قائمة من الفهارس المرتبة في مصفوفة message.accountKeys تشير إلى الحسابات التي سيتم تمريرها إلى البرنامج.
    • data: <string> - بيانات إدخال البرنامج المشفرة في سلسلة بقاعدة 58.

أرصدة الرموز

تم تعريف بنية JSON لأرصدة الرموز كقائمة من الكائنات في الهيكل التالي:

  • accountIndex: <number> - فهرس الحساب الذي يتم توفير رصيد الرمز له.
  • mint: <string> - مفتاح عام لسك الرمز.
  • owner: <string|undefined> - مفتاح عام لمالك رصيد الرمز.
  • programId: <string|undefined> - مفتاح عام لبرنامج الرمز الذي يملك الحساب.
  • uiTokenAmount: <object> -
    • amount: <string> - المبلغ الخام للرموز كسلسلة، متجاهلاً الكسور العشرية.
    • decimals: <number> - عدد الكسور العشرية المكونة لسك الرمز.
    • uiAmount: <number|null> - مبلغ الرمز كرقم عشري، مع مراعاة الكسور العشرية. مهمل
    • uiAmountString: <string> - مبلغ الرمز كسلسلة، مع مراعاة الكسور العشرية.

Is this page helpful?

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

تعديل الصفحة