دليل ترقية العقود الذكية Rust: ممارسات النقل الآمن على المنصة NEAR

robot
إنشاء الملخص قيد التقدم

دليل ترقية العقود الذكية على Rust

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

!

طرق ترقية العقود الذكية NEAR

كمثال على مشروع StatusMessage، سأقوم بشرح طرق الترقية الشائعة لعقود NEAR.

1. لم يتم تعديل هيكل بيانات العقد

إذا تم تعديل منطق العقد فقط دون تغيير بنية البيانات، يمكن استخدام أمر near deploy لإعادة نشر الكود الجديد مباشرة. يمكن قراءة البيانات في العقد الأصلي بشكل طبيعي.

2. تم تعديل بنية بيانات العقد

إذا تم تعديل بنية بيانات العقد، فإن إعادة نشره مباشرة ستؤدي إلى عدم تطابق بنية البيانات الجديدة مع الحالة القديمة، مما يؤدي إلى حدوث خطأ.

3. استخدام طريقة Migrate للترقية

NEAR يوفر طريقة Migrate لمساعدة في ترقية العقود. أضف طريقة migrate في العقد الجديد:

صدأ #[private] #[init(ignore_state)] pub fn migrate() -> Self { let old_state: OldStatusMessage = env::state_read().expect('failed'); ذاتي { الشعارات: old_state.records, السير الذاتية: LookupMap::new(b'b'.to_vec()), } }

استدعاء طريقة الهجرة عند إعادة النشر:

قريبًا نشر
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm
--initFunction 'ترحيل'
--initArgs '{}'
--accountId statusmessage.blocksec_upgrade.testnet

بهذه الطريقة يمكن نشر العقد الجديد بنجاح ونقل البيانات القديمة.

!

اعتبارات الأمان في ترقية العقود

  1. يجب أن تخضع دالة الترقية للتحكم في الأذونات، وعادة ما يمكن استدعاؤها فقط من قبل المطورين أو DAO.

  2. يُنصح بتعيين مالك العقد كـ DAO، لإدارة مشتركة من خلال الاقتراحات والتصويت.

  3. أضف قبل دالة الهجرة #[init(ignore_state)]، تأكد من عدم تحميل الحالة قبل التنفيذ.

  4. بعد اكتمال النقل، قم بحذف دالة النقل، تأكد من أنه تم استدعاؤها مرة واحدة فقط.

  5. يتم إكمال تهيئة الهيكل البيانات الجديد أثناء عملية النقل.

يمكن أن يوفر آلية ترقية معقولة مرونة وقابلية للصيانة للعقود مع ضمان الأمان.

!

INIT-1.96%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 5
  • مشاركة
تعليق
0/400
DAOTruantvip
· منذ 2 س
هل يجب ترحيل البيانات حسب المزاج؟
شاهد النسخة الأصليةرد0
0xSherlockvip
· 07-25 08:10
أشعر بالارتباك ولا أستطيع الدراسة
شاهد النسخة الأصليةرد0
MEVHunterLuckyvip
· 07-25 08:10
بصراحة ، لا يوجد أي كود متاح ، كيف يمكن التعلم؟
شاهد النسخة الأصليةرد0
blocksnarkvip
· 07-25 08:10
أستاذ NEAR جاء للتعليم
شاهد النسخة الأصليةرد0
rugpull_survivorvip
· 07-25 08:00
دائمًا ما أسمع near ثابتًا
شاهد النسخة الأصليةرد0
  • تثبيت