ملخص
يتيح متغير النظام Instructions (Sysvar1nstructions1111111111111111111111111)
للبرنامج قراءة جميع التعليمات من المستوى الأعلى في المعاملة الحالية بواسطة
الفهرس أو الإزاحة النسبية. تعليمات CPI الداخلية غير قابلة للوصول.
متغير النظام Instructions
يمكن للبرامج فحص جميع التعليمات من المستوى الأعلى في المعاملة الحالية عبر
متغير النظام Instructions (Sysvar1nstructions1111111111111111111111111).
يتيح هذا للبرنامج فحص التعليمات الأخرى في نفس المعاملة، على سبيل المثال للتحقق
من أن تعليمة معينة موجودة في نفس المعاملة مع التعليمة التي يتم تنفيذها.
يحتوي متغير النظام Instructions فقط على التعليمات من المستوى الأعلى من رسالة المعاملة. التعليمات الداخلية المستدعاة عبر CPI غير قابلة للوصول من خلال متغير النظام هذا.
لا يتم الوصول إلى متغير النظام instructions من خلال سمة Sysvar العادية.
بدلاً من ذلك، يتم الوصول إليه من خلال دوال حرة في مكتبة
solana_instructions_sysvar.
يتم تسلسل بيانات متغير النظام بتخطيط ثنائي مخصص:
| الإزاحة | الحجم | الوصف |
|---|---|---|
| 0 | 2 | num_instructions (u16، little-endian) |
| 2 | 2 * N | إزاحات البايت لكل تعليمة (u16 لكل منها) |
| متغير | متغير | بيانات التعليمات المسلسلة |
| آخر 2 بايت | 2 | فهرس التعليمة الحالية (u16، little-endian) |
تحتوي كل تعليمة مسلسلة على: عدد الحسابات (u16)، والحسابات كإدخالات من 33 بايت (1 بايت علامة + 32 بايت pubkey)، ومعرف البرنامج (32 بايت)، وطول البيانات (u16)، وبايتات البيانات الخام.
الوظائف الرئيسية:
load_current_index_checked(account_info): يُرجع فهرس التعليمة قيد التنفيذ حاليًا. يقوم وقت التشغيل بتحديث هذه القيمة في كل مرة تبدأ فيها تعليمة جديدة من المستوى الأعلى.load_instruction_at_checked(index, account_info): يقوم بإلغاء تسلسل التعليمة عند الفهرس المطلق المحدد.get_instruction_relative(offset, account_info): يُحمّل تعليمة بالنسبة للتعليمة الحالية (على سبيل المثال،-1للتعليمة السابقة،1للتعليمة التالية).
Is this page helpful?