ஆதாயங்கள்:
- நிரூபிக்கப்பட்ட நூலகங்களின் அடிப்படையில் கட்டமைப்புகள், சோதனைகள் மற்றும் மறுபரிசீலனை வரைவுகளை உருவாக்க செயற்கை நுண்ணறிவைப் பயன்படுத்தும் திறன் (எ.கா. OpenZeppelin) மற்றும் உற்பத்தி பாதுகாப்புக்கு மனிதர்கள் உத்தரவாதம் அளிக்கிறார்கள் என்பதைப் புரிந்துகொள்வது
- தொகுத்தல், சோதனை மற்றும் டெஸ்ட்நெட் மூலம் செயற்கை நுண்ணறிவால் உருவாக்கப்பட்ட குறியீடு பதிப்பு, முறை மற்றும் அணுகல் கட்டுப்பாட்டை சரிபார்க்கும் திறன்
- தொகுத்தல் என்பது பாதுகாப்பாக இருப்பதைக் குறிக்காது மற்றும் டெஸ்ட்நெட் மற்றும் தணிக்கை அவசியம் என்பதை வேறுபடுத்திப் பார்க்க முடியும்.
ஸ்மார்ட் ஒப்பந்தத்தை எழுதுவது சாதாரண மென்பொருளிலிருந்து வேறுபட்டது: நீங்கள் எழுதும் குறியீடு பொது, மாறாதது மற்றும் பணத்தை நேரடியாக நகர்த்தும் நிரலாகும். இந்த யூனிட்டில், ஸ்மார்ட் காண்ட்ராக்ட் டெவலப்மென்ட் அசிஸ்டெண்ட்டாக AIஐ எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக் கொள்வீர்கள்; வரைவுத் தயாரிப்பில் இருந்து சோதனை எழுதுவது வரை, முறை திரும்ப அழைப்பதில் இருந்து எரிவாயு (பரிவர்த்தனை கட்டணம்) தேர்வுமுறை வரை கற்றுக்கொள்வோம். ஆனால் ஆரம்பத்தில் இருந்தே தெளிவாக இருக்கட்டும்: AI வரைபடங்களை உருவாக்குகிறது; உற்பத்திக்கு செல்லும் பாதுகாப்பான குறியீட்டை மனிதர்கள் உறுதி செய்கிறார்கள்.
முதல் நிலை: மொழி மற்றும் சூழல்
மிகவும் பொதுவான ஸ்மார்ட் ஒப்பந்த மொழி சாலிடிட்டி (Ethereum மற்றும் EVM இன் மொழி - Ethereum மெய்நிகர் இயந்திரம், ஒப்பந்தங்கள் இயங்கும் மெய்நிகர் இயந்திரம் - இணக்கமான சங்கிலிகள்). இதற்கு மாற்றாக வைப்பர் (பைத்தான் போன்ற மொழி, இது மிகவும் கட்டுப்படுத்தப்பட்ட மற்றும் படிக்கக்கூடியதாக இருப்பதை நோக்கமாகக் கொண்டது). உங்கள் குறியீடு வாயுவைப் பயன்படுத்துகிறது (ஒவ்வொரு பரிவர்த்தனைக்கும் பிளாக்செயினுக்கான செலவு); திறமையற்ற குறியீடு விலை உயர்ந்தது. AI க்கு நீங்கள் கொடுக்கும் சூழலில் இந்த விதிமுறைகளை தெளிவாக வைத்திருப்பது துல்லியமான வெளியீட்டைப் பெறுவதற்கு முக்கியமாகும்.
AI மிகவும் மதிப்புமிக்கது "புதிதாக எழுதுவதில்" அல்ல, ஆனால் கட்டமைப்பை + நல்ல அச்சு: தரநிலைகள்-இணக்கமான தொடக்கம், உங்கள் நிபுணத்துவத்தைச் சேர்க்கும் ஒரு வரைபடமாகும்.
குறியீட்டில் AI ஐப் பயன்படுத்துவதற்கான அடுக்குகள்
1. எலும்புக்கூடுகளை உருவாக்குதல். AI ஆனது ஒரு நிலையான டோக்கனின் (ERC-20) அல்லது NFT (ERC-721 - ஒரு தனித்துவமான டிஜிட்டல் சொத்து தரநிலை) எலும்புக்கூட்டை விரைவாக சுரங்கமாக்குகிறது. ஆனால் AI ஐ நிரூபிக்கப்பட்ட நூலகத்தைப் பயன்படுத்துவதை உறுதிப்படுத்திக் கொள்ளுங்கள்: எடுத்துக்காட்டாக, OpenZeppelin (சமூகத்தின் நம்பகமான, தணிக்கை செய்யப்பட்ட நிலையான ஒப்பந்த நூலகம்). புதிதாக எழுதப்பட்ட பாதுகாப்பை விட சோதனை செய்யப்பட்ட தொகுதியைப் பயன்படுத்துவதே விதி.
2. செயல்பாடு விளக்கம் மற்றும் மதிப்பாய்வு. ஏற்கனவே உள்ள செயல்பாட்டை AIக்கு விளக்குவது, தர்க்கப் பிழைகளை முன்கூட்டியே கண்டறிய உங்களை அனுமதிக்கிறது.
3. சோதனை உருவாக்கம். எட்ஜ் கேஸ்களுக்கான சோதனை நிகழ்வுகளை உருவாக்குவதில் AI சிறப்பாக உள்ளது: பூஜ்ஜிய உள்ளீடு, மிகப் பெரிய எண், அங்கீகரிக்கப்படாத அழைப்பாளர், மீண்டும் மீண்டும் அழைப்பு. ஒருவர் தவிர்க்கும் காட்சிகளை இது நினைவூட்டுகிறது.
4. எரிவாயு மற்றும் வாசிப்புத்திறன். தேவையற்ற சேமிப்பு எழுதுதல் போன்ற விலையுயர்ந்த வடிவங்களை AI கொடியிடுகிறது மற்றும் மாற்றுகளை பரிந்துரைக்கிறது.
குறிப்பு: "OpenZeppelin இன் தணிக்கை செய்யப்பட்ட ஒப்பந்தங்களை உருவாக்கவும், புதிதாக பாதுகாப்பை மீண்டும் எழுதவும்" AIக்கு அறிவுறுத்தவும். சோதனை செய்யப்பட்ட நூலகத்தைப் பயன்படுத்துவதை விட, அசல் பாதுகாப்புக் குறியீட்டை எழுதுவது AI க்கு மிகவும் ஆபத்தானது.
பலவீனமான வரியில் / வலுவான வரியில்
பலவீனமான உடனடி:
எனக்கு ஒரு டோக்கன் ஒப்பந்தத்தை எழுதுங்கள்.
இந்த அறிவுறுத்தல் ஆபத்தானது: எந்த தரநிலை, எந்த சங்கிலி, எந்த நூலகம், எந்த பாதுகாப்பு தேவை என்பது தெளிவாக இல்லை. AI சீரற்ற, காலாவதியான அல்லது பாதுகாப்பற்ற குறியீட்டை உருவாக்குகிறது.
சக்திவாய்ந்த தூண்டுதல்:
உங்கள் பங்கு: மூத்த சாலிடிட்டி டெவலப்பர். EVM இணக்கமான சங்கிலிக்கான ERC-20 டோக்கன் வரைவை உருவாக்கவும். விதிகள்:- OpenZeppelin இன் தணிக்கை செய்யப்பட்ட ERC20 மற்றும் சொந்த ஒப்பந்தங்களின் அடிப்படையில்.- Solidity பதிப்பு மற்றும் உரிமம் (SPDX) வரியை வெளிப்படையாக எழுதவும்.- உரிமையாளருக்கு மட்டுமே புதினா செய்ய அனுமதி உள்ளது; எல்லையற்ற அழுத்தத்திற்கு எதிராக ஒரு தொப்பியைச் சேர்க்கவும். - ஒவ்வொரு செயல்பாட்டிற்கும் NatSpec கருத்தைச் சேர்க்கவும். - புதிதாக பாதுகாப்பை எழுதுங்கள்; நிலையான தொகுதியைப் பயன்படுத்தவும். - முடிவில் ஒரு எச்சரிக்கையைச் சேர்க்கவும்: "இது வரைவு; தணிக்கை மற்றும் சோதனை தேவை". நீங்கள் உறுதியாக தெரியாத பகுதிகளை // TODO உடன் குறிக்கவும்.
வேறுபாடு: வலுவான ப்ராம்ட் தெளிவான பங்கு, தரநிலை, நூலகம், பாதுகாப்பு எல்லை, ஆவணப்படுத்தல் மற்றும் சரிபார்ப்பு எதிர்பார்ப்புகளை வழங்குகிறது.
நகலெடுக்கக்கூடிய நான்கு வார்ப்புருக்கள்
1) தரநிலை அடிப்படையிலான எலும்புக்கூடு:
உங்கள் பங்கு: சாலிடிட்டி டெவலப்பர். OpenZeppelin தணிக்கை செய்யப்பட்ட நூலகத்தின் அடிப்படையில் [ERC-20 / ERC-721 / staking] ஒப்பந்த கட்டமைப்பை உருவாக்கவும். SPDX உரிமம் மற்றும் நடைமுறை பதிப்பை எழுதவும். ஒவ்வொரு வெளிப்புற செயல்பாட்டிற்கும் அணுகல் கட்டுப்பாட்டைச் சேர்க்கவும் (யார் அழைக்கலாம்). பாதுகாப்பை புதுப்பித்தல்; நிலையான தொகுதிகள் பயன்படுத்தவும். இது ஒரு வரைவு.
2) செயல்பாடு மதிப்பாய்வு:
ஒரு மூத்த டெவலப்பர் போன்ற பின்வரும் செயல்பாட்டை ஆராயவும்: அது என்ன செய்கிறது, எந்த நிலைகளை மாற்றுகிறது, யார் அதை அழைக்கலாம்? சாத்தியமான தர்க்கப் பிழைகள் மற்றும் பாதுகாப்பு அபாயங்களைக் கருதுகோள் எனக் குறிக்கவும், ஒவ்வொன்றையும் குறியீட்டில் உள்ள ஒரு வரியுடன் இணைக்கவும். "பாதுகாப்பானது" என்று நேரடியாகச் சொல்லாதீர்கள்; கவனத்தை ஈர்க்கும் புள்ளிகளை பட்டியலிடுங்கள்.
3) சோதனை காட்சி வரைவு:
இந்த ஒப்பந்தத்திற்கான சோதனை வழக்குகளை முன்மொழியுங்கள் (ஃபவுண்டரி/ஹர்தாட்டிற்கான வரைவாக இருக்கலாம்). குறிப்பாக வரம்புக்குட்பட்ட நிகழ்வுகளை உள்ளடக்கியது: பூஜ்ஜிய உள்ளீடு, மிகப் பெரிய எண், அங்கீகரிக்கப்படாத அழைப்பு, மீண்டும் அழைப்பு, போதுமான நிதி இல்லை. ஒவ்வொரு சோதனையும் எதை உறுதிப்படுத்துகிறது என்பதை எழுதுங்கள்.
4) எரிவாயு மற்றும் வாசிப்புத்திறன் மதிப்பாய்வு:
இந்த ஒப்பந்தத்தில், எரிவாயு செலவைக் குறைக்கக்கூடிய வடிவங்களைக் குறிக்கவும்: தேவையற்ற சேமிப்பக எழுத்து, சுழற்சியில் வெளிப்புற அழைப்பு, மீண்டும் மீண்டும் கணக்கிடுதல். ஒவ்வொரு பரிந்துரையிலும் முன்/பின் வேறுபாட்டை விளக்குங்கள். பாதுகாப்பை மீறும் மேம்படுத்தல்களைப் பரிந்துரைக்கவும்; தெளிவாக தெரியவில்லை என்றால், "ஆடிட்டரிடம் கேளுங்கள்" என்று சொல்லுங்கள்.
மூன்று சிறிய வழக்குகள் (எண்களில்)
வழக்கு 1 - எலும்புக்கூடு 4 மணிநேரம் சேமிக்கப்பட்டது. ஒரு குழு 30 நிமிடங்களில் AI உடனான தணிக்கை செய்யப்பட்ட நூலக அடிப்படையிலான வெஸ்டிங் ஒப்பந்தத்தின் எலும்புக்கூட்டை வெட்டி எடுத்தது; இது கைமுறையாக ~4 மணிநேரம் எடுத்தது. குழு பாதுகாப்பு மற்றும் சோதனைக்கு நேரம் ஒதுக்கியது. ஆதாயம் கிடைத்தது பாதுகாப்பை மாற்றுவதால் அல்ல, மாறாக கடினமான கட்டமைப்பை விரைவுபடுத்துவதிலிருந்து.
வழக்கு 2 - காலாவதியான பதிப்பு பொறி. AI ஆனது மூல ஈதரை பரிமாற்றம் மூலம் அனுப்பும் ஒரு வடிவத்தை உருவாக்கியது, பயிற்சி தரவு காலாவதியானதால் இது பரிந்துரைக்கப்படாது. டெவலப்பர் இதைக் கவனித்தார் மற்றும் தற்போதைய அழைப்பு அடிப்படையிலான மற்றும் மறுபதிவு-பாதுகாக்கப்பட்ட முறைக்கு மாற்றினார். பாடம்: AI இன் லைப்ரரி/பேட்டர்ன் எப்போதும் புதுப்பித்த நிலையில் இருப்பது உறுதி செய்யப்படுகிறது; பயிற்சி கட்ஆஃப் தேதிக்கு அப்பால் AIக்கு தெரியாது.
வழக்கு 3 - சோதனை வரைவு மறைக்கப்பட்ட பிழை. AI தயாரித்த "அங்கீகரிக்கப்படாத அழைப்பாளர்" சோதனையானது, டெவலப்பர் ஒரு செயல்பாட்டில் அணுகல் கட்டுப்பாட்டை மறந்துவிட்டதை வெளிப்படுத்தியது. உரிமையாளர் மட்டும் 1 வரியைக் காணவில்லை, டெஸ்ட்நெட்டில் 5 நிமிடங்களில் பிடிபட்டார்; மெயின்நெட்டில் நிதி இழப்பு ஏற்பட்டிருக்கலாம். பாடம்: AI சோதனையில் மனித குருட்டுப் புள்ளியை உள்ளடக்கியது.
AI உடன் பாதுகாப்பு முறைகளை நினைவில் வைத்தல்
சரிபார்ப்பு பட்டியல் போன்ற அறியப்பட்ட பாதிப்பு முறைகளை உங்களுக்கு நினைவூட்டுவதில் AI சிறந்தது. மிகவும் பொதுவான வடிவங்கள்:
- மறுபிரவேசம்: நிலையைப் புதுப்பிக்காமல் வெளிப்புற அழைப்பைச் செய்தல். தீர்வு: காசோலைகள்-விளைவுகள்-தொடர்புகள் ஒழுங்கு, மறுபதிவு காவலர்.
- அணுகல் கட்டுப்பாடு இல்லாமை: முக்கியமான செயல்பாட்டை யார் வேண்டுமானாலும் அழைக்கலாம்.
- முழு எண் வழிதல்/கீழ் வீழ்ச்சி: நவீன சாலிடிட்டி பெரும்பாலானவற்றைப் பிடிக்கிறது, ஆனால் குறைந்த-நிலை குறியீட்டில் இன்னும் ஆபத்து உள்ளது.
- போதுமான உள்ளீடு சரிபார்ப்பு: பூஜ்ஜிய முகவரி, பூஜ்ஜிய அளவு கட்டுப்பாடு.
- ஆரக்கிள் சார்பு: வெளிப்புற தரவுகளில் குருட்டு நம்பிக்கை (விலை போன்றவை).
கவனம்: AI இந்த பட்டியலை நினைவுபடுத்த முடியும், ஆனால் பட்டியலில் உள்ள உருப்படி உங்கள் குறிப்பிட்ட குறியீட்டில் உள்ளதா என்பதை உத்தரவாதம் செய்ய முடியாது. சரிபார்ப்பு பட்டியல் ஒரு தொடக்கமாகும்; இது கொள்கலன் கட்டுப்பாட்டுக்கு மாற்றாக இல்லை.
சூழலை சரியாகப் பெறுதல்: AI இலிருந்து நல்ல குறியீட்டின் ரகசியம்
AI உருவாக்கும் குறியீட்டின் தரம், நீங்கள் கொடுக்கும் சூழலின் தரத்தைப் பொறுத்தது. Web3 இல் இது மிகவும் முக்கியமானது, ஏனெனில் ஒரு சிறிய விவரம் (எந்த சங்கிலி, எந்த சாலிடிட்டி பதிப்பு, எந்த டோக்கன் தரநிலை) முழு வெளியீட்டையும் மாற்றுகிறது. ஒரு நல்ல சூழலில் பின்வருவன அடங்கும்:
- இலக்கு சங்கிலி மற்றும் சூழல்: Ethereum மெயின்நெட் அல்லது லேயர் 2 (மெயின்செயினின் மேல் இயங்கும் மலிவான சைட்செயின்)? எரிவாயு விலை மற்றும் சில அம்சங்கள் சங்கிலியால் மாறுபடும்.
- பதிப்பு மற்றும் நூலகம்: எந்த சாலிடிட்டி பதிப்பு, எந்த ஓபன்செப்பெலின் பதிப்பு? பதிப்பு எதுவும் குறிப்பிடப்படவில்லை எனில், AI காலாவதியான, நிராகரிக்கப்பட்ட வடிவங்களை உருவாக்கலாம்.
- பாதுகாப்பு தேவைகள்: தொப்பி உள்ளதா, அதை இடைநிறுத்த முடியுமா, அதிகரிக்க முடியுமா? இவற்றை ஆரம்பத்திலிருந்தே சொல்ல வேண்டும்.
- கட்டுப்பாடுகள்: "அசெம்பிளியைப் பயன்படுத்த வேண்டாம்", "வெளிப்புற அழைப்பைத் தவிர்க்கவும்", "வாயுவை மேம்படுத்தவும் ஆனால் வாசிப்புத்திறனைப் பராமரிக்கவும்" போன்ற தெளிவான வரம்புகள்.
மற்றொரு சக்திவாய்ந்த நுட்பம் என்னவென்றால், முதலில் திட்டத்திற்காக AI யிடம் கேட்கவும், பின்னர் குறியீடு: "முதலில் இந்த ஒப்பந்தத்தின் செயல்பாடுகள் மற்றும் ஒவ்வொன்றும் என்ன செய்ய வேண்டும் என்பதை பட்டியலிடுங்கள்; நான் ஒப்புதல் அளித்தவுடன் குறியீட்டை எழுதுங்கள்." இது தவறான திசையில் செல்லும் AI ஐ முன்கூட்டியே பிடிக்கிறது மற்றும் கட்டடக்கலை முடிவைத் தக்கவைத்துக்கொள்ள உங்களை அனுமதிக்கிறது.
குறிப்பு: "ஏன் இந்தக் குறியீட்டை இப்படி எழுதுகிறீர்கள்?" என்று AIயிடம் கேளுங்கள். கேட்க. பகுத்தறிவை விளக்குவது உங்கள் கற்றலை விரைவுபடுத்தும் மற்றும் ஏதேனும் தர்க்கரீதியான பிழைகளை மேற்பரப்பிற்கு கொண்டு வரும் (எ.கா. தவறான பாதுகாப்பு அனுமானம்). அதன் சொந்த குறியீட்டைப் பாதுகாக்க முடியாத AI இன் வெளியீட்டை நம்ப வேண்டாம்.
பொதுவான தவறுகள்
- புதிதாக AI இல் பாதுகாப்பை வைப்பது. பரிசோதிக்கப்பட்ட நூலகத்தைப் பயன்படுத்தவும்.
- AI ஆல் தயாரிக்கப்பட்ட பதிப்பு/வடிவத்தை உறுதிப்படுத்தவில்லை. பயிற்சி தரவு பழையதாக இருக்கலாம்.
- டெஸ்ட்நெட்டைக் கடந்து செல்கிறது. ஒவ்வொரு வரைவும் நேரலைக்குச் செல்வதற்கு முன் சோதனை நெட்வொர்க்கில் இயங்க வேண்டும்.
- NatSpec/ஆவணத்தைச் சேர்க்கவில்லை. ஆய்வு மற்றும் பராமரிப்பு கடினமாகிறது.
- "இது தொகுக்கப்பட்டுள்ளது, எனவே இது பாதுகாப்பானது" என்பது தவறான கருத்து. தொகுக்கப்படுவது பாதுகாப்பாக இருப்பது என்று அர்த்தமல்ல.
- அணுகல் கட்டுப்பாட்டை மறந்துவிடுகிறது. இது மிகவும் பொதுவான மற்றும் விலையுயர்ந்த தவறுகளில் ஒன்றாகும்.
சுருக்கமாக
- ஸ்மார்ட் ஒப்பந்த எழுத்தில், AI கட்டமைப்புகள், சோதனைகள் மற்றும் மறுஆய்வு வரைவுகளை உருவாக்குகிறது; உற்பத்தி பாதுகாப்புக்கு மனித உத்தரவாதம்.
- பாதுகாப்பை புதிதாக உருவாக்காமல், நிரூபிக்கப்பட்ட நூலகங்களின் அடிப்படையில் (எ.கா. OpenZeppelin).
- YZ ஆல் தயாரிக்கப்பட்ட பதிப்புகள் மற்றும் வடிவங்களின் புதுப்பிப்பு எப்போதும் உறுதிப்படுத்தப்படுகிறது.
- மனித குருட்டுப் புள்ளிகளைக் கைப்பற்றுவதில் சோதனை ஸ்டப்கள் மதிப்புமிக்கவை (வரம்பு வழக்குகள், அணுகல் கட்டுப்பாடு).
- தொகுக்கப்பட்டது என்பது பாதுகாப்பாக இருப்பது அல்ல; testnet மற்றும் தணிக்கை அவசியம்.
விண்ணப்ப பணி
எளிய ERC-20 டோக்கனுக்கு, மேலே உள்ள "தரநிலை அடிப்படையிலான எலும்புக்கூடு" ப்ராம்ட்டைப் பயன்படுத்தி வரைவை உருவாக்கவும். பிறகு: (1) அது சரிபார்க்கப்பட்ட நூலகத்தைப் பயன்படுத்துகிறதா எனச் சரிபார்க்கவும், (2) அணுகல் கட்டுப்பாடுகளைச் சரிபார்க்கவும், (3) "சோதனை வழக்கு வரைவு" வரியில் சோதனைகளை உருவாக்கி, உண்மையில் ஒரு முரட்டு-அழைப்பாளர் சோதனையையாவது இயக்கவும். AI தவறவிட்ட ஒரு பாதுகாப்பு புள்ளியையாவது கண்டுபிடித்து கவனிக்கவும்.
சரிபார்ப்பு பட்டியல்
- [ ] நான் ப்ராம்ட்டில் தரத்தையும் சங்கிலியையும் தெளிவாகக் கூறியுள்ளேன்.
- [ ] நான் நிரூபிக்கப்பட்ட நூலக அடிப்படையிலான தயாரிப்பை விரும்பினேன்.
- [ ] SPDX உரிமம் மற்றும் நடைமுறை பதிப்பு உள்ளது.
- [ ] ஒவ்வொரு முக்கியமான செயல்பாட்டிலும் அணுகல் கட்டுப்பாடு உள்ளது.
- [ ] வரம்புக்குட்பட்ட வழக்குகளுக்கான சோதனைகளை உருவாக்கி இயக்கினேன்.
- [ ] நூலகம்/வடிவம் புதுப்பித்த நிலையில் இருப்பதை உறுதி செய்தேன்.
- [ ] தணிக்கை மற்றும் சோதனைக்கான குறியீட்டை நான் குறித்தேன்; மெயின்நெட்டில் நான் அதை மேற்பார்வை செய்யவில்லை.