قائمة التحقق لدمج الرموز المميزة
اتبع قائمة التحقق هذه عند التفاعل مع الرموز المميزة العشوائية. تأكد من فهم المخاطر المرتبطة بكل عنصر، وتبرير أي استثناءات لهذه القواعد.
للراحة، يمكن تشغيل جميع أدوات سليذر (opens in a new tab) المساعدة مباشرة على عنوان رمزي، مثل:
slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherTokenلاتباع قائمة التحقق هذه، ستحتاج إلى الحصول على هذا الإخراج من سليذر للرمز المميز:
- slither-check-erc [target] [contractName] [اختياري: --erc ERC_NUMBER]- slither [target] --print human-summary- slither [target] --print contract-summary- slither-prop . --contract ContractName # يتطلب الإعداد، واستخدام Echidna و Manticoreاعتبارات عامة
- يخضع العقد لمراجعة أمنية. تجنب التفاعل مع العقود التي تفتقر إلى مراجعة أمنية. تحقق من طول التقييم (المعروف أيضًا باسم "مستوى الجهد")، وسمعة شركة الأمن، وعدد وخطورة النتائج التي تم التوصل إليها.
- لقد تواصلت مع المطورين. قد تحتاج إلى تنبيه فريقهم في حالة وقوع حادث. ابحث عن جهات الاتصال المناسبة على blockchain-security-contacts (opens in a new tab).
- لديهم قائمة بريدية أمنية للإعلانات الهامة. يجب على فريقهم إبلاغ المستخدمين (مثلك!) عند العثور على مشكلات حرجة أو عند حدوث ترقيات.
التوافق مع ERC
يتضمن سليذر أداة مساعدة، slither-check-erc (opens in a new tab)، التي تراجع توافق الرمز المميز مع العديد من معايير ERC ذات الصلة. استخدم slither-check-erc للمراجعة ما يلي:
- دالتا Transfer و transferFrom تُرجعان قيمة منطقية (boolean). العديد من الرموز المميزة لا تُرجع قيمة منطقية في هاتين الدالتين. ونتيجة لذلك، قد تفشل استدعاءاتهما في العقد.
- دوال name و decimals و symbol موجودة إذا تم استخدامها. هذه الدوال اختيارية في معيار ERC20 وقد لا تكون موجودة.
- دالة Decimals تُرجع قيمة uint8. العديد من الرموز المميزة تُرجع قيمة uint256 بشكل غير صحيح. إذا كان الأمر كذلك، فتأكد من أن القيمة المُرجَعة أقل من 255.
- يخفف الرمز المميز من حالة التسابق المعروفة في ERC20 (opens in a new tab). يحتوي معيار ERC20 على حالة تسابق معروفة يجب التخفيف منها لمنع المهاجمين من سرقة الرموز المميزة.
- الرمز المميز ليس رمزًا مميزًا من نوع ERC777 وليس له استدعاء دالة خارجي في transfer و transferFrom. يمكن أن تؤدي الاستدعاءات الخارجية في دوال التحويل إلى عمليات إعادة الدخول.
يتضمن سليذر أداة مساعدة، slither-prop (opens in a new tab)، التي تنشئ اختبارات وحدة وخصائص أمان يمكنها اكتشاف العديد من عيوب ERC الشائعة. استخدم slither-prop لمراجعة ما يلي:
- يجتاز العقد جميع اختبارات الوحدة وخصائص الأمان من slither-prop. قم بتشغيل اختبارات الوحدة التي تم إنشاؤها، ثم تحقق من الخصائص باستخدام إيكيدنا (opens in a new tab) و مانتيكور (opens in a new tab).
أخيرًا، هناك خصائص معينة يصعب تحديدها تلقائيًا. راجع هذه الشروط يدويًا:
- يجب ألا تفرض دالتا Transfer و transferFrom رسومًا. يمكن أن تؤدي الرموز المميزة الانكماشية إلى سلوك غير متوقع.
- تؤخذ الفائدة المحتملة المكتسبة من الرمز المميز في الحسبان. توزع بعض الرموز المميزة الفائدة على حاملي الرموز المميزة. قد تكون هذه الفائدة محتجزة في العقد إذا لم تؤخذ في الحسبان.
تكوين العقد
- يتجنب العقد التعقيد غير الضروري. يجب أن يكون الرمز المميز عقدًا بسيطًا؛ فالرمز المميز الذي يحتوي على نص برمجي معقد يتطلب مستوى أعلى من المراجعة. استخدم طابعة الملخص البشري (human-summary printer) (opens in a new tab) من سليذر لتحديد النص البرمجي المعقد.
- يستخدم العقد SafeMath. تتطلب العقود التي لا تستخدم SafeMath مستوى أعلى من المراجعة. افحص العقد يدويًا للتحقق من استخدام SafeMath.
- يحتوي العقد على عدد قليل فقط من الدوال غير المتعلقة بالرموز المميزة. تزيد الدوال غير المتعلقة بالرموز المميزة من احتمالية وجود مشكلة في العقد. استخدم طابعة ملخص العقد (contract-summary printer) (opens in a new tab) من سليذر لمراجعة النص البرمجي المستخدم في العقد بشكل عام.
- للرمز المميز عنوان واحد فقط. يمكن للرموز المميزة ذات نقاط الدخول المتعددة لتحديثات الرصيد أن تعطل مسك الدفاتر الداخلي بناءً على العنوان (على سبيل المثال، قد لا يعكس
balances[token_address][msg.sender]الرصيد الفعلي).
امتيازات المالك
- الرمز المميز غير قابل للترقية. قد تغير العقود القابلة للترقية قواعدها بمرور الوقت. استخدم طابعة الملخص البشري (human-summary printer) (opens in a new tab) من سليذر لتحديد ما إذا كان العقد قابلاً للترقية.
- للمالك إمكانيات سك محدودة. يمكن للمالكين الخبثاء أو المخترَقين إساءة استخدام إمكانيات السك. استخدم طابعة الملخص البشري (human-summary printer) (opens in a new tab) من سليذر لمراجعة إمكانيات السك، وفكر في مراجعة النص البرمجي يدويًا.
- الرمز المميز غير قابل للإيقاف المؤقت. يمكن للمالكين الخبثاء أو المخترَقين احتجاز العقود التي تعتمد على الرموز المميزة القابلة للإيقاف المؤقت. حدد النص البرمجي القابل للإيقاف المؤقت يدويًا.
- لا يمكن للمالك إدراج العقد في القائمة السوداء. يمكن للمالكين الخبثاء أو المخترَقين احتجاز العقود التي تعتمد على الرموز المميزة التي تحتوي على قائمة سوداء. حدد ميزات القائمة السوداء يدويًا.
- الفريق الذي يقف وراء الرمز المميز معروف ويمكن تحميله المسؤولية عن أي إساءة استخدام. يجب أن تتطلب العقود التي لديها فرق تطوير مجهولة، أو التي تقع في ملاذات قانونية، مستوى أعلى من المراجعة.
ندرة الرمز المميز
تتطلب مراجعة مشكلات ندرة الرموز المميزة مراجعة يدوية. تحقق من هذه الشروط:
- لا يمتلك أي مستخدم معظم المعروض. إذا امتلك عدد قليل من المستخدمين معظم الرموز المميزة، فيمكنهم التأثير على العمليات بناءً على إعادة توزيع الرمز المميز.
- إجمالي المعروض كافٍ. يمكن التلاعب بالرموز المميزة ذات المعروض الإجمالي المنخفض بسهولة.
- توجد الرموز المميزة في أكثر من بضع منصات تداول. إذا كانت جميع الرموز المميزة في منصة تداول واحدة، فإن اختراق منصة التداول يمكن أن يعرض العقد الذي يعتمد على الرمز المميز للخطر.
- يفهم المستخدمون المخاطر المرتبطة بالأموال الكبيرة أو القروض السريعة. يجب أن تأخذ العقود التي تعتمد على رصيد الرمز المميز في الاعتبار بعناية المهاجمين الذين لديهم أموال كبيرة أو الهجمات من خلال القروض السريعة.
- الرمز المميز لا يسمح بالسك السريع (flash minting). يمكن أن يؤدي السك السريع (flash minting) إلى تقلبات كبيرة في الرصيد وإجمالي المعروض، مما يستلزم إجراء فحوصات تجاوز صارمة وشاملة في تشغيل الرمز المميز.
آخر تحديث للصفحة: 21 أكتوبر 2025