كيفية تثبيت Mythril ، أداة أمان العقد الذكية - البرنامج التعليمي

العقود الذكية هي برامج ذاتية التنفيذ ومخزنة على سلسلة Ethereum blockchain ، مما يجعلها موزعة وجديرة بالثقة. إنها تنظم معاملات العملات الافتراضية ، مثل إرسال أو استلام الرموز المميزة لـ Ether أو ERC20.

مثل جميع برامج الكمبيوتر ، تتم كتابة العقود الذكية بلغات البرمجة. من بين اللغات الشائعة الأخرى الموجهة نحو التعاقد ، Solidity ، هي اللغة الأساسية. مع نمو مجتمعات Ethereum و Solidity ، يعمل المطورون على تحسين دلالات العقود الذكية باستمرار. تم تنفيذ مكتبة "SafeMath" الأكثر شهرة ، والتي تتعامل مع تجاوز الحد الأدنى / تجاوز السعة ، ومشكلات اقتطاع الأرقام ، في العديد من العقود الذكية.

هناك أخطاء دلالات وممارسات سيئة يمكن اكتشافها بواسطة أدوات تدقيق التعليمات البرمجية الآلية ، بما في ذلك SmartCheck و Securify و Mythril و Manticore و Porosity و Oyente.

في هذه المقالة ، سوف نقدم لك كيفية تثبيت Mythril ونشره واستخدامه.

Mythril

يستخدم Mythril التحليل المتسارع والتحليل الملوث وفحص تدفق التحكم للكشف عن مجموعة متنوعة من الثغرات الأمنية. يتوفر برنامج التثبيت المفصل لنظام التشغيل OSX و Window و Ubuntu على Github.

في هذه المقالة ، سنعرض لك كيفية تثبيت Mythril على OSX.

الخطوة 1: إعداد البيئة ، البيرة ، Python و Python3 (تخطي هذه الخطوة إذا كنت قد قمت بالفعل بتثبيتها)

1). تثبيت HomeBrew:

/ usr / bin / ruby ​​-e "$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)

2). تثبيت بايثون:

الشراب تثبيت بيثون

ثم قم بتشغيل Python لمعرفة ما إذا كان يمكن إطلاقها بشكل صحيح:

Ctrl + D للخروج من وضع سطر أوامر Python.

3). تثبيت بيثون 3:

الشراب تثبيت Python3

ثم قم بتشغيل Python3 لمعرفة ما إذا كان يمكن إطلاقها بشكل صحيح:

Ctrl + D للخروج من وضع سطر أوامر Python3.

الخطوة 2: تثبيت Mythril

الشراب التحديث
الشراب الترقية
الشراب الصنبور ethereum / ethereum
الشراب تثبيت leveldb
الشراب تثبيت صلابة
pip3 تثبيت ميثريل

الخطوة 3: تحقق مما إذا كان Mythril يعمل بشكل صحيح

أسطورة -x your_solidity_script.sol

إذا تلقيت رسالة خطأ مثل أدناه:

ImportError: dlopen (/usr/local/lib/python3.6/site-packages/coincurve/_libsecp256k1.cpython-36m-darwin.so، 2): لم يتم تحميل المكتبة: / usr / local / opt / gmp / lib / libgmp .10.dylib

حاول إعادة تثبيت روبي هذا التعليمات عبر الإنترنت.

عند تشغيل brew reinstall gmp rvm ruby ​​، ​​قد تواجه رسالة خطأ تفيد بعدم العثور على rvm ، لكن هذا جيد.

بعد إعادة تثبيت روبي ، أعد تشغيل:

أسطورة -x your_solidity_script.sol

تحقق مما إذا كنت تحصل على الإخراج مثل التالي:

أو

ثم مبروك! تم تحميل Mythril بنجاح وكنت على استعداد لإجراء بعض عمليات التحقق من التعقل الأساسية لعقودك الذكية!

التكوينات ، السرعة مقابل التغطية:

يمكن التحكم في عمق العودية الأقصى لمحرك التنفيذ الرمزي باستخدام وسيطة - أقصى عمق. القيمة الافتراضية هي 12. خفض هذه القيمة يقلل من وقت التحليل وكذلك تغطية / عدد الحالات المستكشفة. على سبيل المثال:

أسطورة -x your_solidity_script.sol - أقصى عمق 8

استنتاج

Mythril يدعم إخراج تنسيق Markdown و JSON ، مما يجعل ناتجه مدمجًا بسهولة في تقارير التدقيق الخاصة بك. يرجى ألا تنسى أن تدخل يدويًا في تقرير Mythril الذي تم إنشاؤه أولاً لتصفية التنبيهات الخاطئة ، على سبيل المثال ، "أخطاء الاستيراد" ، والتي يمكن إصلاحها عن طريق إعادة ضبط مسار الحزمة الخاصة بك. من الإنذارات الخاطئة الشائعة الأخرى هي Integer Overflow / Underflow ، والتي يمكن تشغيلها بواسطة أي عملية أساسية (+ ، - ، *). من المثير للدهشة ، يمكن أن تحدث إنذارات خاطئة في Mythril Integer Overflow / Underflow في مكتبة "SafeMath".

على الرغم من أن أدوات التدقيق التلقائي تلعب دورًا مهمًا في مراجعة التعليمات البرمجية كبيرة الحجم ، إلا أنه يجب استخدامها فقط كاختبار أولي. يتطلب تقرير التدقيق في العقود الذكية المهنية إجراء مراجعات يدوية من خبراء الأمن الذين لديهم معرفة قوية ببيئة الأثير.

بقلم يوان هي ، باحث الأمن من HaloBlock.io