ٹوکن انضمام کی چیک لسٹ
صوابدیدی ٹوکنز کے ساتھ تعامل کرتے وقت اس چیک لسٹ پر عمل کریں۔ اس بات کو یقینی بنائیں کہ آپ ہر آئٹم سے وابستہ خطرات کو سمجھتے ہیں، اور ان اصولوں میں کسی بھی استثنیٰ کا جواز پیش کریں۔
سہولت کے لیے، تمام Slither یوٹیلیٹیز (opens in a new tab) کو براہ راست ٹوکن ایڈریس پر چلایا جا سکتا ہے، جیسے:
slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherTokenاس چیک لسٹ پر عمل کرنے کے لیے، آپ کو ٹوکن کے لیے Slither سے یہ آؤٹ پٹ درکار ہوگا:
- slither-check-erc [target] [contractName] [optional: --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 میں ایک یوٹیلیٹی، slither-check-erc (opens in a new tab) شامل ہے، جو بہت سے متعلقہ ERC معیارات کے ساتھ ٹوکن کی مطابقت کا جائزہ لیتی ہے۔ اس بات کا جائزہ لینے کے لیے slither-check-erc کا استعمال کریں کہ:
- transfer اور transferFrom ایک بولین (boolean) واپس کرتے ہیں۔ کئی ٹوکنز ان فنکشنز پر بولین واپس نہیں کرتے ہیں۔ نتیجے کے طور پر، کانٹریکٹ میں ان کی کالز ناکام ہو سکتی ہیں۔
- اگر استعمال کیے گئے ہوں تو name، decimals، اور symbol فنکشنز موجود ہیں۔ یہ فنکشنز ERC20 معیار میں اختیاری ہیں اور ہو سکتا ہے موجود نہ ہوں۔
- decimals ایک uint8 واپس کرتا ہے۔ کئی ٹوکنز غلط طریقے سے uint256 واپس کرتے ہیں۔ اگر ایسا ہے، تو یقینی بنائیں کہ واپس کی گئی ویلیو 255 سے کم ہے۔
- ٹوکن معلوم ERC20 ریس کنڈیشن (race condition) (opens in a new tab) کو کم کرتا ہے۔ ERC20 معیار میں ایک معلوم ERC20 ریس کنڈیشن ہے جسے حملہ آوروں کو ٹوکن چرانے سے روکنے کے لیے کم کیا جانا چاہیے۔
- ٹوکن ERC777 ٹوکن نہیں ہے اور transfer اور transferFrom میں کوئی بیرونی فنکشن کال نہیں ہے۔ ٹرانسفر فنکشنز میں بیرونی کالز ری اینٹرینسیز (reentrancies) کا باعث بن سکتی ہیں۔
Slither میں ایک یوٹیلیٹی، slither-prop (opens in a new tab) شامل ہے، جو یونٹ ٹیسٹ اور سیکیورٹی پراپرٹیز تیار کرتی ہے جو بہت سی عام ERC خامیوں کو دریافت کر سکتی ہے۔ اس بات کا جائزہ لینے کے لیے slither-prop کا استعمال کریں کہ:
- کانٹریکٹ slither-prop سے تمام یونٹ ٹیسٹ اور سیکیورٹی پراپرٹیز کو پاس کرتا ہے۔ تیار کردہ یونٹ ٹیسٹ چلائیں، پھر Echidna (opens in a new tab) اور Manticore (opens in a new tab) کے ساتھ پراپرٹیز چیک کریں۔
آخر میں، کچھ ایسی خصوصیات ہیں جن کی خود بخود شناخت کرنا مشکل ہے۔ ان شرائط کا دستی طور پر جائزہ لیں:
- transfer اور transferFrom کو فیس نہیں لینی چاہیے۔ ڈیفلیشنری (Deflationary) ٹوکنز غیر متوقع رویے کا باعث بن سکتے ہیں۔
- ٹوکن سے حاصل ہونے والے ممکنہ سود کو مدنظر رکھا گیا ہے۔ کچھ ٹوکنز ٹوکن ہولڈرز میں سود تقسیم کرتے ہیں۔ اگر اس سود کو مدنظر نہ رکھا جائے تو یہ کانٹریکٹ میں پھنس سکتا ہے۔
کانٹریکٹ کی ترکیب
- کانٹریکٹ غیر ضروری پیچیدگی سے گریز کرتا ہے۔ ٹوکن ایک سادہ کانٹریکٹ ہونا چاہیے؛ پیچیدہ کوڈ والے ٹوکن کو اعلیٰ معیار کے جائزے کی ضرورت ہوتی ہے۔ پیچیدہ کوڈ کی شناخت کے لیے Slither کے human-summary printer (opens in a new tab) کا استعمال کریں۔
- کانٹریکٹ SafeMath استعمال کرتا ہے۔ وہ کانٹریکٹس جو SafeMath استعمال نہیں کرتے انہیں اعلیٰ معیار کے جائزے کی ضرورت ہوتی ہے۔ SafeMath کے استعمال کے لیے کانٹریکٹ کا دستی طور پر معائنہ کریں۔
- کانٹریکٹ میں صرف چند غیر ٹوکن سے متعلقہ فنکشنز ہیں۔ غیر ٹوکن سے متعلقہ فنکشنز کانٹریکٹ میں کسی مسئلے کے امکان کو بڑھاتے ہیں۔ کانٹریکٹ میں استعمال ہونے والے کوڈ کا وسیع پیمانے پر جائزہ لینے کے لیے Slither کے contract-summary printer (opens in a new tab) کا استعمال کریں۔
- ٹوکن کا صرف ایک ایڈریس ہے۔ بیلنس اپ ڈیٹس کے لیے متعدد انٹری پوائنٹس والے ٹوکنز ایڈریس کی بنیاد پر اندرونی بک کیپنگ کو توڑ سکتے ہیں (مثال کے طور پر،
balances[token_address][msg.sender]اصل بیلنس کی عکاسی نہیں کر سکتا ہے)۔
مالک کے مراعات
- ٹوکن اپ گریڈ کے قابل نہیں ہے۔ اپ گریڈ کے قابل کانٹریکٹس وقت کے ساتھ اپنے اصول بدل سکتے ہیں۔ یہ تعین کرنے کے لیے کہ آیا کانٹریکٹ اپ گریڈ کے قابل ہے، Slither کے human-summary printer (opens in a new tab) کا استعمال کریں۔
- مالک کے پاس منٹنگ (minting) کی محدود صلاحیتیں ہیں۔ بدنیتی پر مبنی یا سمجھوتہ شدہ مالکان منٹنگ کی صلاحیتوں کا غلط استعمال کر سکتے ہیں۔ منٹنگ کی صلاحیتوں کا جائزہ لینے کے لیے Slither کے human-summary printer (opens in a new tab) کا استعمال کریں، اور کوڈ کا دستی طور پر جائزہ لینے پر غور کریں۔
- ٹوکن روکے جانے (pausable) کے قابل نہیں ہے۔ بدنیتی پر مبنی یا سمجھوتہ شدہ مالکان روکے جانے کے قابل ٹوکنز پر انحصار کرنے والے کانٹریکٹس کو پھنسا سکتے ہیں۔ روکے جانے کے قابل کوڈ کی دستی طور پر شناخت کریں۔
- مالک کانٹریکٹ کو بلیک لسٹ نہیں کر سکتا۔ بدنیتی پر مبنی یا سمجھوتہ شدہ مالکان بلیک لسٹ والے ٹوکنز پر انحصار کرنے والے کانٹریکٹس کو پھنسا سکتے ہیں۔ بلیک لسٹ کرنے کی خصوصیات کی دستی طور پر شناخت کریں۔
- ٹوکن کے پیچھے موجود ٹیم جانی پہچانی ہے اور اسے غلط استعمال کے لیے ذمہ دار ٹھہرایا جا سکتا ہے۔ گمنام ڈیولپمنٹ ٹیموں والے کانٹریکٹس، یا جو قانونی پناہ گاہوں میں رہتے ہیں، انہیں اعلیٰ معیار کے جائزے کی ضرورت ہونی چاہیے۔
ٹوکن کی کمی
ٹوکن کی کمی کے مسائل کے جائزوں کے لیے دستی جائزے کی ضرورت ہوتی ہے۔ ان شرائط کو چیک کریں:
- کسی بھی صارف کے پاس سپلائی کا زیادہ تر حصہ نہیں ہے۔ اگر چند صارفین کے پاس زیادہ تر ٹوکنز ہیں، تو وہ ٹوکن کی تقسیم کی بنیاد پر کارروائیوں کو متاثر کر سکتے ہیں۔
- کل سپلائی کافی ہے۔ کم کل سپلائی والے ٹوکنز کو آسانی سے ہیرا پھیری کا نشانہ بنایا جا سکتا ہے۔
- ٹوکنز چند سے زیادہ ایکسچینجز میں واقع ہیں۔ اگر تمام ٹوکنز ایک ہی ایکسچینج میں ہیں، تو ایکسچینج کا سمجھوتہ ٹوکن پر انحصار کرنے والے کانٹریکٹ کو خطرے میں ڈال سکتا ہے۔
- صارفین بڑے فنڈز یا فلیش لونز (flash loans) سے وابستہ خطرات کو سمجھتے ہیں۔ ٹوکن بیلنس پر انحصار کرنے والے کانٹریکٹس کو بڑے فنڈز والے حملہ آوروں یا فلیش لونز کے ذریعے ہونے والے حملوں پر احتیاط سے غور کرنا چاہیے۔
- ٹوکن فلیش منٹنگ (flash minting) کی اجازت نہیں دیتا ہے۔ فلیش منٹنگ بیلنس اور کل سپلائی میں نمایاں اتار چڑھاؤ کا باعث بن سکتی ہے، جس کے لیے ٹوکن کے آپریشن میں سخت اور جامع اوور فلو (overflow) چیکس کی ضرورت ہوتی ہے۔
صفحہ کی آخری اپ ڈیٹ: 21 اکتوبر، 2025