تحليل أمان لغة Move: تحليل شامل للميزات والآليات وأدوات التحقق

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

تحليل أمان لغة Move

تعتبر لغة Move كلغة عقود ذكية من الجيل الجديد، وقد أخذت في الاعتبار في تصميمها من البداية قضايا الأمان المتعلقة بالبلوكشين والعقود الذكية. ستقوم هذه المقالة بتحليل أمان لغة Move من ثلاثة جوانب: خصائص اللغة، وآلية التشغيل، وأدوات التحقق.

1. الخصائص الأمنية للغة Move

تتميز لغة Move بالخصائص الأمنية الرئيسية التالية:

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

إليك مثال بسيط على عقد Move:

تحرك الوحدة 0x1::TestCoin { استخدم 0x1::signer;

const ADMIN: العنوان = @0x1;

هيكل العملة لديه مفتاح {
    القيمة: u64
}

الهيكل Info يحتوي على المفتاح {
    إجمالي العرض: u64  
}

ثابت لكل عنوان: عنوان حيث توجد <coin>(addr):
    (ADMIN).total_supply > العالمية<info>= العالمية<coin>(addr).value;

initialize(account المرح العام: &signer) {
    assert!(signer::address_of(account) == ADMIN, 1);
    نقل إلى(حساب، معلومات { إجمالي العرض: 0 })؛
}

mint(account المرح العام: & الموقع, المبلغ: u64): عملة {
    assert!(signer::address_of(account) == ADMIN, 1);
    دع العرض = اقترض_global_mut<info>(ADMIN);
    supply.total_supply = supply.total_supply + المبلغ ؛
    عملة { القيمة: المبلغ }
}

value_mut(coin المرح العام: & Coin): &MUT U64 {
    &MUT coin.value
}

}

تضمن Move أمان الشفرة من خلال تقليل المتغيرات الثابتة ومحقق بايت الكود:

  1. متغير ثابت: يستخدم للتحقق من أن مجموع قيم جميع كائنات Coin في النظام يجب أن يساوي total_supply في Info.

  2. مدقق بايت كود: تحقق من الأنواع الإلزامية والمنطق الخطي، لمنع إنشاء أو نسخ أو تدمير الموارد بشكل غير قانوني.

تحليل أمان Move: تغيير قواعد اللعبة في لغة العقود الذكية

2. آلية تشغيل Move

تعمل برامج Move في جهاز افتراضي ولها الميزات التالية:

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

تتكون حالة تشغيل برنامج Move من رباعية ⟨C، M، G، S⟩:

  • C: مكدس الاستدعاءات
  • م: الذاكرة ( كومة )
  • G: المتغيرات العالمية ( مكدس )
  • S:عامل

هذا التصميم يفصل بين حالة المستخدم ومنطق البرنامج، مما يزيد من الأمان وكفاءة التنفيذ المتزامن.

تحليل أمان Move: لغة العقود الذكية المغير لقواعد اللعبة

3. نقل الإثبات

Move Prover هو أداة للتحقق الرسمي تُستخدم لضمان صحة العقود الذكية. تتلخص خطوات عمله كما يلي:

  1. استلام ملفات Move والمواصفات كمدخلات
  2. استخراج المواصفات وتجميعها إلى بايت كود
  3. تحويل إلى نموذج كائن المدقق
  4. ترجمة إلى لغة Boogie الوسيطة
  5. إنشاء شروط التحقق
  6. استخدام موصل Z3 للتحقق من الصيغة
  7. إنشاء تقرير تشخيصي

تستخدم Move Prover لغة مواصفات Move لوصف مواصفات البرنامج. هذه اللغة هي مجموعة فرعية من Move، ويمكن كتابة المواصفات بشكل مستقل عن كود الأعمال.

تحليل أمان Move: اللغة الذكية للعقود الذكية المغير للعبة

ملخص

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

تحليل أمان Move: تغيير قواعد اللعبة في لغات العقود الذكية

MOVE5.15%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • إعادة النشر
  • مشاركة
تعليق
0/400
gaslight_gasfeezvip
· 08-19 03:55
تحركت، هل وصلت إلى السماء؟ في النهاية، ألا يعتمد الأمر على الاختبار؟
شاهد النسخة الأصليةرد0
GhostChainLoyalistvip
· 08-18 16:10
هذه الحركة قوية حقًا!
شاهد النسخة الأصليةرد0
LiquidityNinjavip
· 08-16 06:53
آلية نوع الموارد لديها شيء مميز بالفعل!
شاهد النسخة الأصليةرد0
ProofOfNothingvip
· 08-16 06:50
هل مات اللاعبون القدامى في move؟
شاهد النسخة الأصليةرد0
JustAnotherWalletvip
· 08-16 06:49
حركة جيدة جداً
شاهد النسخة الأصليةرد0
rekt_but_not_brokevip
· 08-16 06:44
مرة أخرى، إنها مجموعة من الكلام الفارغ، هل تم قياس الأداء الفعلي؟
شاهد النسخة الأصليةرد0
  • تثبيت