ترقية العقود الذكية Rust: ضمان الأمان والقابلية للتوسع

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

Rust العقود الذكية养成日记(9): 合约升级

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

1. ضرورة ترقية العقود

العقود الذكية كبرنامج، لا مفر من وجود عيوب. يتطلب إصلاح الثغرات وإضافة ميزات جديدة تنفيذ ترقية العقد.

2. طرق الترقية الشائعة لعقود Solidity

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

!

3. طريقة ترقية عقد NEAR

نأخذ مشروع StatusMessage كمثال لتقديم طريقة ترقية عقود NEAR:

3.1 هيكل بيانات العقد لم يتغير

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

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

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

!

3.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()), } }

يمكن إكمال ترحيل البيانات عن طريق استدعاء طريقة migrate عند النشر.

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

  • ترقية التحكم في الصلاحيات، عادةً ما يمكن ترقيتها فقط من قبل المطورين أو DAO
  • يوصى بتعيين مالك العقد كـ DAO ، وإدارته من خلال الاقتراحات والتصويت.
  • أضف #[init(ignore_state)] قبل دالة النقل
  • حذف دالة النقل بعد اكتمال النقل
  • تم إكمال تهيئة الهيكل البياني الجديد عند النقل

ترقية العقود هي وسيلة هامة لضمان أمان العقود وتكرار الوظائف، وتحتاج إلى تصميم وتنفيذ حذر.

!

INIT-4.28%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 4
  • مشاركة
تعليق
0/400
SandwichTradervip
· منذ 19 س
هل ستستمر في نسخ الواجبات؟ لقد تم تغيير العقد وبدأت المنافسة مرة أخرى.
شاهد النسخة الأصليةرد0
BoredRiceBallvip
· منذ 19 س
موثوق جربه قبل استخدامه
شاهد النسخة الأصليةرد0
SigmaValidatorvip
· منذ 19 س
هناك من هاجم عقدي الذكي!
شاهد النسخة الأصليةرد0
BoredApeResistancevip
· منذ 19 س
أصبح للوكيل طريقة جديدة للعب بها
شاهد النسخة الأصليةرد0
  • تثبيت