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