ప్రధాన కంటెంట్‌కు దాటవేయి

టోకెన్ ఇంటిగ్రేషన్ చెక్‌లిస్ట్

solidity
స్మార్ట్ కాంట్రాక్ట్‌లు
భద్రత
టోకెన్‌లు
మధ్యస్థ స్థాయి
Trailofbits
13 ఆగస్టు, 2020
4 నిమిషాల పఠనం

ఏదైనా టోకెన్‌లతో ఇంటరాక్ట్ అవుతున్నప్పుడు ఈ చెక్‌లిస్ట్‌ను అనుసరించండి. ప్రతి అంశంతో ముడిపడి ఉన్న నష్టాలను మీరు అర్థం చేసుకున్నారని నిర్ధారించుకోండి మరియు ఈ నియమాలకు ఏవైనా మినహాయింపులు ఉంటే వాటిని సమర్థించండి.

సౌలభ్యం కోసం, అన్ని స్లిదర్ (Slither) యుటిలిటీలను (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 బూలియన్‌ను అందిస్తాయి. అనేక టోకెన్‌లు ఈ ఫంక్షన్‌లపై బూలియన్‌ను అందించవు. ఫలితంగా, కాంట్రాక్ట్‌లో వాటి కాల్‌లు విఫలం కావచ్చు.
  • ఉపయోగిస్తే name, decimals మరియు symbol ఫంక్షన్‌లు ఉంటాయి. ఈ ఫంక్షన్‌లు ERC-20 ప్రమాణంలో ఐచ్ఛికం మరియు ఉండకపోవచ్చు.
  • decimals uint8 ని అందిస్తుంది. అనేక టోకెన్‌లు తప్పుగా uint256 ని అందిస్తాయి. ఇలా జరిగితే, అందించబడిన విలువ 255 కంటే తక్కువగా ఉందని నిర్ధారించుకోండి.
  • టోకెన్ తెలిసిన ERC-20 రేస్ కండిషన్‌ను (opens in a new tab) తగ్గిస్తుంది. దాడి చేసేవారు టోకెన్‌లను దొంగిలించకుండా నిరోధించడానికి ERC-20 ప్రమాణంలో తెలిసిన ERC-20 రేస్ కండిషన్ ఉంది, దానిని తప్పనిసరిగా తగ్గించాలి.
  • టోకెన్ ERC-777 టోకెన్ కాదు మరియు transfer మరియు transferFrom లలో ఎక్స్‌టర్నల్ ఫంక్షన్ కాల్ లేదు. transfer ఫంక్షన్‌లలోని ఎక్స్‌టర్నల్ కాల్‌లు రీఎంట్రన్సీలకు దారితీయవచ్చు.

స్లిదర్ 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) ని ఉపయోగించండి.
  • యజమానికి పరిమిత ముద్రించడం (minting) సామర్థ్యాలు ఉన్నాయి. హానికరమైన లేదా రాజీపడిన యజమానులు ముద్రించడం సామర్థ్యాలను దుర్వినియోగం చేయవచ్చు. ముద్రించడం సామర్థ్యాలను సమీక్షించడానికి స్లిదర్ యొక్క human-summary printer (opens in a new tab) ని ఉపయోగించండి మరియు కోడ్‌ను మాన్యువల్‌గా సమీక్షించడాన్ని పరిగణించండి.
  • టోకెన్ పాజ్ చేయదగినది కాదు. హానికరమైన లేదా రాజీపడిన యజమానులు పాజ్ చేయగల టోకెన్‌లపై ఆధారపడే కాంట్రాక్ట్‌లను ట్రాప్ చేయవచ్చు. పాజ్ చేయగల కోడ్‌ను మాన్యువల్‌గా గుర్తించండి.
  • యజమాని కాంట్రాక్ట్‌ను బ్లాక్‌లిస్ట్ చేయలేరు. హానికరమైన లేదా రాజీపడిన యజమానులు బ్లాక్‌లిస్ట్ ఉన్న టోకెన్‌లపై ఆధారపడే కాంట్రాక్ట్‌లను ట్రాప్ చేయవచ్చు. బ్లాక్‌లిస్టింగ్ ఫీచర్‌లను మాన్యువల్‌గా గుర్తించండి.
  • టోకెన్ వెనుక ఉన్న బృందం అందరికీ తెలిసినది మరియు దుర్వినియోగానికి వారిని బాధ్యులను చేయవచ్చు. అనామక డెవలప్‌మెంట్ బృందాలు ఉన్న లేదా చట్టపరమైన ఆశ్రయాలలో ఉన్న కాంట్రాక్ట్‌లకు ఉన్నత ప్రమాణాల సమీక్ష అవసరం.

టోకెన్ కొరత

టోకెన్ కొరత సమస్యల సమీక్షలకు మాన్యువల్ సమీక్ష అవసరం. ఈ పరిస్థితుల కోసం తనిఖీ చేయండి:

  • ఏ వినియోగదారుడు ఎక్కువ సరఫరాను కలిగి ఉండరు. కొద్దిమంది వినియోగదారులు ఎక్కువ టోకెన్‌లను కలిగి ఉంటే, వారు టోకెన్ విభజన ఆధారంగా కార్యకలాపాలను ప్రభావితం చేయవచ్చు.
  • మొత్తం సరఫరా సరిపోతుంది. తక్కువ మొత్తం సరఫరా ఉన్న టోకెన్‌లను సులభంగా తారుమారు చేయవచ్చు.
  • టోకెన్‌లు కొన్ని ఎక్స్ఛేంజీల కంటే ఎక్కువ వాటిలో ఉన్నాయి. అన్ని టోకెన్‌లు ఒకే ఎక్స్ఛేంజ్‌లో ఉంటే, ఎక్స్ఛేంజ్ రాజీపడటం వల్ల టోకెన్‌పై ఆధారపడే కాంట్రాక్ట్ కూడా రాజీపడవచ్చు.
  • పెద్ద నిధులు లేదా ఫ్లాష్ లోన్‌లతో ముడిపడి ఉన్న నష్టాలను వినియోగదారులు అర్థం చేసుకుంటారు. టోకెన్ బ్యాలెన్స్‌పై ఆధారపడే కాంట్రాక్ట్‌లు పెద్ద నిధులు ఉన్న దాడి చేసేవారిని లేదా ఫ్లాష్ లోన్‌ల ద్వారా జరిగే దాడులను జాగ్రత్తగా పరిగణనలోకి తీసుకోవాలి.
  • టోకెన్ ఫ్లాష్ ముద్రించడం (flash minting) ని అనుమతించదు. ఫ్లాష్ ముద్రించడం బ్యాలెన్స్ మరియు మొత్తం సరఫరాలో గణనీయమైన హెచ్చుతగ్గులకు దారితీస్తుంది, దీనికి టోకెన్ ఆపరేషన్‌లో కఠినమైన మరియు సమగ్రమైన ఓవర్‌ఫ్లో తనిఖీలు అవసరం.