வில்லை ஒருங்கிணைப்பு சரிபார்ப்புப் பட்டியல்
தன்னிச்சையான வில்லைகளுடன் (tokens) தொடர்பு கொள்ளும்போது இந்தச் சரிபார்ப்புப் பட்டியலைப் பின்பற்றவும். ஒவ்வொரு உருப்படியுடனும் தொடர்புடைய அபாயங்களை நீங்கள் புரிந்துகொள்கிறீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள், மேலும் இந்த விதிகளுக்கான ஏதேனும் விதிவிலக்குகளை நியாயப்படுத்துங்கள்.
வசதிக்காக, அனைத்து ஸ்லித்தர் (Slither) பயன்பாடுகளையும் (புதிய தாவலில் திறக்கப்படும்) நேரடியாக ஒரு வில்லை முகவரியில் இயக்கலாம், எடுத்துக்காட்டாக:
ஸ்லித்தர் பயன்பாட்டுப் பயிற்சி
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) (புதிய தாவலில் திறக்கப்படும்) பொருத்தமான தொடர்புகளைத் தேடுங்கள்.
- முக்கியமான அறிவிப்புகளுக்கான பாதுகாப்பு அஞ்சல் பட்டியலை அவர்கள் கொண்டுள்ளனர். முக்கியமான சிக்கல்கள் கண்டறியப்படும்போது அல்லது மேம்படுத்தல்கள் நிகழும்போது அவர்களின் குழு பயனர்களுக்கு (உங்களைப் போன்றவர்களுக்கு!) அறிவுறுத்த வேண்டும்.
ERC இணக்கம்
ஸ்லித்தர், பல தொடர்புடைய ERC தரநிலைகளுடன் ஒரு வில்லை இணங்குவதை மதிப்பாய்வு செய்யும் slither-check-erc (புதிய தாவலில் திறக்கப்படும்) என்ற பயன்பாட்டைக் கொண்டுள்ளது. பின்வருவனவற்றை மதிப்பாய்வு செய்ய slither-check-erc ஐப் பயன்படுத்தவும்:
- பரிமாற்றம் (transfer) மற்றும் transferFrom ஆகியவை பூலியனை (boolean) வழங்குகின்றன. பல வில்லைகள் இந்தச் செயல்பாடுகளில் பூலியனை வழங்குவதில்லை. இதன் விளைவாக, ஒப்பந்தத்தில் அவற்றின் அழைப்புகள் தோல்வியடையக்கூடும்.
- பயன்படுத்தப்பட்டால், name, decimals மற்றும் symbol செயல்பாடுகள் உள்ளன. இந்தச் செயல்பாடுகள் ERC-20 தரநிலையில் விருப்பத்திற்குரியவை, எனவே அவை இல்லாமல் இருக்கலாம்.
- Decimals ஒரு uint8 ஐ வழங்குகிறது. பல வில்லைகள் தவறாக ஒரு uint256 ஐ வழங்குகின்றன. இதுபோன்று இருந்தால், வழங்கப்படும் மதிப்பு 255-க்குக் குறைவாக இருப்பதை உறுதிசெய்யவும்.
- இந்த வில்லை அறியப்பட்ட ERC-20 பந்தய நிலையை (race condition) (புதிய தாவலில் திறக்கப்படும்) தணிக்கிறது. தாக்குபவர்கள் வில்லைகளைத் திருடுவதைத் தடுக்க, ERC-20 தரநிலையில் உள்ள அறியப்பட்ட ERC-20 பந்தய நிலை தணிக்கப்பட வேண்டும்.
- இந்த வில்லை ஒரு ERC-777 வில்லை அல்ல, மேலும் transfer மற்றும் transferFrom ஆகியவற்றில் வெளிப்புறச் செயல்பாட்டு அழைப்பு எதுவும் இல்லை. பரிமாற்றச் செயல்பாடுகளில் உள்ள வெளிப்புற அழைப்புகள் மறுநுழைவுகளுக்கு (reentrancies) வழிவகுக்கும்.
ஸ்லித்தர், பல பொதுவான ERC குறைபாடுகளைக் கண்டறியக்கூடிய அலகு சோதனைகள் (unit tests) மற்றும் பாதுகாப்புப் பண்புகளை உருவாக்கும் slither-prop (புதிய தாவலில் திறக்கப்படும்) என்ற பயன்பாட்டைக் கொண்டுள்ளது. பின்வருவனவற்றை மதிப்பாய்வு செய்ய slither-prop ஐப் பயன்படுத்தவும்:
- ஒப்பந்தம் slither-prop இலிருந்து அனைத்து அலகு சோதனைகள் மற்றும் பாதுகாப்புப் பண்புகளிலும் தேர்ச்சி பெறுகிறது. உருவாக்கப்பட்ட அலகு சோதனைகளை இயக்கவும், பின்னர் எக்கிட்னா (Echidna) (புதிய தாவலில் திறக்கப்படும்) மற்றும் மேண்டிகோர் (Manticore) (புதிய தாவலில் திறக்கப்படும்) மூலம் பண்புகளைச் சரிபார்க்கவும்.
இறுதியாக, தானாகவே கண்டறியக் கடினமான சில பண்புகள் உள்ளன. இந்த நிபந்தனைகளை நீங்களே கைமுறையாக மதிப்பாய்வு செய்யவும்:
- பரிமாற்றம் (transfer) மற்றும் transferFrom ஆகியவை கட்டணம் வசூலிக்கக் கூடாது. பணவாட்ட வில்லைகள் (Deflationary tokens) எதிர்பாராத நடத்தைக்கு வழிவகுக்கும்.
- வில்லையிலிருந்து ஈட்டப்படும் சாத்தியமான வட்டி கணக்கில் எடுத்துக்கொள்ளப்படுகிறது. சில வில்லைகள் வில்லை வைத்திருப்பவர்களுக்கு வட்டியை விநியோகிக்கின்றன. இது கணக்கில் எடுத்துக்கொள்ளப்படாவிட்டால், இந்த வட்டி ஒப்பந்தத்தில் சிக்கிக்கொள்ளக்கூடும்.
ஒப்பந்தக் கட்டமைப்பு
- ஒப்பந்தம் தேவையற்ற சிக்கலைத் தவிர்க்கிறது. வில்லை ஒரு எளிய ஒப்பந்தமாக இருக்க வேண்டும்; சிக்கலான குறியீட்டைக் கொண்ட வில்லைக்கு உயர் தரத்திலான மதிப்பாய்வு தேவை. சிக்கலான குறியீட்டைக் கண்டறிய ஸ்லித்தரின் human-summary printer (புதிய தாவலில் திறக்கப்படும்) ஐப் பயன்படுத்தவும்.
- ஒப்பந்தம் SafeMath ஐப் பயன்படுத்துகிறது. SafeMath ஐப் பயன்படுத்தாத ஒப்பந்தங்களுக்கு உயர் தரத்திலான மதிப்பாய்வு தேவை. SafeMath பயன்பாட்டிற்காக ஒப்பந்தத்தைக் கைமுறையாக ஆய்வு செய்யவும்.
- ஒப்பந்தத்தில் வில்லை தொடர்பில்லாத சில செயல்பாடுகள் மட்டுமே உள்ளன. வில்லை தொடர்பில்லாத செயல்பாடுகள் ஒப்பந்தத்தில் சிக்கல் ஏற்படுவதற்கான வாய்ப்பை அதிகரிக்கின்றன. ஒப்பந்தத்தில் பயன்படுத்தப்படும் குறியீட்டைப் பரவலாக மதிப்பாய்வு செய்ய ஸ்லித்தரின் contract-summary printer (புதிய தாவலில் திறக்கப்படும்) ஐப் பயன்படுத்தவும்.
- வில்லைக்கு ஒரே ஒரு முகவரி மட்டுமே உள்ளது. இருப்புப் புதுப்பிப்புகளுக்குப் பல நுழைவுப் புள்ளிகளைக் கொண்ட வில்லைகள், முகவரியின் அடிப்படையிலான உள் கணக்குப்பதிவியலை உடைக்கக்கூடும் (எ.கா.,
balances[token_address][msg.sender]உண்மையான இருப்பைப் பிரதிபலிக்காமல் போகலாம்).
உரிமையாளர் சலுகைகள்
- வில்லை மேம்படுத்தக்கூடியது அல்ல. மேம்படுத்தக்கூடிய ஒப்பந்தங்கள் காலப்போக்கில் அவற்றின் விதிகளை மாற்றக்கூடும். ஒப்பந்தம் மேம்படுத்தக்கூடியதா என்பதைத் தீர்மானிக்க ஸ்லித்தரின் human-summary printer (புதிய தாவலில் திறக்கப்படும்) ஐப் பயன்படுத்தவும்.
- உரிமையாளர் வரையறுக்கப்பட்ட அச்சிடுதல் (minting) திறன்களைக் கொண்டுள்ளார். தீங்கிழைக்கும் அல்லது சமரசம் செய்யப்பட்ட உரிமையாளர்கள் அச்சிடுதல் திறன்களைத் தவறாகப் பயன்படுத்தலாம். அச்சிடுதல் திறன்களை மதிப்பாய்வு செய்ய ஸ்லித்தரின் human-summary printer (புதிய தாவலில் திறக்கப்படும்) ஐப் பயன்படுத்தவும், மேலும் குறியீட்டைக் கைமுறையாக மதிப்பாய்வு செய்வதைக் கருத்தில் கொள்ளவும்.
- வில்லை இடைநிறுத்தக்கூடியது அல்ல. தீங்கிழைக்கும் அல்லது சமரசம் செய்யப்பட்ட உரிமையாளர்கள் இடைநிறுத்தக்கூடிய வில்லைகளை நம்பியிருக்கும் ஒப்பந்தங்களைச் சிக்கவைக்கலாம். இடைநிறுத்தக்கூடிய குறியீட்டைக் கைமுறையாகக் கண்டறியவும்.
- உரிமையாளரால் ஒப்பந்தத்தைக் கருப்புப் பட்டியலில் சேர்க்க முடியாது. தீங்கிழைக்கும் அல்லது சமரசம் செய்யப்பட்ட உரிமையாளர்கள் கருப்புப் பட்டியலைக் கொண்ட வில்லைகளை நம்பியிருக்கும் ஒப்பந்தங்களைச் சிக்கவைக்கலாம். கருப்புப் பட்டியலில் சேர்க்கும் அம்சங்களைக் கைமுறையாகக் கண்டறியவும்.
- வில்லையின் பின்னணியில் உள்ள குழு அறியப்பட்டவர்கள் மற்றும் முறைகேடுகளுக்குப் பொறுப்பேற்கக்கூடியவர்கள். அநாமதேய மேம்பாட்டுக் குழுக்களைக் கொண்ட அல்லது சட்டப்பூர்வப் புகலிடங்களில் வசிக்கும் ஒப்பந்தங்களுக்கு உயர் தரத்திலான மதிப்பாய்வு தேவை.
வில்லைப் பற்றாக்குறை
வில்லைப் பற்றாக்குறைச் சிக்கல்களுக்கான மதிப்பாய்வுகளுக்குக் கைமுறை மதிப்பாய்வு தேவை. இந்த நிபந்தனைகளைச் சரிபார்க்கவும்:
- எந்தவொரு பயனரும் பெரும்பாலான விநியோகத்தை வைத்திருக்கவில்லை. சில பயனர்கள் பெரும்பாலான வில்லைகளை வைத்திருந்தால், அவர்கள் வில்லையின் பகிர்வின் அடிப்படையில் செயல்பாடுகளில் செல்வாக்குச் செலுத்த முடியும்.
- மொத்த விநியோகம் போதுமானது. குறைந்த மொத்த விநியோகத்தைக் கொண்ட வில்லைகளை எளிதாகக் கையாள முடியும்.
- வில்லைகள் சில பரிமாற்றகங்களுக்கு (exchanges) மேல் அமைந்துள்ளன. அனைத்து வில்லைகளும் ஒரே பரிமாற்றகத்தில் இருந்தால், பரிமாற்றகத்தின் சமரசம் வில்லையை நம்பியிருக்கும் ஒப்பந்தத்தையும் சமரசம் செய்யலாம்.
- பெரிய நிதிகள் அல்லது ஃபிளாஷ் கடன்களுடன் (flash loans) தொடர்புடைய அபாயங்களைப் பயனர்கள் புரிந்துகொள்கிறார்கள். வில்லை இருப்பை நம்பியிருக்கும் ஒப்பந்தங்கள், பெரிய நிதிகளைக் கொண்ட தாக்குபவர்கள் அல்லது ஃபிளாஷ் கடன்கள் மூலமான தாக்குதல்களைக் கவனமாகக் கருத்தில் கொள்ள வேண்டும்.
- வில்லை ஃபிளாஷ் அச்சிடுதலை (flash minting) அனுமதிக்காது. ஃபிளாஷ் அச்சிடுதல் இருப்பு மற்றும் மொத்த விநியோகத்தில் கணிசமான ஏற்ற இறக்கங்களுக்கு வழிவகுக்கும், இதற்கு வில்லையின் செயல்பாட்டில் கடுமையான மற்றும் விரிவான அளவுமீறல் (overflow) சரிபார்ப்புகள் தேவைப்படுகின்றன.