تعتبر لغة Move كلغة عقود ذكية من الجيل الجديد، حيث تتميز بالأمان كخاصية رئيسية. ستتناول هذه المقالة قضايا الأمان في لغة Move من ثلاثة جوانب: خصائص اللغة وآلية التشغيل وأدوات التحقق.
1. الميزات الأمنية للغة Move
تخلت لغة Move عن المنطق غير الخطي، ولا تدعم التوزيع الديناميكي أو الاستدعاءات الخارجية التكرارية، بل تستخدم مفاهيم مثل البرمجة العامة، والتخزين العالمي، والموارد لتحقيق نمط برمجة بديل. فيما يلي مثال بسيط على تنفيذ أصول الرموز:
تحرك
الوحدة 0x1::TestCoin {
استخدم 0x1::signer;
const ADMIN: العنوان = @0x1;
هيكل Coin يحتوي على مفتاح، يخزن {
القيمة: u64
}
هيكل المعلومات يحتوي على مفتاح {
total_supply: U64
}
// إجمالي العرض يساوي مجموع قيم جميع العملات
غير متغير للجميع addr: عنوان حيث يوجد<coin>(addr):
(ADMIN).total_supply العالمية<info>== sum(select (global <coin>Coin.value (addr))).
initialize(account المرح العام: &signer) {
assert!(signer::address_of(account) == ADMIN, 0);
نقل إلى ( الحساب، معلومات { إجمالي العرض: 0 } );
}
mint(account المرح العام: & الموقع, المبلغ: u64): عملة {
assert!(signer::address_of(account) == ADMIN, 0);
دع العرض = اقتراض_global_mut\u003cinfo\u003e(ADMIN);
supply.total_supply = supply.total_supply + المبلغ ؛
عملة { القيمة: المبلغ }
}
value_mut(coin المرح العام: & Coin): &MUT U64 {
&MUT coin.value
}
}
آليتان أمانيتان هامتان في لغة Move:
a) فحص الثوابت: تعريف الحفاظ على الحالة من خلال لغة الاختزال.
b) محقق بايت كود: تنفيذ متطلبات الأمان والنوع والخطية، لمنع العمليات غير القانونية.
2. آلية تشغيل Move
تعمل برامج Move في الآلة الافتراضية، ولا يمكنها الوصول مباشرة إلى ذاكرة النظام. تتكون حالة البرنامج من مكدس الاستدعاء، والذاكرة، والمتغيرات العالمية، ومصفوفات العمليات.
يعمل MoveVM على فصل تخزين البيانات ودفتر الاستدعاءات، مما يزيد من الأمان وكفاءة التنفيذ. التخزين المستقل للموارد والتحكم الصارم في الوصول يتجنب بشكل فعال بعض الثغرات الشائعة.
3. نقل الموثق
Move Prover هو أداة للتحقق الرسمي، تستخدم خوارزمية التحقق الاستنتاجي للتحقق من صحة البرامج. هيكلها كما يلي:
استلام ملفات Move والمواصفات
تجميع إلى بايت كود ونموذج كائنات المدقق
تحويل إلى لغة Boogie المتوسطة
إنشاء شروط التحقق
استخدم محلل Z3 للتحقق
إخراج تقرير التشخيص
تُستخدم لغة مواصفات الحركة لوصف معايير سلوك البرنامج، ويمكن كتابتها بشكل مستقل عن كود الأعمال.
4. ملخص
تأخذ لغة Move في الاعتبار جوانب الأمان بشكل شامل من حيث خصائص اللغة، وتنفيذ الآلة الافتراضية، وأدوات الأمان. يمكنها تجنب بعض الثغرات الشائعة بفعالية، ولكن لا يزال يتعين الانتباه إلى مشكلات مثل التحقق من الهوية والمنطق. يُنصح المطورون باستخدام تدقيق أمني من طرف ثالث، وتسليم التحقق من المعايير إلى شركات الأمان المتخصصة.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
استكشاف أمان لغة Move: تحليل شامل للخصائص والآليات وأدوات التحقق
مقدمة
تعتبر لغة Move كلغة عقود ذكية من الجيل الجديد، حيث تتميز بالأمان كخاصية رئيسية. ستتناول هذه المقالة قضايا الأمان في لغة Move من ثلاثة جوانب: خصائص اللغة وآلية التشغيل وأدوات التحقق.
1. الميزات الأمنية للغة Move
تخلت لغة Move عن المنطق غير الخطي، ولا تدعم التوزيع الديناميكي أو الاستدعاءات الخارجية التكرارية، بل تستخدم مفاهيم مثل البرمجة العامة، والتخزين العالمي، والموارد لتحقيق نمط برمجة بديل. فيما يلي مثال بسيط على تنفيذ أصول الرموز:
تحرك الوحدة 0x1::TestCoin { استخدم 0x1::signer;
}
آليتان أمانيتان هامتان في لغة Move:
a) فحص الثوابت: تعريف الحفاظ على الحالة من خلال لغة الاختزال.
b) محقق بايت كود: تنفيذ متطلبات الأمان والنوع والخطية، لمنع العمليات غير القانونية.
2. آلية تشغيل Move
تعمل برامج Move في الآلة الافتراضية، ولا يمكنها الوصول مباشرة إلى ذاكرة النظام. تتكون حالة البرنامج من مكدس الاستدعاء، والذاكرة، والمتغيرات العالمية، ومصفوفات العمليات.
يعمل MoveVM على فصل تخزين البيانات ودفتر الاستدعاءات، مما يزيد من الأمان وكفاءة التنفيذ. التخزين المستقل للموارد والتحكم الصارم في الوصول يتجنب بشكل فعال بعض الثغرات الشائعة.
3. نقل الموثق
Move Prover هو أداة للتحقق الرسمي، تستخدم خوارزمية التحقق الاستنتاجي للتحقق من صحة البرامج. هيكلها كما يلي:
تُستخدم لغة مواصفات الحركة لوصف معايير سلوك البرنامج، ويمكن كتابتها بشكل مستقل عن كود الأعمال.
4. ملخص
تأخذ لغة Move في الاعتبار جوانب الأمان بشكل شامل من حيث خصائص اللغة، وتنفيذ الآلة الافتراضية، وأدوات الأمان. يمكنها تجنب بعض الثغرات الشائعة بفعالية، ولكن لا يزال يتعين الانتباه إلى مشكلات مثل التحقق من الهوية والمنطق. يُنصح المطورون باستخدام تدقيق أمني من طرف ثالث، وتسليم التحقق من المعايير إلى شركات الأمان المتخصصة.