---
title: "ٹوکن انضمام کی چیک لسٹ"
description: "ٹوکنز کے ساتھ تعامل کرتے وقت غور کرنے والی چیزوں کی ایک چیک لسٹ"
author: "Trailofbits"
lang: ur
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}

- **کنٹریکٹ کا سیکیورٹی جائزہ لیا گیا ہو۔** ایسے کنٹریکٹس کے ساتھ تعامل سے گریز کریں جن کا سیکیورٹی جائزہ نہ لیا گیا ہو۔ تشخیص کی طوالت (جسے ”کوشش کی سطح“ بھی کہا جاتا ہے)، سیکیورٹی فرم کی ساکھ، اور دریافت ہونے والے مسائل کی تعداد اور شدت کو چیک کریں۔
- **آپ نے ڈیولپرز سے رابطہ کیا ہو۔** آپ کو کسی واقعے کے بارے میں ان کی ٹیم کو آگاہ کرنے کی ضرورت پڑ سکتی ہے۔ [<span dir="ltr">blockchain-security-contacts</span>](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> ریس کنڈیشن (race condition)](https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729) کو کم کرتا ہے۔** <span dir="ltr">ERC-20</span> معیار میں ایک معروف <span dir="ltr">ERC-20</span> ریس کنڈیشن موجود ہے جسے حملہ آوروں کو ٹوکنز چرانے سے روکنے کے لیے کم کیا جانا چاہیے۔
- **یہ ٹوکن <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) ٹوکنز غیر متوقع رویے کا سبب بن سکتے ہیں۔
- **ٹوکن سے حاصل ہونے والے ممکنہ سود کو مدنظر رکھا گیا ہے۔** کچھ ٹوکنز ٹوکن ہولڈرز میں سود تقسیم کرتے ہیں۔ اگر اسے مدنظر نہ رکھا جائے تو یہ سود کنٹریکٹ میں پھنس سکتا ہے۔

## کنٹریکٹ کی ساخت {#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}

- **ٹوکن اپ گریڈ کے قابل نہیں ہے۔** اپ گریڈ کے قابل کنٹریکٹس وقت کے ساتھ اپنے اصول بدل سکتے ہیں۔ یہ تعین کرنے کے لیے کہ آیا کنٹریکٹ اپ گریڈ کے قابل ہے، سلدر کے [<span dir="ltr">human-summary printer</span>](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) کا استعمال کریں۔
- **مالک کے پاس ڈھلائی کی محدود صلاحیتیں ہیں۔** بدنیتی پر مبنی یا سمجھوتہ شدہ مالکان ڈھلائی کی صلاحیتوں کا غلط استعمال کر سکتے ہیں۔ ڈھلائی کی صلاحیتوں کا جائزہ لینے کے لیے سلدر کے [<span dir="ltr">human-summary printer</span>](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) کا استعمال کریں، اور کوڈ کا دستی طور پر جائزہ لینے پر غور کریں۔
- **ٹوکن کو روکا (pause) نہیں جا سکتا۔** بدنیتی پر مبنی یا سمجھوتہ شدہ مالکان روکے جانے کے قابل (pausable) ٹوکنز پر انحصار کرنے والے کنٹریکٹس کو پھنسا سکتے ہیں۔ روکے جانے کے قابل کوڈ کی دستی طور پر شناخت کریں۔
- **مالک کنٹریکٹ کو بلیک لسٹ نہیں کر سکتا۔** بدنیتی پر مبنی یا سمجھوتہ شدہ مالکان بلیک لسٹ والے ٹوکنز پر انحصار کرنے والے کنٹریکٹس کو پھنسا سکتے ہیں۔ بلیک لسٹ کرنے کی خصوصیات کی دستی طور پر شناخت کریں۔
- **ٹوکن کے پیچھے موجود ٹیم جانی پہچانی ہے اور اسے غلط استعمال کے لیے ذمہ دار ٹھہرایا جا سکتا ہے۔** گمنام ڈیولپمنٹ ٹیموں والے کنٹریکٹس، یا جو قانونی پناہ گاہوں میں موجود ہیں، انہیں اعلیٰ معیار کے جائزے کی ضرورت ہونی چاہیے۔

## ٹوکن کی کمیابی {#token-scarcity}

ٹوکن کی کمیابی کے مسائل کے جائزے کے لیے دستی جائزے کی ضرورت ہوتی ہے۔ ان شرائط کو چیک کریں:

- **کوئی بھی صارف زیادہ تر سپلائی کا مالک نہیں ہے۔** اگر چند صارفین زیادہ تر ٹوکنز کے مالک ہیں، تو وہ ٹوکن کی تقسیم کی بنیاد پر آپریشنز کو متاثر کر سکتے ہیں۔
- **کل سپلائی کافی ہے۔** کم کل سپلائی والے ٹوکنز کو آسانی سے ہیرا پھیری کا نشانہ بنایا جا سکتا ہے۔
- **ٹوکنز چند سے زیادہ ایکسچینجز میں موجود ہیں۔** اگر تمام ٹوکنز ایک ہی ایکسچینج میں ہیں، تو ایکسچینج کے سمجھوتے سے ٹوکن پر انحصار کرنے والے کنٹریکٹ کو خطرہ لاحق ہو سکتا ہے۔
- **صارفین بڑے فنڈز یا فلیش لونز (flash loans) سے وابستہ خطرات کو سمجھتے ہیں۔** ٹوکن بیلنس پر انحصار کرنے والے کنٹریکٹس کو بڑے فنڈز والے حملہ آوروں یا فلیش لونز کے ذریعے ہونے والے حملوں کو احتیاط سے مدنظر رکھنا چاہیے۔
- **ٹوکن فلیش ڈھلائی (flash minting) کی اجازت نہیں دیتا**۔ فلیش ڈھلائی بیلنس اور کل سپلائی میں نمایاں اتار چڑھاؤ کا سبب بن سکتی ہے، جس کے لیے ٹوکن کے آپریشن میں سخت اور جامع اوور فلو چیکس کی ضرورت ہوتی ہے۔