تعتبر لغة 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 أمان الشفرة من خلال تقليل المتغيرات الثابتة ومحقق بايت الكود:
متغير ثابت: يستخدم للتحقق من أن مجموع قيم جميع كائنات Coin في النظام يجب أن يساوي total_supply في Info.
مدقق بايت كود: تحقق من الأنواع الإلزامية والمنطق الخطي، لمنع إنشاء أو نسخ أو تدمير الموارد بشكل غير قانوني.
2. آلية تشغيل Move
تعمل برامج Move في جهاز افتراضي ولها الميزات التالية:
لا يمكن الوصول إلى ذاكرة النظام أثناء التشغيل، لضمان التشغيل الآمن في بيئات غير موثوقة
تنفيذ تعليمات بايت كود بواسطة مفسر قائم على المكدس، سهل التنفيذ والتحكم
فصل تخزين البيانات واستدعاء المكدس، مما يزيد من الأمان وكفاءة التنفيذ
يمكن نقل الموارد بشكل مدمر فقط، ولا يمكن نسخها
تتكون حالة تشغيل برنامج Move من رباعية ⟨C، M، G، S⟩:
C: مكدس الاستدعاءات
م: الذاكرة ( كومة )
G: المتغيرات العالمية ( مكدس )
S:عامل
هذا التصميم يفصل بين حالة المستخدم ومنطق البرنامج، مما يزيد من الأمان وكفاءة التنفيذ المتزامن.
3. نقل الإثبات
Move Prover هو أداة للتحقق الرسمي تُستخدم لضمان صحة العقود الذكية. تتلخص خطوات عمله كما يلي:
استلام ملفات Move والمواصفات كمدخلات
استخراج المواصفات وتجميعها إلى بايت كود
تحويل إلى نموذج كائن المدقق
ترجمة إلى لغة Boogie الوسيطة
إنشاء شروط التحقق
استخدام موصل Z3 للتحقق من الصيغة
إنشاء تقرير تشخيصي
تستخدم Move Prover لغة مواصفات Move لوصف مواصفات البرنامج. هذه اللغة هي مجموعة فرعية من Move، ويمكن كتابة المواصفات بشكل مستقل عن كود الأعمال.
ملخص
تعتبر لغة Move أن الاعتبارات الأمنية شاملة من حيث خصائص اللغة، وتنفيذ الآلة الافتراضية، وأدوات الأمان. يمكنها تجنب الثغرات الشائعة مثل إعادة الدخول، والتجاوز، ولكن لا يزال من الضروري الانتباه إلى مسائل مثل التحقق من الهوية، والمنطق. يُنصح المطورون باستخدام خدمات تدقيق من طرف ثالث، وتكليف شركات الأمان بإعداد المعايير، لزيادة أمان العقود.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 10
أعجبني
10
6
إعادة النشر
مشاركة
تعليق
0/400
gaslight_gasfeez
· 08-19 03:55
تحركت، هل وصلت إلى السماء؟ في النهاية، ألا يعتمد الأمر على الاختبار؟
شاهد النسخة الأصليةرد0
GhostChainLoyalist
· 08-18 16:10
هذه الحركة قوية حقًا!
شاهد النسخة الأصليةرد0
LiquidityNinja
· 08-16 06:53
آلية نوع الموارد لديها شيء مميز بالفعل!
شاهد النسخة الأصليةرد0
ProofOfNothing
· 08-16 06:50
هل مات اللاعبون القدامى في move؟
شاهد النسخة الأصليةرد0
JustAnotherWallet
· 08-16 06:49
حركة جيدة جداً
شاهد النسخة الأصليةرد0
rekt_but_not_broke
· 08-16 06:44
مرة أخرى، إنها مجموعة من الكلام الفارغ، هل تم قياس الأداء الفعلي؟
تحليل أمان لغة Move: تحليل شامل للميزات والآليات وأدوات التحقق
تحليل أمان لغة Move
تعتبر لغة Move كلغة عقود ذكية من الجيل الجديد، وقد أخذت في الاعتبار في تصميمها من البداية قضايا الأمان المتعلقة بالبلوكشين والعقود الذكية. ستقوم هذه المقالة بتحليل أمان لغة Move من ثلاثة جوانب: خصائص اللغة، وآلية التشغيل، وأدوات التحقق.
1. الخصائص الأمنية للغة Move
تتميز لغة Move بالخصائص الأمنية الرئيسية التالية:
إليك مثال بسيط على عقد Move:
تحرك الوحدة 0x1::TestCoin { استخدم 0x1::signer;
}
تضمن Move أمان الشفرة من خلال تقليل المتغيرات الثابتة ومحقق بايت الكود:
متغير ثابت: يستخدم للتحقق من أن مجموع قيم جميع كائنات Coin في النظام يجب أن يساوي total_supply في Info.
مدقق بايت كود: تحقق من الأنواع الإلزامية والمنطق الخطي، لمنع إنشاء أو نسخ أو تدمير الموارد بشكل غير قانوني.
2. آلية تشغيل Move
تعمل برامج Move في جهاز افتراضي ولها الميزات التالية:
تتكون حالة تشغيل برنامج Move من رباعية ⟨C، M، G، S⟩:
هذا التصميم يفصل بين حالة المستخدم ومنطق البرنامج، مما يزيد من الأمان وكفاءة التنفيذ المتزامن.
3. نقل الإثبات
Move Prover هو أداة للتحقق الرسمي تُستخدم لضمان صحة العقود الذكية. تتلخص خطوات عمله كما يلي:
تستخدم Move Prover لغة مواصفات Move لوصف مواصفات البرنامج. هذه اللغة هي مجموعة فرعية من Move، ويمكن كتابة المواصفات بشكل مستقل عن كود الأعمال.
ملخص
تعتبر لغة Move أن الاعتبارات الأمنية شاملة من حيث خصائص اللغة، وتنفيذ الآلة الافتراضية، وأدوات الأمان. يمكنها تجنب الثغرات الشائعة مثل إعادة الدخول، والتجاوز، ولكن لا يزال من الضروري الانتباه إلى مسائل مثل التحقق من الهوية، والمنطق. يُنصح المطورون باستخدام خدمات تدقيق من طرف ثالث، وتكليف شركات الأمان بإعداد المعايير، لزيادة أمان العقود.