قائمة التحقق من أمان العقود الذكية
قائمة التحقق من تطوير العقود الذكية
إليك عملية رفيعة المستوى نوصي باتباعها أثناء كتابة عقودك الذكية.
تحقق من المشكلات الأمنية المعروفة:
- راجع عقودك باستخدام سليذر (opens in a new tab). يحتوي على أكثر من 40 كاشفًا مدمجًا لنقاط الضعف الشائعة. قم بتشغيله عند كل عملية إيداع برمز جديد وتأكد من حصوله على تقرير نظيف (أو استخدم وضع الفرز لتجاهل مشكلات معينة).
- راجع عقودك باستخدام Crytic (opens in a new tab). فهو يتحقق من 50 مشكلة لا يتحقق منها سليذر. يمكن لـ Crytic مساعدة فريقك على البقاء على اطلاع دائم أيضًا، من خلال إظهار المشكلات الأمنية بسهولة في طلبات السحب على GitHub.
ضع في اعتبارك الميزات الخاصة لعقدك:
- هل عقودك قابلة للترقية؟ راجع كود القابلية للترقية بحثًا عن العيوب باستخدام
slither-check-upgradeability(opens in a new tab) أو Crytic (opens in a new tab). لقد وثقنا 17 طريقة يمكن أن تفشل بها الترقيات. - هل تدعي عقودك التوافق مع معايير ERCs؟ تحقق منها باستخدام
slither-check-erc(opens in a new tab). تحدد هذه الأداة على الفور الانحرافات عن ست مواصفات شائعة. - هل تتكامل مع رموز مميزة لجهات خارجية؟ راجع قائمة التحقق من تكامل الرموز المميزة الخاصة بنا قبل الاعتماد على عقود خارجية.
افحص بصريًا ميزات الأمان الهامة في الكود الخاص بك:
- راجع أداة طباعة inheritance-graph (opens in a new tab) الخاصة بـ سليذر. تجنب التظليل غير المقصود ومشكلات التخطيط الخطي C3.
- راجع أداة طباعة function-summary (opens in a new tab) الخاصة بـ سليذر. فهي تبلغ عن رؤية الوظيفة وعناصر التحكم في الوصول.
- راجع أداة طباعة vars-and-auth (opens in a new tab) الخاصة بـ سليذر. فهي تبلغ عن عناصر التحكم في الوصول على متغيرات الحالة.
قم بتوثيق خصائص الأمان الهامة واستخدم مولدات الاختبار الآلية لتقييمها:
- تعلم كيفية توثيق خصائص الأمان للكود الخاص بك. الأمر صعب في البداية، ولكنه النشاط الأكثر أهمية لتحقيق نتيجة جيدة. وهو أيضًا شرط أساسي لاستخدام أي من التقنيات المتقدمة في هذا البرنامج التعليمي.
- حدد خصائص الأمان في Solidity، لاستخدامها مع إيكيدنا (opens in a new tab) ومانتيكور (opens in a new tab). ركز على آلة الحالة الخاصة بك، وعناصر التحكم في الوصول، والعمليات الحسابية، والتفاعلات الخارجية، والتوافق مع المعايير.
- حدد خصائص الأمان باستخدام واجهة برمجة تطبيقات (API) لغة Python الخاصة بـ سليذر. ركز على الوراثة، وتبعيات المتغيرات، وعناصر التحكم في الوصول، والمشكلات الهيكلية الأخرى.
- قم بتشغيل اختبارات الخصائص الخاصة بك عند كل عملية إيداع باستخدام Crytic (opens in a new tab). يمكن لـ Crytic استهلاك وتقييم اختبارات خصائص الأمان بحيث يمكن للجميع في فريقك رؤية نجاحها بسهولة على GitHub. يمكن للاختبارات الفاشلة أن تمنع عمليات الإيداع.
أخيرًا، كن على دراية بالمشكلات التي لا يمكن للأدوات الآلية العثور عليها بسهولة:
- الافتقار إلى الخصوصية: يمكن لأي شخص آخر رؤية معاملاتك أثناء وجودها في قائمة الانتظار في المجمع
- معاملات الاستباق (Front running)
- عمليات التشفير
- التفاعلات المحفوفة بالمخاطر مع مكونات التمويل اللامركزي (DeFi) الخارجية
اطلب المساعدة
تُعقد الساعات المكتبية لـ إيثيريوم (opens in a new tab) بعد ظهر كل يوم ثلاثاء. تمثل هذه الجلسات الفردية التي تبلغ مدتها ساعة واحدة فرصة لطرح أي أسئلة لديك حول الأمان، واستكشاف الأخطاء وإصلاحها باستخدام أدواتنا، والحصول على تعليقات من الخبراء حول نهجك الحالي. سنساعدك في العمل من خلال هذا الدليل.
انضم إلى Slack الخاص بنا: Empire Hacking (opens in a new tab). نحن متاحون دائمًا في قنوات #crytic و #ethereum إذا كان لديك أي أسئلة.