هياكل بيانات 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 إذا نجحت المعاملة. تعريفات TransactionErrorfee: <u64>
- الرسوم التي تم فرضها على هذه المعاملة، كعدد صحيح u64preBalances: <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 المكافأة المضافة أو المخصومة من الحساب، كـ i64postBalance: <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-58data: <[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?