تفاصيل تحديث العقود الذكية Rust: دليل تحديث الأمان على منصة NEAR

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

طرق ترقية العقود الذكية باستخدام Rust

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

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

إصلاح ثغرات العقود الذكية وإضافة ميزات جديدة غالبًا ما يتطلب إجراء ترقية للعقد. الأسباب الرئيسية هي:

  1. إصلاح ثغرات الأمان
  2. إضافة ميزات جديدة
  3. تحسين أداء العقود الذكية
  4. التكيف مع متطلبات الأعمال الجديدة

!

طرق ترقية العقود الذكية 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()), } }

استدعاء طريقة migrate عند النشر:

قريباً نشر
--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. إكمال تهيئة هيكل البيانات الجديد أثناء النقل

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

!

NEAR1.19%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 4
  • مشاركة
تعليق
0/400
Anon4461vip
· 07-14 08:32
من يستطيع تحمل هذا~
شاهد النسخة الأصليةرد0
rekt_but_not_brokevip
· 07-14 08:22
هل تم ترقية near أيضًا؟
شاهد النسخة الأصليةرد0
LightningPacketLossvip
· 07-14 08:20
قضيت عامين في برمجة rust ثم انتقلت للغوص في web3!
شاهد النسخة الأصليةرد0
MidnightMEVeatervip
· 07-14 08:18
حتى آلة الإعدام لا تجرؤ على خداع الناس لتحقيق الربح، هل سيعود المطورون؟
شاهد النسخة الأصليةرد0
  • تثبيت