---
title: "قائمة التحقق من دمج الرموز المميزة"
description: "قائمة تحقق بالأشياء التي يجب مراعاتها عند التفاعل مع الرموز المميزة"
author: "تريل أوف بيتس"
lang: ar
tags: ["Solidity", "العقود الذكية", "الأمان", "الرموز المميزة"]
skill: intermediate
breadcrumb: "دمج الرموز المميزة"
published: 2020-08-13
source: Building secure contracts
sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/token_integration.md
---

اتبع قائمة التحقق هذه عند التفاعل مع أي رموز مميزة عشوائية. تأكد من فهمك للمخاطر المرتبطة بكل عنصر، وبرر أي استثناءات لهذه القواعد.

للراحة، يمكن تشغيل جميع [أدوات](https://github.com/crytic/slither#tools) سليذر مباشرة على عنوان الرمز المميز، مثل:

[برنامج تعليمي حول استخدام سليذر](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)

```bash
slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherToken
```

لاتباع قائمة التحقق هذه، ستحتاج إلى الحصول على هذه المخرجات من سليذر للرمز المميز:

```bash
- slither-check-erc [target] [contractName] [optional: --erc ERC_NUMBER]
- slither [target] --print human-summary
- slither [target] --print contract-summary
- slither-prop . --contract ContractName # يتطلب التكوين، واستخدام إيكيدنا ومانتيكور
```

## اعتبارات عامة {#general-considerations}

- **يخضع العقد لمراجعة أمنية.** تجنب التفاعل مع العقود التي تفتقر إلى مراجعة أمنية. تحقق من مدة التقييم (المعروفة أيضًا باسم "مستوى الجهد")، وسمعة الشركة الأمنية، وعدد النتائج وخطورتها.
- **لقد تواصلت مع المطورين.** قد تحتاج إلى تنبيه فريقهم إلى وقوع حادث. ابحث عن جهات الاتصال المناسبة في [جهات اتصال أمان سلسلة الكتل](https://github.com/crytic/blockchain-security-contacts).
- **لديهم قائمة بريدية أمنية للإعلانات الهامة.** يجب على فريقهم إبلاغ المستخدمين (مثلك!) عند العثور على مشكلات حرجة أو عند حدوث ترقيات.

## التوافق مع <span dir="ltr">ERC</span> {#erc-conformity}

يتضمن سليذر أداة، [<span dir="ltr">slither-check-erc</span>](https://github.com/crytic/slither/wiki/ERC-Conformance)، والتي تراجع توافق الرمز المميز مع العديد من معايير <span dir="ltr">ERC</span> ذات الصلة. استخدم <span dir="ltr">slither-check-erc</span> لمراجعة ما يلي:

- **تُرجع دالتي <span dir="ltr">transfer</span> و <span dir="ltr">transferFrom</span> قيمة منطقية (boolean).** العديد من الرموز المميزة لا تُرجع قيمة منطقية في هذه الدوال. ونتيجة لذلك، قد تفشل استدعاءاتها في العقد.
- **دوال <span dir="ltr">name</span> و <span dir="ltr">decimals</span> و <span dir="ltr">symbol</span> موجودة إذا تم استخدامها.** هذه الدوال اختيارية في معيار <span dir="ltr">ERC-20</span> وقد لا تكون موجودة.
- **تُرجع دالة <span dir="ltr">decimals</span> نوع <span dir="ltr">uint8</span>.** العديد من الرموز المميزة تُرجع بشكل غير صحيح نوع <span dir="ltr">uint256</span>. إذا كان الأمر كذلك، فتأكد من أن القيمة المُرجعة أقل من <span dir="ltr">255</span>.
- **يخفف الرمز المميز من [حالة السباق المعروفة في <span dir="ltr">ERC-20</span>](https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729).** يحتوي معيار <span dir="ltr">ERC-20</span> على حالة سباق (race condition) معروفة يجب التخفيف منها لمنع المهاجمين من سرقة الرموز المميزة.
- **الرمز المميز ليس من نوع <span dir="ltr">ERC-777</span> ولا يحتوي على استدعاء دالة خارجية في <span dir="ltr">transfer</span> و <span dir="ltr">transferFrom</span>.** يمكن أن تؤدي الاستدعاءات الخارجية في دوال التحويل إلى هجمات إعادة الدخول (reentrancies).

يتضمن سليذر أداة، [<span dir="ltr">slither-prop</span>](https://github.com/crytic/slither/wiki/Property-generation)، والتي تُنشئ اختبارات الوحدة وخصائص الأمان التي يمكنها اكتشاف العديد من عيوب <span dir="ltr">ERC</span> الشائعة. استخدم <span dir="ltr">slither-prop</span> لمراجعة ما يلي:

- **يجتاز العقد جميع اختبارات الوحدة وخصائص الأمان من <span dir="ltr">slither-prop</span>.** قم بتشغيل اختبارات الوحدة المُنشأة، ثم تحقق من الخصائص باستخدام [إيكيدنا](https://github.com/crytic/echidna) و [مانتيكور](https://manticore.readthedocs.io/en/latest/verifier.html).

أخيرًا، هناك خصائص معينة يصعب تحديدها تلقائيًا. راجع هذه الشروط يدويًا:

- **يجب ألا تفرض <span dir="ltr">transfer</span> و <span dir="ltr">transferFrom</span> رسومًا.** يمكن أن تؤدي الرموز المميزة الانكماشية (Deflationary tokens) إلى سلوك غير متوقع.
- **يتم أخذ الفائدة المحتملة المكتسبة من الرمز المميز في الاعتبار.** توزع بعض الرموز المميزة فائدة على حاملي الرموز المميزة. قد تُحتجز هذه الفائدة في العقد إذا لم يتم أخذها في الاعتبار.

## تكوين العقد {#contract-composition}

- **يتجنب العقد التعقيد غير الضروري.** يجب أن يكون الرمز المميز عقدًا بسيطًا؛ يتطلب الرمز المميز ذو التعليمات البرمجية المعقدة معيارًا أعلى من المراجعة. استخدم [طابعة الملخص البشري (<span dir="ltr">human-summary printer</span>)](https://github.com/crytic/slither/wiki/Printer-documentation#human-summary) الخاصة بسليذر لتحديد التعليمات البرمجية المعقدة.
- **يستخدم العقد <span dir="ltr">SafeMath</span>.** تتطلب العقود التي لا تستخدم <span dir="ltr">SafeMath</span> معيارًا أعلى من المراجعة. افحص العقد يدويًا للتحقق من استخدام <span dir="ltr">SafeMath</span>.
- **يحتوي العقد على عدد قليل فقط من الدوال غير المرتبطة بالرموز المميزة.** تزيد الدوال غير المرتبطة بالرموز المميزة من احتمالية حدوث مشكلة في العقد. استخدم [طابعة ملخص العقد (<span dir="ltr">contract-summary printer</span>)](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) الخاصة بسليذر لمراجعة التعليمات البرمجية المستخدمة في العقد بشكل عام.
- **يحتوي الرمز المميز على عنوان واحد فقط.** يمكن للرموز المميزة ذات نقاط الدخول المتعددة لتحديثات الرصيد أن تكسر مسك الدفاتر الداخلي بناءً على العنوان (على سبيل المثال، قد لا يعكس `balances[token_address][msg.sender]` الرصيد الفعلي).

## امتيازات المالك {#owner-privileges}

- **الرمز المميز غير قابل للترقية.** قد تغير العقود القابلة للترقية قواعدها بمرور الوقت. استخدم [طابعة الملخص البشري](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) الخاصة بسليذر لتحديد ما إذا كان العقد قابلاً للترقية.
- **يتمتع المالك بقدرات سك محدودة.** يمكن للملاك الخبثاء أو المخترقين إساءة استخدام قدرات السك. استخدم [طابعة الملخص البشري](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) الخاصة بسليذر لمراجعة قدرات السك، وفكر في مراجعة التعليمات البرمجية يدويًا.
- **الرمز المميز غير قابل للإيقاف المؤقت.** يمكن للملاك الخبثاء أو المخترقين الإيقاع بالعقود التي تعتمد على رموز مميزة قابلة للإيقاف المؤقت. حدد التعليمات البرمجية القابلة للإيقاف المؤقت يدويًا.
- **لا يمكن للمالك إدراج العقد في القائمة السوداء.** يمكن للملاك الخبثاء أو المخترقين الإيقاع بالعقود التي تعتمد على رموز مميزة تحتوي على قائمة سوداء. حدد ميزات القائمة السوداء يدويًا.
- **الفريق الذي يقف وراء الرمز المميز معروف ويمكن تحميله مسؤولية إساءة الاستخدام.** يجب أن تتطلب العقود ذات فرق التطوير المجهولة، أو التي تتواجد في ملاذات قانونية، معيارًا أعلى من المراجعة.

## ندرة الرموز المميزة {#token-scarcity}

تتطلب مراجعات مشكلات ندرة الرموز المميزة مراجعة يدوية. تحقق من هذه الشروط:

- **لا يمتلك أي مستخدم معظم المعروض.** إذا كان عدد قليل من المستخدمين يمتلكون معظم الرموز المميزة، فيمكنهم التأثير على العمليات بناءً على إعادة توزيع الرمز المميز.
- **إجمالي المعروض كافٍ.** يمكن التلاعب بسهولة بالرموز المميزة ذات إجمالي المعروض المنخفض.
- **تتواجد الرموز المميزة في أكثر من بضع منصات تداول.** إذا كانت جميع الرموز المميزة في منصة تداول واحدة، فإن اختراق المنصة يمكن أن يعرض العقد الذي يعتمد على الرمز المميز للخطر.
- **يفهم المستخدمون المخاطر المرتبطة بالأموال الكبيرة أو القروض الخاطفة (flash loans).** يجب أن تأخذ العقود التي تعتمد على رصيد الرمز المميز في الاعتبار بعناية المهاجمين الذين يمتلكون أموالاً كبيرة أو الهجمات من خلال القروض الخاطفة.
- **الرمز المميز لا يسمح بالسك الخاطف (flash minting).** يمكن أن يؤدي السك الخاطف إلى تقلبات كبيرة في الرصيد وإجمالي المعروض، مما يستلزم فحوصات صارمة وشاملة لتجاوز السعة في تشغيل الرمز المميز.