लाभ:
- प्रमाणित पुस्तकालयहरू (जस्तै OpenZeppelin) मा आधारित फ्रेमवर्क, परीक्षण र समीक्षा ड्राफ्टहरू उत्पादन गर्न कृत्रिम बुद्धिमत्ता प्रयोग गर्ने क्षमता र मानिसहरूले उत्पादन सुरक्षाको ग्यारेन्टी गर्छन् भनेर बुझ्दछन्।
- संकलन, परीक्षण र टेस्टनेट मार्फत कृत्रिम बुद्धिमत्ता द्वारा उत्पादित कोड संस्करण, ढाँचा र पहुँच नियन्त्रण प्रमाणित गर्ने क्षमता
- त्यो संकलन छुट्याउन सक्षम हुनुको अर्थ सुरक्षित हुनु होइन र टेस्टनेट र अडिटिङ आवश्यक छ।
स्मार्ट अनुबंध लेख्नु सामान्य सफ्टवेयर भन्दा फरक छ: तपाईंले लेख्नुहुने कोड सार्वजनिक, अपरिवर्तनीय, र प्रत्यक्ष रूपमा पैसा सार्ने प्रोग्राम हो। यस इकाईमा, तपाईंले स्मार्ट अनुबंध विकास सहायकको रूपमा AI कसरी प्रयोग गर्ने भनेर सिक्नुहुनेछ; हामी मस्यौदा उत्पादन देखि परीक्षण लेखन सम्म, ढाँचा सम्झना देखि ग्यास (लेनदेन शुल्क) अनुकूलन सम्म सिक्नेछौं। तर सुरुदेखि नै स्पष्ट बनौं: एआईले खाका उत्पादन गर्छ; मानिसले सुरक्षित कोड सुनिश्चित गर्दछ जुन उत्पादनमा जान्छ।
पहिलो आधार: भाषा र वातावरण
सबैभन्दा सामान्य स्मार्ट अनुबंध भाषा Solidity (Ethereum र EVM को भाषा - Ethereum भर्चुअल मेसिन, भर्चुअल मेसिन जसमा अनुबंधहरू चल्छन् - मिल्दो चेन)। वैकल्पिक Vyper हो (एक पाइथन-जस्तो भाषा जसको उद्देश्य अधिक सीमित र पढ्न योग्य छ)। तपाईंको कोडले ग्याँस खपत गर्छ (ब्लकचेनमा प्रत्येक लेनदेनको लागत); अप्रभावी कोड महँगो छ। तपाईंले AI लाई दिनुभएको सन्दर्भमा यी सर्तहरू स्पष्ट राख्नु भनेको सही आउटपुट प्राप्त गर्ने कुञ्जी हो।
जहाँ AI सबैभन्दा मूल्यवान छ त्यो "स्क्र्याचबाट लेख्ने" मा होइन तर फ्रेमवर्क + राम्रो मोल्ड उत्पादन गर्नमा हो: एक मानक-अनुरूप सुरुवात, तपाईंको विशेषज्ञता थप्ने खाका।
कोडिङमा AI प्रयोग गर्ने तहहरू
1. कंकाल उत्पन्न गर्दै। AI ले चाँडै मानक टोकन (ERC-20) वा NFT (ERC-721 — एक अद्वितीय डिजिटल सम्पत्ति मानक) को कंकाल खन्दछ। तर AI लाई प्रमाणित पुस्तकालय प्रयोग गर्न निश्चित हुनुहोस्: उदाहरणका लागि, OpenZeppelin (समुदायको विश्वसनीय, अडिट गरिएको मानक अनुबंध पुस्तकालय)। नियम स्क्र्याचबाट सुरक्षा लेख्नु भन्दा परीक्षण गरिएको ब्लक प्रयोग गर्नु हो।
2. प्रकार्य विवरण र समीक्षा। एआईमा अवस्थित प्रकार्यको व्याख्या गर्दा तपाईंलाई तर्क त्रुटिहरू चाँडै पत्ता लगाउन अनुमति दिन्छ।
3. परीक्षण उत्पादन। एआई एज केसहरूका लागि परीक्षण केसहरू उत्पन्न गर्न राम्रो छ: शून्य इनपुट, धेरै ठूलो संख्या, अनाधिकृत कलर, दोहोर्याइएको कल। यसले एउटा छाड्ने परिदृश्यहरू मध्ये एकलाई सम्झाउँछ।
4. ग्यास र पठनीयता। AI ले महँगो ढाँचाहरू जस्तै अनावश्यक भण्डारण लेख्छ र विकल्पहरू सुझाव दिन्छ।
संकेत: AI लाई "OpenZeppelin को अडिट गरिएका अनुबंधहरूमा निर्माण गर्न, स्क्र्याचबाट सुरक्षा पुन: लेख्न" निर्देशन दिनुहोस्। परीक्षण गरिएको पुस्तकालय प्रयोग गर्नु भन्दा मूल सुरक्षा कोड लेख्नु AI को लागि धेरै जोखिमपूर्ण छ।
कमजोर प्रम्प्ट / बलियो प्रम्प्ट
कमजोर प्रम्प्ट:
मलाई एउटा टोकन सम्झौता लेख्नुहोस्।
यो प्रम्प्ट खतरनाक छ: कुन मानक, कुन चेन, कुन पुस्तकालय, कुन सुरक्षा आवश्यकता स्पष्ट छैन। AI ले अनियमित, सम्भवतः पुरानो वा असुरक्षित कोड उत्पन्न गर्दछ।
शक्तिशाली प्रम्प्ट:
तपाईंको भूमिका: वरिष्ठ एकता विकासकर्ता। EVM मिल्ने चेनका लागि ERC-20 टोकन ड्राफ्ट उत्पन्न गर्नुहोस्। नियमहरू: - OpenZeppelin को अडिट गरिएको ERC20 र स्वामित्व योग्य अनुबंधहरूमा आधारित।- ठोस संस्करण र इजाजतपत्र (SPDX) लाइन स्पष्ट रूपमा लेख्नुहोस्।- केवल मालिकसँग टकसाल गर्ने अनुमति छ; अनन्त दबाइ विरुद्ध टोपी थप्नुहोस्। - प्रत्येक प्रकार्यमा NatSpec टिप्पणी थप्नुहोस्। - स्क्र्याचबाट सुरक्षा लेख्नुहोस्; मानक ब्लक प्रयोग गर्नुहोस्। - अन्त्यमा चेतावनी थप्नुहोस्: "यो मस्यौदा हो; अडिटिङ र परीक्षण आवश्यक छ"। // TODO सँग तपाई निश्चित नभएका क्षेत्रहरूलाई चिन्ह लगाउनुहोस्।
भिन्नता: बलियो प्रम्प्टले स्पष्ट भूमिका, मानक, पुस्तकालय, सुरक्षा सीमा, कागजात र प्रमाणीकरण अपेक्षाहरू दिन्छ।
चार प्रतिलिपि गर्न मिल्ने टेम्प्लेटहरू
1) मानक आधारित कंकाल:
तपाईंको भूमिका: एकता विकासकर्ता। OpenZeppelin अडिट गरिएको पुस्तकालयमा आधारित [ERC-20 / ERC-721 / staking] सम्झौता फ्रेमवर्क उत्पन्न गर्नुहोस्। SPDX लाइसेन्स र pragma संस्करण लेख्नुहोस्। प्रत्येक बाह्य प्रकार्यमा पहुँच नियन्त्रण (कसले कल गर्न सक्छ) थप्नुहोस्। सुरक्षा पुन: आविष्कार; मानक ब्लकहरू प्रयोग गर्नुहोस्। यो मस्यौदा हो।
2) कार्य समीक्षा:
एक वरिष्ठ विकासकर्ता जस्तै निम्न प्रकार्य जाँच गर्नुहोस्: यसले के गर्छ, यसले कुन राज्यहरू परिवर्तन गर्छ, कसले यसलाई कल गर्न सक्छ? सम्भावित तर्क त्रुटिहरू र सुरक्षा जोखिमहरूलाई HYPOTHESIS को रूपमा चिन्ह लगाउनुहोस्, प्रत्येकलाई कोडको लाइनमा लिङ्क गर्नुहोस्। सिधै "सुरक्षित" नभन्नुहोस्; केवल ध्यान बिन्दुहरू सूचीबद्ध गर्नुहोस्।
3) परीक्षण परिदृश्य मस्यौदा:
यस अनुबंधको लागि परीक्षण केसहरू प्रस्ताव गर्नुहोस् (फाउन्ड्री/हर्दहतको लागि मस्यौदा हुन सक्छ)। विशेष रूपमा कभर सीमा केसहरू: शून्य इनपुट, धेरै ठूलो संख्या, अनाधिकृत कल, पुन: प्रवेश कल, अपर्याप्त कोष। प्रत्येक परीक्षणले के पुष्टि गर्छ लेख्नुहोस्।
4) ग्यास र पठनीयता समीक्षा:
यस सम्झौतामा, ग्यास लागत घटाउन सक्ने ढाँचाहरू चिन्ह लगाउनुहोस्: अनावश्यक भण्डारण लेखन, लुपमा बाह्य कल, दोहोरिने गणना। प्रत्येक सुझावमा पहिले/पछिको भिन्नताको व्याख्या गर्नुहोस्। सुरक्षा-ब्रेकिंग अप्टिमाइजेसनहरू सिफारिस गर्नुहोस्; यदि यो स्पष्ट छैन भने, "लेखापरीक्षकलाई सोध्नुहोस्" भन्नुहोस्।
तीनवटा सानो केसहरू (संख्यामा)
केस 1 - स्केलेटनले 4 घण्टा बचत गर्यो। एउटा टोलीले ३० मिनेटमा एआईसँग अडिट गरिएको पुस्तकालयमा आधारित भेस्टिङ सम्झौताको कंकाल खन्यो; म्यानुअल रूपमा ~4 घण्टा लाग्यो। टोलीले सुरक्षा र परीक्षणमा समय लगायो। लाभ सुरक्षा स्थानान्तरणबाट होइन, तर थकाऊ फ्रेमवर्कलाई गति दिनबाट आएको हो।
केस २ - पुरानो संस्करण जाल। AI ले एउटा ढाँचा उत्पादन गर्यो जसले स्थानान्तरणद्वारा कच्चा ईथर पठाउँछ, जुन अब सिफारिस गरिएको छैन किनभने प्रशिक्षण डेटा पुरानो भएको छ। विकासकर्ताले यो याद गर्नुभयो र यसलाई हालको कल-आधारित र पुन: प्रवेश-सुरक्षित ढाँचामा परिवर्तन गर्नुभयो। पाठ: AI को पुस्तकालय/ढाँचा सधैं अद्यावधिक भएको पुष्टि हुन्छ; AI लाई प्रशिक्षण कटअफ मिति भन्दा बाहिर थाहा छैन।
केस ३ - परीक्षण ड्राफ्ट लुकेको बग पप भयो। AI ले उत्पादन गरेको "अनधिकृत कलर" परीक्षणले विकासकर्ताले समारोहमा पहुँच नियन्त्रण बिर्सेको कुरा पत्ता लगायो। केवल मालिकले 1 लाइन हरायो, 5 मिनेटमा टेस्टनेटमा समातियो; मेननेटमा कोषको हानि हुन सक्छ। पाठ: AI ले परीक्षणमा मानव अन्धो स्थानलाई समेट्छ।
AI सँग सुरक्षा ढाँचाहरू सम्झँदै
AI ले तपाईंलाई चेकलिस्ट जस्ता ज्ञात कमजोरी ढाँचाहरू सम्झाउन राम्रो छ। सबैभन्दा सामान्य ढाँचाहरू:
- Reentrancy: स्थिति अद्यावधिक नगरी बाह्य कल गर्दै। समाधान: चेक-प्रभाव-अन्तर्क्रिया आदेश, पुन: प्रवेश गार्ड।
- पहुँच नियन्त्रणको अभाव: जो कोहीले महत्वपूर्ण प्रकार्यलाई कल गर्न सक्छ।
- Integer overflow/underfall: Modern Solidity ले ती मध्ये धेरैलाई समात्छ, तर अझै पनि निम्न-स्तर कोडमा जोखिम हुन्छ।
- अपर्याप्त इनपुट प्रमाणीकरण: शून्य ठेगाना, शून्य मात्रा नियन्त्रण।
- ओरेकल निर्भरता: बाह्य डेटा (जस्तै मूल्य) मा अन्धो विश्वास।
ध्यान दिनुहोस्: AI ले यो सूची सम्झन सक्छ, तर यसले ग्यारेन्टी गर्न सक्दैन कि सूचीमा रहेको वस्तु तपाईंको विशिष्ट कोडमा छ कि छैन। चेकलिस्ट एक सुरुवात हो; यो कन्टेनर नियन्त्रणको लागि प्रतिस्थापन होइन।
सही सन्दर्भ प्राप्त गर्दै: AI बाट राम्रो कोडको रहस्य
AI ले उत्पादन गर्ने कोडको गुणस्तर सीधै तपाईंले दिनुभएको सन्दर्भको गुणस्तरमा निर्भर गर्दछ। Web3 मा यो विशेष गरी महत्वपूर्ण छ किनभने एउटा सानो विवरण (कुन चेन, कुन सोलिडिटी संस्करण, कुन टोकन मानक) ले सम्पूर्ण आउटपुट परिवर्तन गर्दछ। राम्रो सन्दर्भ समावेश छ:
- लक्ष्य चेन र वातावरण: इथरियम मेननेट वा लेयर २ (सस्तो साइडचेन जुन मेनचेनको शीर्षमा चल्छ)? ग्याँस लागत र केहि सुविधाहरू चेन द्वारा भिन्न हुन्छन्।
- संस्करण र पुस्तकालय: कुन ठोस संस्करण, कुन OpenZeppelin संस्करण? यदि कुनै संस्करण निर्दिष्ट गरिएको छैन भने, AI ले पुरानो, बहिष्कृत ढाँचाहरू उत्पादन गर्न सक्छ।
- सुरक्षा आवश्यकताहरू: त्यहाँ क्याप छ, के यसलाई पज गर्न सकिन्छ, यसलाई बढाउन सकिन्छ? यी कुराहरू सुरुदेखि नै भन्नु पर्छ।
- बाधाहरू: स्पष्ट सीमाहरू जस्तै "एसेम्बली प्रयोग नगर्नुहोस्", "बाह्य कललाई बेवास्ता गर्नुहोस्", "ग्यास अप्टिमाइज गर्नुहोस् तर पढ्न योग्यता कायम राख्नुहोस्"।
अर्को शक्तिशाली प्रविधी भनेको एआईलाई पहिले योजनाको लागि सोध्नु हो, त्यसपछि कोड: "पहिले यो सम्झौताको कार्यहरू सूचीबद्ध गर्नुहोस् र प्रत्येकले के गर्नेछ; मैले स्वीकृत गरेपछि कोड लेख्नुहोस्।" यसले AI लाई गलत दिशामा छिट्टै समात्छ र तपाईंलाई वास्तु निर्णयलाई कायम राख्न अनुमति दिन्छ।
संकेत: AI लाई सोध्नुहोस् "तपाईंले यो कोड यसरी किन लेख्नुभयो?" सोध्नुहोस्। तर्कको व्याख्या गर्नाले तपाईंको सिकाइलाई गति दिनेछ र कुनै पनि तार्किक त्रुटिहरू (जस्तै गलत सुरक्षा धारणा) सतहमा ल्याउनेछ। आफ्नै कोडको रक्षा गर्न नसक्ने AI को आउटपुटमा विश्वास नगर्नुहोस्।
सामान्य गल्तीहरू
- स्क्र्याचबाट AI मा सुरक्षा राख्दै। परीक्षण गरिएको पुस्तकालय प्रयोग गर्नुहोस्।
- AI द्वारा उत्पादित संस्करण/ढाँचा पुष्टि गर्दैन। प्रशिक्षण डाटा पुरानो हुन सक्छ।
- टेस्टनेट बाइपास गर्दै। प्रत्येक ड्राफ्ट लाइभ हुनु अघि परीक्षण नेटवर्कमा चल्नु पर्छ।
- NatSpec/डकुमेन्टेसन थप्दै छैन। निरीक्षण र मर्मतसम्भार गाह्रो हुन्छ।
- "यो कम्पाइल गरिएको छ, त्यसैले यो सुरक्षित छ" गलत धारणा। कम्पाइल हुनु भनेको सुरक्षित हुनु होइन।
- पहुँच नियन्त्रण बिर्सने। यो सबैभन्दा सामान्य र महँगो गल्ती मध्ये एक हो।
संक्षेपमा
- स्मार्ट अनुबंध लेखनमा, AI ले फ्रेमवर्क, परीक्षण र समीक्षा ड्राफ्टहरू उत्पादन गर्दछ; मानव उत्पादन सुरक्षाको ग्यारेन्टी गर्दछ।
- सुरक्षा स्क्र्याचबाट होइन तर प्रमाणित पुस्तकालयहरूमा आधारित बनाउनुहोस् (जस्तै OpenZeppelin)।
- YZ द्वारा उत्पादित संस्करण र ढाँचाहरूको अप-टु-डेटनेस सधैं पुष्टि हुन्छ।
- टेस्ट स्टबहरू मानव अन्धा ठाउँहरू (सीमित केसहरू, पहुँच नियन्त्रण) क्याप्चर गर्न मूल्यवान छन्।
- कम्पाइल हुनु भनेको सुरक्षित हुनु होइन; testnet र लेखा परीक्षा आवश्यक छ।
आवेदन कार्य
साधारण ERC-20 टोकनको लागि, माथिको "मानक-आधारित कंकाल" प्रम्प्ट प्रयोग गरेर मस्यौदा उत्पन्न गर्नुहोस्। त्यसपछि: (१) जाँच गर्नुहोस् कि यसले जाँच गरिएको पुस्तकालय प्रयोग गर्दछ, (2) पहुँच नियन्त्रणहरू जाँच गर्नुहोस्, (3) "टेस्ट केस ड्राफ्ट" प्रम्प्टको साथ परीक्षणहरू उत्पन्न गर्नुहोस् र वास्तवमा कम्तिमा एउटा दुष्ट-कलर परीक्षण चलाउनुहोस्। AI छुटेको कम्तिमा एउटा सुरक्षा बिन्दु खोज्नुहोस् र नोट गर्नुहोस्।
चेकलिस्ट
- [] मैले प्रम्प्टमा मानक र चेन स्पष्ट रूपमा बताएको छु।
- [ ] म पुस्तकालयमा आधारित उत्पादन प्रमाणित गर्न चाहन्छु।
- [] SPDX लाइसेन्स र pragma संस्करण उपलब्ध छ।
- प्रत्येक महत्वपूर्ण कार्यमा पहुँच नियन्त्रण छ।
- [ ] मैले सीमित केसहरूको लागि परीक्षणहरू सिर्जना गरी दौडें।
- [ ] मैले पुस्तकालय/ढाँचा अप टु डेट भएको पुष्टि गरें।
- [ ] मैले लेखा परीक्षण र परीक्षणको लागि कोड चिन्ह लगाएँ; मैले यसलाई मेननेटमा असुरक्षित पाएको छैन।