تخطٍ إلى المحتوى الرئيسي

قائمة التحقق من أمان العقود الذكية

العقود الذكية
الأمان
Solidity
المستوى المتوسط
Trailofbits
7 سبتمبر 2020
3 دقيقة قراءة

قائمة التحقق من تطوير العقود الذكية

إليك عملية رفيعة المستوى نوصي باتباعها أثناء كتابة عقودك الذكية.

تحقق من المشكلات الأمنية المعروفة:

  • راجع عقودك باستخدام Slither (opens in a new tab). يحتوي على أكثر من 40 كاشفًا مدمجًا لنقاط الضعف الشائعة. قم بتشغيله عند كل عملية إيداع (check-in) برمز جديد وتأكد من حصوله على تقرير نظيف (أو استخدم وضع الفرز لتجاهل مشكلات معينة).
  • راجع عقودك باستخدام Crytic (opens in a new tab). يتحقق من 50 مشكلة لا يكتشفها Slither. يمكن لـ Crytic مساعدة فريقك على البقاء على اطلاع دائم أيضًا، من خلال إبراز المشكلات الأمنية بسهولة في طلبات السحب (Pull Requests) على GitHub.

ضع في اعتبارك الميزات الخاصة لعقدك:

افحص الميزات الأمنية الحرجة في الكود الخاص بك بصريًا:

  • راجع طابعة inheritance-graph (opens in a new tab) الخاصة بـ Slither. تجنب التظليل غير المقصود (shadowing) ومشكلات التخطيط الخطي C3.
  • راجع طابعة function-summary (opens in a new tab) الخاصة بـ Slither. تُبلغ عن رؤية الوظائف (function visibility) وعناصر التحكم في الوصول.
  • راجع طابعة vars-and-auth (opens in a new tab) الخاصة بـ Slither. تُبلغ عن عناصر التحكم في الوصول على متغيرات حالة (state variables).

وثّق الخصائص الأمنية الحرجة واستخدم مولدات الاختبار الآلية لتقييمها:

  • تعلم كيفية توثيق الخصائص الأمنية للكود الخاص بك. الأمر صعب في البداية، ولكنه النشاط الوحيد الأكثر أهمية لتحقيق نتيجة جيدة. وهو أيضًا شرط أساسي لاستخدام أي من التقنيات المتقدمة في هذا البرنامج التعليمي.
  • حدد الخصائص الأمنية في Solidity، لاستخدامها مع Echidna (opens in a new tab) و Manticore (opens in a new tab). ركز على آلة حالة (state machine) الخاصة بك، وعناصر التحكم في الوصول، والعمليات الحسابية، والتفاعلات الخارجية، والتوافق مع المعايير.
  • حدد الخصائص الأمنية باستخدام واجهة برمجة تطبيقات Python الخاصة بـ Slither. ركز على الوراثة، وتبعيات المتغيرات، وعناصر التحكم في الوصول، والمشكلات الهيكلية الأخرى.
  • قم بتشغيل اختبارات الخصائص الخاصة بك عند كل عملية إيداع (commit) باستخدام 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 إذا كان لديك أي أسئلة.

آخر تحديث للصفحة: 7 فبراير 2025

هل كانت تعليمات الاستخدام هذه مفيدة؟