ٹوکن انضمام کی چیک لسٹ
کسی بھی ٹوکن کے ساتھ تعامل کرتے وقت اس چیک لسٹ پر عمل کریں۔ اس بات کو یقینی بنائیں کہ آپ ہر آئٹم سے وابستہ خطرات کو سمجھتے ہیں، اور ان اصولوں میں کسی بھی استثنیٰ کا جواز پیش کریں۔
سہولت کے لیے، تمام سلدر یوٹیلیٹیز (opens in a new tab) کو براہ راست کسی ٹوکن کے پتہ پر چلایا جا سکتا ہے، جیسے:
slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherToken
اس چیک لسٹ پر عمل کرنے کے لیے، آپ کو ٹوکن کے لیے سلدر سے یہ آؤٹ پٹ درکار ہوگی:
- slither-check-erc [target] [contractName] [optional: --erc ERC_NUMBER]
- slither [target] --print human-summary
- slither [target] --print contract-summary
- slither-prop . --contract ContractName # کنفیگریشن، اور ایکڈنا اور مینٹیکور کے استعمال کا تقاضا کرتا ہے
عمومی تحفظات
- کنٹریکٹ کا سیکیورٹی جائزہ لیا گیا ہو۔ ایسے کنٹریکٹس کے ساتھ تعامل سے گریز کریں جن کا سیکیورٹی جائزہ نہ لیا گیا ہو۔ تشخیص کی طوالت (جسے ”کوشش کی سطح“ بھی کہا جاتا ہے)، سیکیورٹی فرم کی ساکھ، اور دریافت ہونے والے مسائل کی تعداد اور شدت کو چیک کریں۔
- آپ نے ڈیولپرز سے رابطہ کیا ہو۔ آپ کو کسی واقعے کے بارے میں ان کی ٹیم کو آگاہ کرنے کی ضرورت پڑ سکتی ہے۔ 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 فنکشنز موجود ہوں۔ یہ فنکشنز ERC-20 معیار میں اختیاری ہیں اور ہو سکتا ہے کہ موجود نہ ہوں۔
- decimals ایک uint8 واپس کرتا ہے۔ کئی ٹوکنز غلط طور پر uint256 واپس کرتے ہیں۔ اگر ایسا ہے، تو یقینی بنائیں کہ واپس کی گئی ویلیو 255 سے کم ہے۔
- یہ ٹوکن معروف ERC-20 ریس کنڈیشن (race condition) (opens in a new tab) کو کم کرتا ہے۔ ERC-20 معیار میں ایک معروف ERC-20 ریس کنڈیشن موجود ہے جسے حملہ آوروں کو ٹوکنز چرانے سے روکنے کے لیے کم کیا جانا چاہیے۔
- یہ ٹوکن ERC-777 ٹوکن نہیں ہے اور اس کے transfer اور transferFrom میں کوئی بیرونی فنکشن کال نہیں ہے۔ منتقلی کے فنکشنز میں بیرونی کالز ری اینٹرنسی (reentrancies) کا سبب بن سکتی ہیں۔
سلدر میں ایک یوٹیلیٹی، slither-prop (opens in a new tab) شامل ہے، جو یونٹ ٹیسٹس اور سیکیورٹی خصوصیات تیار کرتی ہے جو ERC کی بہت سی عام خامیوں کو دریافت کر سکتی ہیں۔ یہ جائزہ لینے کے لیے slither-prop کا استعمال کریں کہ:
- کنٹریکٹ slither-prop کے تمام یونٹ ٹیسٹس اور سیکیورٹی خصوصیات کو پاس کرتا ہے۔ تیار کردہ یونٹ ٹیسٹس چلائیں، پھر ایکڈنا (opens in a new tab) اور مینٹیکور (opens in a new tab) کے ساتھ خصوصیات کو چیک کریں۔
آخر میں، کچھ ایسی خصوصیات ہیں جن کی خودکار طور پر شناخت کرنا مشکل ہے۔ ان شرائط کا دستی طور پر جائزہ لیں:
- transfer اور transferFrom کو فیس نہیں لینی چاہیے۔ ڈیفلیشنری (Deflationary) ٹوکنز غیر متوقع رویے کا سبب بن سکتے ہیں۔
- ٹوکن سے حاصل ہونے والے ممکنہ سود کو مدنظر رکھا گیا ہے۔ کچھ ٹوکنز ٹوکن ہولڈرز میں سود تقسیم کرتے ہیں۔ اگر اسے مدنظر نہ رکھا جائے تو یہ سود کنٹریکٹ میں پھنس سکتا ہے۔
کنٹریکٹ کی ساخت
- کنٹریکٹ غیر ضروری پیچیدگی سے گریز کرتا ہے۔ ٹوکن کو ایک سادہ کنٹریکٹ ہونا چاہیے؛ پیچیدہ کوڈ والے ٹوکن کو اعلیٰ معیار کے جائزے کی ضرورت ہوتی ہے۔ پیچیدہ کوڈ کی شناخت کے لیے سلدر کے 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) کا استعمال کریں، اور کوڈ کا دستی طور پر جائزہ لینے پر غور کریں۔
- ٹوکن کو روکا (pause) نہیں جا سکتا۔ بدنیتی پر مبنی یا سمجھوتہ شدہ مالکان روکے جانے کے قابل (pausable) ٹوکنز پر انحصار کرنے والے کنٹریکٹس کو پھنسا سکتے ہیں۔ روکے جانے کے قابل کوڈ کی دستی طور پر شناخت کریں۔
- مالک کنٹریکٹ کو بلیک لسٹ نہیں کر سکتا۔ بدنیتی پر مبنی یا سمجھوتہ شدہ مالکان بلیک لسٹ والے ٹوکنز پر انحصار کرنے والے کنٹریکٹس کو پھنسا سکتے ہیں۔ بلیک لسٹ کرنے کی خصوصیات کی دستی طور پر شناخت کریں۔
- ٹوکن کے پیچھے موجود ٹیم جانی پہچانی ہے اور اسے غلط استعمال کے لیے ذمہ دار ٹھہرایا جا سکتا ہے۔ گمنام ڈیولپمنٹ ٹیموں والے کنٹریکٹس، یا جو قانونی پناہ گاہوں میں موجود ہیں، انہیں اعلیٰ معیار کے جائزے کی ضرورت ہونی چاہیے۔
ٹوکن کی کمیابی
ٹوکن کی کمیابی کے مسائل کے جائزے کے لیے دستی جائزے کی ضرورت ہوتی ہے۔ ان شرائط کو چیک کریں:
- کوئی بھی صارف زیادہ تر سپلائی کا مالک نہیں ہے۔ اگر چند صارفین زیادہ تر ٹوکنز کے مالک ہیں، تو وہ ٹوکن کی تقسیم کی بنیاد پر آپریشنز کو متاثر کر سکتے ہیں۔
- کل سپلائی کافی ہے۔ کم کل سپلائی والے ٹوکنز کو آسانی سے ہیرا پھیری کا نشانہ بنایا جا سکتا ہے۔
- ٹوکنز چند سے زیادہ ایکسچینجز میں موجود ہیں۔ اگر تمام ٹوکنز ایک ہی ایکسچینج میں ہیں، تو ایکسچینج کے سمجھوتے سے ٹوکن پر انحصار کرنے والے کنٹریکٹ کو خطرہ لاحق ہو سکتا ہے۔
- صارفین بڑے فنڈز یا فلیش لونز (flash loans) سے وابستہ خطرات کو سمجھتے ہیں۔ ٹوکن بیلنس پر انحصار کرنے والے کنٹریکٹس کو بڑے فنڈز والے حملہ آوروں یا فلیش لونز کے ذریعے ہونے والے حملوں کو احتیاط سے مدنظر رکھنا چاہیے۔
- ٹوکن فلیش ڈھلائی (flash minting) کی اجازت نہیں دیتا۔ فلیش ڈھلائی بیلنس اور کل سپلائی میں نمایاں اتار چڑھاؤ کا سبب بن سکتی ہے، جس کے لیے ٹوکن کے آپریشن میں سخت اور جامع اوور فلو چیکس کی ضرورت ہوتی ہے۔