نشر البرنامج

ملخص

يمكن ترقية البرامج المنشورة عبر loader-v3 عند تعيين سلطة الترقية. إلغاء السلطة يجعل البرنامج غير قابل للتغيير. يغطي آلية الترقية، وتعليمات النشر والترقية لـ loader-v3، والتحقق من البناء، وبرامج التحميل المتاحة.

نشر البرامج

ترقية البرامج

لترقية برنامج، يجب أن يحمل حساب صلاحية الترقية (عادةً الحساب الذي نشر البرنامج في الأصل). أثناء النشر أو الترقية، يتم تحميل الكود الثنائي الجديد إلى حساب مؤقت مخصص للتخزين المؤقت، ثم يُكتب إلى حساب بيانات البرنامج. تعيين صلاحية الترقية إلى None يجعل البرنامج غير قابل للتغيير ويمنع التحديثات الإضافية بشكل دائم.

آلية الترقية

عند معالجة UpgradeableLoaderInstruction::Upgrade، يقوم وقت التشغيل بـ:

  1. التحقق من أن حساب البرنامج قابل للكتابة ومملوك بواسطة loader-v3.
  2. التحقق من أن حساب المخزن المؤقت يحتوي على حالة Buffer مع الصلاحية الصحيحة.
  3. التحقق من أن upgrade_authority_address لحساب ProgramData يتطابق وليس None.
  4. التحقق من أن البرنامج لم يتم نشره بالفعل في الفترة الزمنية الحالية (clock.slot != slot).
  5. تحميل والتحقق من بايتات ELF الجديدة من المخزن المؤقت.
  6. نسخ الكود الثنائي الجديد من المخزن المؤقت إلى حساب ProgramData وتصفير البايتات المتبقية.
  7. تمويل حساب ProgramData للإعفاء من الإيجار.
  8. تفريغ حساب المخزن المؤقت (تعيين lamports إلى 0) واقتطاع بياناته.
  9. تصبح النسخة الجديدة فعالة في الفترة الزمنية التالية (deployment_slot + 1).

حساب Program نفسه (حالته ومؤشر programdata_address) لا يتغير أثناء الترقية. يتم تحديث الكود الثنائي وبيانات الـ slot الوصفية لحساب ProgramData فقط.

مرجع تعليمات Loader-v3

Loader-v3 (BPF Loader Upgradeable) هو المحمّل الافتراضي الحالي لنشر البرامج على سولانا.

التعليمةالوصف
InitializeBufferيعيّن حالة حساب المخزن المؤقت إلى Buffer مع السلطة المحددة. يفشل إذا كان قد تم تهيئته مسبقاً.
Writeيكتب البايتات في الإزاحة المحددة في حساب المخزن المؤقت. يجب أن توقع السلطة.
DeployWithMaxDataLenينشئ برنامجاً جديداً: يشتق عنوان ProgramData، وينشئ حساب ProgramData عبر CPI إلى System Program، ويتحقق وينشر ELF من المخزن المؤقت، ويعيّن حالة حساب البرنامج ويضع علامة عليه كقابل للتنفيذ.
Upgradeيستبدل الشيفرة الثنائية في حساب ProgramData لبرنامج موجود من مخزن مؤقت.
SetAuthorityيغيّر سلطة حساب Buffer أو ProgramData. التعيين إلى None على ProgramData يجعل البرنامج غير قابل للتغيير. لا يمكن تعيين سلطة Buffer إلى None.
SetAuthorityCheckedمثل SetAuthority، لكن يتطلب أيضاً أن توقع السلطة الجديدة على المعاملة.
Closeيغلق حساب buffer أو uninitialized أو ProgramData عن طريق تحويل lamports الخاصة به إلى مستلم. إغلاق ProgramData يكتب أيضاً علامة Closed إلى ذاكرة التخزين المؤقت للبرنامج. لا يمكن إغلاق برنامج تم نشره في slot الحالي.
ExtendProgramCheckedيوسّع تخصيص حساب ProgramData ببايتات إضافية، ويموّل rent الإضافي من الدافع.

التحقق من البرامج

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

للتحقق من حالة التحقق لبرنامج تم نشره، ابحث عن معرف البرنامج الخاص به على مستكشف سولانا، أو استخدم أداة سطر الأوامر Solana Verifiable Build CLI من Ellipsis Labs للتحقق بشكل مستقل من البرامج الموجودة على السلسلة.

برامج التحميل

المحمّلالعنوانقابل للترقيةالوصف
المحمّل الأصليNativeLoader1111111111111111111111111111111فقط عبر ترقية برنامج المدققيمتلك البرامج المدمجة (النظام، التصويت، الرهان) والمحمّلات الأخرى
محمّل BPF (الإصدار 1)BPFLoader1111111111111111111111111111111111لا (إدارة المحمّل معطلة)البرامج القديمة
محمّل BPF (الإصدار 2)BPFLoader2111111111111111111111111111111111لا (إدارة المحمّل معطلة)البرامج القديمة
محمّل BPF القابل للترقيةBPFLoaderUpgradeab1e11111111111111111111111نعم، إذا تم تعيين صلاحية الترقيةيمتلك جميع البرامج المنشورة حديثاً

Is this page helpful?

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

تعديل الصفحة

تدار بواسطة

© 2026 مؤسسة سولانا.
جميع الحقوق محفوظة.
تواصل معنا