लाभ:
- सिद्ध पुस्तकालयों (जैसे ओपनज़ेपेलिन) के आधार पर रूपरेखा तैयार करने, परीक्षण करने और ड्राफ्ट की समीक्षा करने के लिए कृत्रिम बुद्धिमत्ता का उपयोग करने की क्षमता और यह समझना कि मनुष्य उत्पादन सुरक्षा की गारंटी देते हैं
- संकलन, परीक्षण और टेस्टनेट के माध्यम से कृत्रिम बुद्धिमत्ता द्वारा उत्पादित कोड संस्करण, पैटर्न और पहुंच नियंत्रण को सत्यापित करने की क्षमता
- उस संकलन को अलग करने में सक्षम होने का मतलब सुरक्षित होना नहीं है और टेस्टनेट और ऑडिटिंग आवश्यक हैं।
स्मार्ट कॉन्ट्रैक्ट लिखना सामान्य सॉफ्टवेयर से अलग है: आपके द्वारा लिखा गया कोड सार्वजनिक, अपरिवर्तनीय और एक प्रोग्राम है जो सीधे पैसा स्थानांतरित करता है। इस इकाई में, आप सीखेंगे कि स्मार्ट अनुबंध विकास सहायक के रूप में एआई का उपयोग कैसे करें; हम ड्राफ्ट उत्पादन से लेकर परीक्षण लेखन तक, पैटर्न रिकॉल से लेकर गैस (लेन-देन शुल्क) अनुकूलन तक सीखेंगे। लेकिन आइए शुरू से ही स्पष्ट रहें: एआई ब्लूप्रिंट तैयार करता है; मनुष्य सुरक्षित कोड सुनिश्चित करता है जो उत्पादन में जाता है।
ग्राउंड फर्स्ट: भाषा और पर्यावरण
सबसे आम स्मार्ट कॉन्ट्रैक्ट भाषा सॉलिडिटी (एथेरियम और ईवीएम की भाषा - एथेरियम वर्चुअल मशीन, वर्चुअल मशीन जिस पर कॉन्ट्रैक्ट चलते हैं - संगत चेन) है। विकल्प वाइपर है (पायथन जैसी भाषा जिसका लक्ष्य अधिक संयमित और पठनीय होना है)। आपका कोड गैस की खपत करता है (ब्लॉकचेन में प्रत्येक लेनदेन की लागत); अकुशल कोड महंगा है. इन शर्तों को उस संदर्भ में स्पष्ट रखना, जिसे आप एआई को देते हैं, सटीक आउटपुट प्राप्त करने की कुंजी है।
जहां एआई सबसे मूल्यवान है वह "स्क्रैच से लिखने" में नहीं है, बल्कि रूपरेखा + अच्छे सांचे का निर्माण करने में है: एक मानक-अनुपालक शुरुआत, एक खाका जिस पर आप अपनी विशेषज्ञता जोड़ सकते हैं।
कोडिंग में एआई के उपयोग की परतें
1. कंकाल उत्पन्न करना। AI एक मानक टोकन (ERC-20) या NFT (ERC-721 - एक अद्वितीय डिजिटल परिसंपत्ति मानक) के ढांचे को तेजी से माइन करता है। लेकिन सुनिश्चित करें कि AI एक सिद्ध लाइब्रेरी का उपयोग करे: उदाहरण के लिए, OpenZeppelin (समुदाय की विश्वसनीय, ऑडिटेड मानक अनुबंध लाइब्रेरी)। नियम स्क्रैच से सुरक्षा लिखने के बजाय परीक्षण किए गए ब्लॉक का उपयोग करना है।
2. कार्य विवरण और समीक्षा. एआई को किसी मौजूदा फ़ंक्शन की व्याख्या करने से आप तर्क संबंधी त्रुटियों का शीघ्र पता लगा सकते हैं।
3. परीक्षण पीढ़ी। एआई एज केस के लिए टेस्ट केस तैयार करने में अच्छा है: शून्य इनपुट, बहुत बड़ी संख्या, अनधिकृत कॉलर, बार-बार कॉल। यह उन परिदृश्यों में से एक की याद दिलाता है जिन्हें कोई छोड़ देता है।
4. गैस और पठनीयता. एआई अनावश्यक भंडारण जैसे महंगे पैटर्न को चिह्नित करता है और विकल्प सुझाता है।
संकेत: एआई को निर्देश दें कि "ओपनज़ेपेलिन के ऑडिटेड अनुबंधों पर निर्माण करें, शुरुआत से सुरक्षा को फिर से लिखें।" एआई के लिए किसी परीक्षणित लाइब्रेरी का उपयोग करने की तुलना में मूल सुरक्षा कोड लिखना अधिक जोखिम भरा है।
कमजोर संकेत/मजबूत संकेत
कमजोर संकेत:
मुझे एक सांकेतिक अनुबंध लिखें.
यह संकेत खतरनाक है: यह स्पष्ट नहीं है कि कौन सा मानक, कौन सी श्रृंखला, कौन सी लाइब्रेरी, कौन सी सुरक्षा आवश्यकता है। AI यादृच्छिक, संभवतः पुराना या असुरक्षित कोड उत्पन्न करता है।
शक्तिशाली संकेत:
आपकी भूमिका: वरिष्ठ सॉलिडिटी डेवलपर। ईवीएम संगत श्रृंखला के लिए ईआरसी-20 टोकन ड्राफ्ट तैयार करें। नियम:- OpenZeppelin के अंकेक्षित ERC20 और स्वामित्व योग्य अनुबंधों पर आधारित। - सॉलिडिटी संस्करण और लाइसेंस (SPDX) लाइन को स्पष्ट रूप से लिखें। - केवल मालिक को ही खनन करने की अनुमति है; अनंत दबाव के विरुद्ध एक टोपी जोड़ें। - प्रत्येक फ़ंक्शन में नेटस्पेक टिप्पणी जोड़ें। - खरोंच से सुरक्षा लिखें; मानक ब्लॉक का प्रयोग करें. - अंत में एक चेतावनी जोड़ें: "यह एक मसौदा है; ऑडिटिंग और परीक्षण आवश्यक है"। उन क्षेत्रों को चिह्नित करें जिनके बारे में आप निश्चित नहीं हैं // TODO से।
अंतर: मजबूत संकेत स्पष्ट भूमिका, मानक, पुस्तकालय, सुरक्षा सीमा, दस्तावेज़ीकरण और सत्यापन अपेक्षाएँ देता है।
चार प्रतिलिपि योग्य टेम्पलेट
1) मानक आधारित ढांचा:
आपकी भूमिका: सॉलिडिटी डेवलपर। ओपनज़ेपेलिन ऑडिटेड लाइब्रेरी के आधार पर [ईआरसी-20 / ईआरसी-721 / स्टेकिंग] अनुबंध ढांचा तैयार करें। एसपीडीएक्स लाइसेंस और प्राग्मा संस्करण लिखें। प्रत्येक बाहरी फ़ंक्शन में एक्सेस कंट्रोल (कौन कॉल कर सकता है) जोड़ें। सुरक्षा का पुनः आविष्कार; मानक ब्लॉकों का प्रयोग करें. यह एक मसौदा है.
2) कार्य समीक्षा:
एक वरिष्ठ डेवलपर की तरह निम्नलिखित फ़ंक्शन की जांच करें: यह क्या करता है, यह किन स्थितियों को बदलता है, इसे कौन कॉल कर सकता है? संभावित तर्क त्रुटियों और सुरक्षा जोखिमों को परिकल्पना के रूप में चिह्नित करें, प्रत्येक को कोड में एक पंक्ति से जोड़ें। एकदम से "सुरक्षित" मत कहो; बस ध्यान के बिंदुओं को सूचीबद्ध करें।
3) परीक्षण परिदृश्य ड्राफ्ट:
इस अनुबंध के लिए परीक्षण मामलों का प्रस्ताव करें (फाउंड्री/हार्डहैट के लिए एक मसौदा हो सकता है)। विशेष रूप से सीमा मामलों को कवर करें: शून्य इनपुट, बहुत बड़ी संख्या, अनधिकृत कॉल, पुनः प्रवेश कॉल, अपर्याप्त धन। लिखें कि प्रत्येक परीक्षण क्या पुष्टि करता है।
4) गैस और पठनीयता समीक्षा:
इस अनुबंध में, उन पैटर्न को चिह्नित करें जो गैस लागत को कम कर सकते हैं: अनावश्यक भंडारण लेखन, लूप में बाहरी कॉल, दोहराव वाली गणना। प्रत्येक सुझाव में पहले/बाद का अंतर स्पष्ट करें। सुरक्षा-तोड़ अनुकूलन की अनुशंसा करें; यदि यह स्पष्ट नहीं है, तो कहें "लेखा परीक्षक से पूछें"।
तीन मिनी केस (संख्या में)
केस 1 - कंकाल ने 4 घंटे बचाए। एक टीम ने 30 मिनट में एआई के साथ एक ऑडिटेड लाइब्रेरी-आधारित निहित अनुबंध का ढांचा तैयार किया; इसमें मैन्युअल रूप से ~4 घंटे लगे। टीम ने सुरक्षा और परीक्षण के लिए समय समर्पित किया। यह लाभ सुरक्षा स्थानांतरित करने से नहीं, बल्कि कठिन ढांचे में तेजी लाने से आया।
केस 2 - पुराना संस्करण ट्रैप। एआई ने एक पैटर्न तैयार किया जो कच्चे ईथर को स्थानांतरण द्वारा भेजता है, जो अब अनुशंसित नहीं है क्योंकि प्रशिक्षण डेटा पुराना है। डेवलपर ने इस पर ध्यान दिया और इसे वर्तमान कॉल-आधारित और पुनर्प्रवेश-संरक्षित पैटर्न में बदल दिया। पाठ: एआई की लाइब्रेरी/पैटर्न हमेशा अद्यतित होने की पुष्टि की जाती है; एआई को प्रशिक्षण कटऑफ तिथि से आगे का पता नहीं है।
केस 3 - टेस्ट ड्राफ्ट में छिपा हुआ बग सामने आया। एआई द्वारा उत्पादित "अनधिकृत कॉलर" परीक्षण से पता चला कि डेवलपर एक फ़ंक्शन में एक्सेस नियंत्रण भूल गया था। ओनलीओनर से 1 लाइन गायब, टेस्टनेट पर 5 मिनट में पकड़ा गया; मेननेट पर धन की हानि हो सकती थी। पाठ: एआई परीक्षण में मानव के अंधे स्थान को कवर करता है।
एआई के साथ सुरक्षा पैटर्न याद रखना
एआई आपको चेकलिस्ट की तरह ज्ञात भेद्यता पैटर्न की याद दिलाने में अच्छा है। सबसे आम पैटर्न:
- पुनर्प्रवेश: स्थिति को अपडेट किए बिना बाहरी कॉल करना। समाधान: जाँच-प्रभाव-बातचीत आदेश, पुनः प्रवेश गार्ड।
- अभिगम नियंत्रण का अभाव: कोई भी महत्वपूर्ण फ़ंक्शन को कॉल कर सकता है।
- पूर्णांक अतिप्रवाह/अंडरफ़ॉल: आधुनिक सॉलिडिटी उनमें से अधिकांश को पकड़ लेती है, लेकिन निम्न-स्तरीय कोड में अभी भी जोखिम है।
- अपर्याप्त इनपुट सत्यापन: शून्य पता, शून्य मात्रा नियंत्रण।
- Oracle निर्भरता: बाहरी डेटा (जैसे कीमत) पर अंधा विश्वास।
ध्यान दें: AI इस सूची को याद कर सकता है, लेकिन यह गारंटी नहीं दे सकता कि सूची में कोई आइटम आपके विशिष्ट कोड में है या नहीं। चेकलिस्ट एक शुरुआत है; यह कंटेनर नियंत्रण का प्रतिस्थापन नहीं है.
संदर्भ को सही समझना: एआई से अच्छे कोड का रहस्य
एआई द्वारा उत्पादित कोड की गुणवत्ता सीधे आपके द्वारा दिए गए संदर्भ की गुणवत्ता पर निर्भर करती है। Web3 में यह विशेष रूप से महत्वपूर्ण है क्योंकि एक छोटा सा विवरण (कौन सी श्रृंखला, कौन सा सॉलिडिटी संस्करण, कौन सा टोकन मानक) पूरे आउटपुट को बदल देता है। एक अच्छे संदर्भ में शामिल हैं:
- लक्ष्य श्रृंखला और पर्यावरण: एथेरियम मेननेट या लेयर 2 (सस्ता साइडचेन जो मुख्यचेन के शीर्ष पर चलता है)? गैस की लागत और कुछ विशेषताएं श्रृंखला के अनुसार भिन्न-भिन्न होती हैं।
- संस्करण और लाइब्रेरी: कौन सा सॉलिडिटी संस्करण, कौन सा ओपनज़ेपेलिन संस्करण? यदि कोई संस्करण निर्दिष्ट नहीं है, तो AI पुराने, अप्रचलित पैटर्न उत्पन्न कर सकता है।
- सुरक्षा आवश्यकताएँ: क्या कोई सीमा है, क्या इसे रोका जा सकता है, क्या इसे बढ़ाया जा सकता है? ये शुरू से ही कहा जाना चाहिए.
- बाधाएं: "असेंबली का उपयोग न करें", "बाहरी कॉल से बचें", "गैस को अनुकूलित करें लेकिन पठनीयता बनाए रखें" जैसी स्पष्ट सीमाएं।
एक और शक्तिशाली तकनीक यह है कि पहले एआई से योजना पूछें, फिर कोड: "पहले इस अनुबंध के कार्यों को सूचीबद्ध करें और प्रत्येक क्या करेगा; एक बार जब मैं इसे मंजूरी दे दूं तो कोड लिखें।" यह गलत दिशा में जा रहे एआई को पहले ही पकड़ लेता है और आपको वास्तुशिल्प निर्णय को बनाए रखने की अनुमति देता है।
संकेत: एआई से पूछें "आपने इस कोड को इस तरह क्यों लिखा?" पूछना। तर्क समझाने से आपकी सीखने की गति तेज हो जाएगी और कोई भी तार्किक त्रुटि (उदाहरण के लिए गलत सुरक्षा धारणा) सतह पर आ जाएगी। ऐसे एआई के आउटपुट पर भरोसा न करें जो अपने कोड का बचाव नहीं कर सकता।
सामान्य गलतियाँ
- एआई में नए सिरे से सुरक्षा लाना। एक परीक्षणित पुस्तकालय का प्रयोग करें.
- एआई द्वारा निर्मित संस्करण/पैटर्न की पुष्टि नहीं की जा रही है। प्रशिक्षण डेटा पुराना हो सकता है.
- टेस्टनेट को दरकिनार करना। प्रत्येक ड्राफ्ट को लाइव होने से पहले परीक्षण नेटवर्क पर चलना चाहिए।
- नेटस्पेक/दस्तावेज़ीकरण नहीं जोड़ा जा रहा है। निरीक्षण एवं रखरखाव कठिन हो जाता है।
- "यह संकलित है, इसलिए यह सुरक्षित है" ग़लतफ़हमी। संकलित होने का मतलब सुरक्षित होना नहीं है।
- अभिगम नियंत्रण भूल जाना. यह सबसे आम और महंगी गलतियों में से एक है।
संक्षेप में
- स्मार्ट अनुबंध लेखन में, एआई रूपरेखा, परीक्षण और समीक्षा ड्राफ्ट तैयार करता है; मानव उत्पादन सुरक्षा की गारंटी देता है।
- सुरक्षा का निर्माण शुरू से नहीं बल्कि सिद्ध पुस्तकालयों (उदाहरण के लिए ओपनज़ेपेलिन) के आधार पर करें।
- YZ द्वारा उत्पादित संस्करणों और पैटर्न की अद्यतनता की हमेशा पुष्टि की जाती है।
- टेस्ट स्टब्स मानव ब्लाइंड स्पॉट (सीमा मामले, पहुंच नियंत्रण) को पकड़ने में मूल्यवान हैं।
- संकलित होने का मतलब सुरक्षित होना नहीं है; टेस्टनेट और ऑडिटिंग जरूरी है।
आवेदन कार्य
एक साधारण ईआरसी-20 टोकन के लिए, ऊपर दिए गए "मानक-आधारित स्केलेटन" प्रॉम्प्ट का उपयोग करके एक ड्राफ्ट तैयार करें। फिर: (1) जांचें कि क्या यह चेक की गई लाइब्रेरी का उपयोग करता है, (2) एक्सेस नियंत्रण की जांच करें, (3) "टेस्ट केस ड्राफ्ट" प्रॉम्प्ट के साथ परीक्षण उत्पन्न करें और वास्तव में कम से कम एक दुष्ट-कॉलर परीक्षण चलाएं। कम से कम एक सुरक्षा बिंदु ढूंढें और नोट करें जो एआई से छूट गया।
चेकलिस्ट
- [ ] मैंने प्रॉम्प्ट में मानक और श्रृंखला को स्पष्ट रूप से बताया है।
- [ ] मैं सिद्ध पुस्तकालय-आधारित उत्पादन चाहता था।
- [ ] एसपीडीएक्स लाइसेंस और प्राग्मा संस्करण उपलब्ध है।
- [ ] प्रत्येक महत्वपूर्ण कार्य में अभिगम नियंत्रण होता है।
- [ ] मैंने सीमित मामलों के लिए परीक्षण बनाए और चलाए।
- [ ] मैंने पुष्टि की कि लाइब्रेरी/पैटर्न अद्यतित है।
- [ ] मैंने ऑडिटिंग और परीक्षण के लिए कोड चिह्नित किया है; मैंने इसे मेननेट पर बिना निगरानी के नहीं पाया।