شرح ترقية العقود الذكية بلغة Rust: أفضل الممارسات من إثيريوم إلى NEAR

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

طرق ترقية العقود الذكية بلغة Rust

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

طرق ترقية العقود الذكية على الإيثيريوم

العقود الذكية على إيثيريوم تتمتع بالثبات، ولا يمكن تعديلها مباشرة بعد نشرها. عادةً ما يتم استخدام الطرق التالية للتحديث:

  1. نشر عقد جديد، وتعديل عنوان العقد في DApp. العيب هو الحاجة إلى نقل بيانات الحالة من العقد القديم.

  2. فصل البيانات والمنطق. يتم تخزين البيانات في العقد الحالة، بينما يتم تنفيذ المنطق في عقد آخر. عند الترقية، يكفي تحديث العقد المنطقي.

  3. استخدام العقود الذكية. تقوم العقود الذكية بتخزين البيانات واستدعاء العقد المنطقي عبر deleGatecall، وعند الترقية، يتعين تحديث عنوان العقد المنطقي فقط.

!

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

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

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

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

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

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

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

NEAR توفر طريقة Migrate للمساعدة في الترقية:

  1. إضافة طريقة migrate في العقد الجديد
  2. استدعاء طريقة migrate أثناء النشر لنقل البيانات
  3. بعد الانتهاء من النقل، يمكن استخدام وظيفة العقد الجديد بشكل طبيعي

!

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

  1. التحكم في الأذونات - يجب أن تكون وظيفة الترقية وظيفة only owner
  2. يُوصى بتعيين المالك كـ DAO لتجنب مخاطر المركزية
  3. استخدم #[init(ignore_state)] لضمان عدم تحميل الحالة قبل تنفيذ الهجرة
  4. بعد الترحيل، احذف دالة الترحيل لتجنب الاستدعاء المتكرر
  5. إكمال التهيئة لهياكل البيانات الجديدة أثناء الهجرة

من خلال التصميم المعقول لخطة الترقية، يمكن تحقيق قابلية الترقية للعقود مع ضمان الأمان، مما يزيد من القابلية للصيانة على المدى الطويل للمشاريع.

!

ETH6.4%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • مشاركة
تعليق
0/400
FlatlineTradervip
· منذ 5 س
الثغرة هي المحفظة...
شاهد النسخة الأصليةرد0
Deconstructionistvip
· منذ 11 س
من المستحسن إضافة إعادة تحميل ساخنة
شاهد النسخة الأصليةرد0
rekt_but_not_brokevip
· منذ 11 س
العقود الذكية原来这么坑啊
شاهد النسخة الأصليةرد0
LiquidityWizardvip
· منذ 12 س
نظريًا، أنماط الوكيل هي مجرد تحولات حالة مغطاة بالسكر مع زيادة في غاز بنسبة 73.4%... أشعر بالأسف
شاهد النسخة الأصليةرد0
SchrödingersNodevip
· منذ 12 س
مرة أخرى هي العملية القديمة لتغيير العنوان
شاهد النسخة الأصليةرد0
NestedFoxvip
· منذ 12 س
منطقة rust هذه سيئة للغاية
شاهد النسخة الأصليةرد0
  • تثبيت