లాభాలు:
- నిరూపితమైన లైబ్రరీల (ఉదా. ఓపెన్జెప్పెలిన్) ఆధారంగా ఫ్రేమ్వర్క్లు, పరీక్షలు మరియు సమీక్ష డ్రాఫ్ట్లను రూపొందించడానికి కృత్రిమ మేధస్సును ఉపయోగించగల సామర్థ్యం మరియు మానవులు ఉత్పత్తి భద్రతకు హామీ ఇస్తున్నారని అర్థం చేసుకోవడం
- సంకలనం, పరీక్ష మరియు టెస్ట్నెట్ ద్వారా కృత్రిమ మేధస్సు ద్వారా ఉత్పత్తి చేయబడిన కోడ్ వెర్షన్, నమూనా మరియు యాక్సెస్ నియంత్రణను ధృవీకరించగల సామర్థ్యం
- సంకలనం అంటే సురక్షితమని అర్థం కాదు మరియు టెస్ట్నెట్ మరియు ఆడిటింగ్ చాలా అవసరం.
స్మార్ట్ ఒప్పందాన్ని వ్రాయడం సాధారణ సాఫ్ట్వేర్కు భిన్నంగా ఉంటుంది: మీరు వ్రాసే కోడ్ పబ్లిక్, మార్పులేనిది మరియు నేరుగా డబ్బును తరలించే ప్రోగ్రామ్. ఈ యూనిట్లో, స్మార్ట్ కాంట్రాక్ట్ డెవలప్మెంట్ అసిస్టెంట్గా AIని ఎలా ఉపయోగించాలో మీరు నేర్చుకుంటారు; మేము డ్రాఫ్ట్ ప్రొడక్షన్ నుండి టెస్ట్ రైటింగ్ వరకు, ప్యాటర్న్ రీకాల్ నుండి గ్యాస్ (లావాదేవీ రుసుము) ఆప్టిమైజేషన్ వరకు నేర్చుకుంటాము. కానీ ప్రారంభం నుండి స్పష్టంగా తెలియజేయండి: AI బ్లూప్రింట్లను ఉత్పత్తి చేస్తుంది; ఉత్పత్తికి వెళ్లే సురక్షిత కోడ్ను మానవులు నిర్ధారిస్తారు.
మొదటి స్థానం: భాష మరియు పర్యావరణం
అత్యంత సాధారణ స్మార్ట్ కాంట్రాక్ట్ భాష సాలిడిటీ (Ethereum మరియు EVM భాష - Ethereum వర్చువల్ మెషిన్, కాంట్రాక్టులు అమలు చేసే వర్చువల్ మెషీన్ - అనుకూల గొలుసులు). ప్రత్యామ్నాయం వైపర్ (పైథాన్-వంటి భాష, ఇది మరింత నిర్బంధంగా మరియు చదవడానికి వీలుగా ఉంటుంది). మీ కోడ్ గ్యాస్ను వినియోగిస్తుంది (బ్లాక్చెయిన్కి ప్రతి లావాదేవీకి అయ్యే ఖర్చు); అసమర్థ కోడ్ ఖరీదైనది. మీరు AIకి ఇచ్చే సందర్భంలో ఈ నిబంధనలను స్పష్టంగా ఉంచడం ఖచ్చితమైన అవుట్పుట్ పొందడానికి కీలకం.
AI అత్యంత విలువైనది "మొదటి నుండి వ్రాయడం"లో కాదు, ఫ్రేమ్వర్క్ + మంచి అచ్చును ఉత్పత్తి చేయడంలో: ప్రమాణాలు-అనుకూల ప్రారంభం, మీ నైపుణ్యాన్ని జోడించే బ్లూప్రింట్.
కోడింగ్లో AIని ఉపయోగించే పొరలు
1. అస్థిపంజరాలు ఉత్పత్తి. AI త్వరితంగా ఒక ప్రామాణిక టోకెన్ (ERC-20) లేదా NFT (ERC-721 — ఒక ప్రత్యేక డిజిటల్ ఆస్తి ప్రమాణం) యొక్క అస్థిపంజరాన్ని గనులు చేస్తుంది. కానీ AI నిరూపితమైన లైబ్రరీని ఉపయోగించాలని నిర్ధారించుకోండి: ఉదాహరణకు, OpenZeppelin (సమాజం యొక్క విశ్వసనీయ, ఆడిట్ చేయబడిన ప్రామాణిక కాంట్రాక్టు లైబ్రరీ). మొదటి నుండి భద్రతను వ్రాయడం కంటే పరీక్షించిన బ్లాక్ను ఉపయోగించడం నియమం.
2. ఫంక్షన్ వివరణ మరియు సమీక్ష. AIకి ఇప్పటికే ఉన్న ఫంక్షన్ను వివరించడం వలన మీరు లాజిక్ లోపాలను ముందుగానే గుర్తించవచ్చు.
3. పరీక్ష ఉత్పత్తి. సున్నా ఇన్పుట్, చాలా పెద్ద సంఖ్య, అనధికార కాలర్, రిపీట్ కాల్: ఎడ్జ్ కేసుల కోసం టెస్ట్ కేసులను రూపొందించడంలో AI మంచిది. ఇది ఒకరు దాటవేసే దృశ్యాలను గుర్తుచేస్తుంది.
4. గ్యాస్ మరియు రీడబిలిటీ. AI అనవసరమైన నిల్వ వ్రాతలు వంటి ఖరీదైన నమూనాలను ఫ్లాగ్ చేస్తుంది మరియు ప్రత్యామ్నాయాలను సూచిస్తుంది.
సూచన: "ఓపెన్జెప్పెలిన్ యొక్క ఆడిట్ చేయబడిన ఒప్పందాలపై రూపొందించండి, మొదటి నుండి భద్రతను తిరిగి వ్రాయండి" అని AIకి సూచించండి. పరీక్షించిన లైబ్రరీని ఉపయోగించడం కంటే AI ఒరిజినల్ సెక్యూరిటీ కోడ్ను వ్రాయడం చాలా ప్రమాదకరం.
బలహీనమైన ప్రాంప్ట్ / బలమైన ప్రాంప్ట్
బలహీనమైన ప్రాంప్ట్:
నాకు టోకెన్ ఒప్పందాన్ని వ్రాయండి.
ఈ ప్రాంప్ట్ ప్రమాదకరమైనది: ఏ ప్రమాణం, ఏ చైన్, ఏ లైబ్రరీ, ఏ భద్రతా అవసరం అనేది స్పష్టంగా లేదు. AI యాదృచ్ఛికంగా, బహుశా పాతది లేదా అసురక్షిత కోడ్ను ఉత్పత్తి చేస్తుంది.
శక్తివంతమైన ప్రాంప్ట్:
మీ పాత్ర: సీనియర్ సాలిడిటీ డెవలపర్. EVM అనుకూల గొలుసు కోసం ERC-20 టోకెన్ డ్రాఫ్ట్ను రూపొందించండి. నియమాలు:- OpenZeppelin యొక్క ఆడిట్ చేయబడిన ERC20 మరియు స్వంత ఒప్పందాల ఆధారంగా.- సాలిడిటీ వెర్షన్ మరియు లైసెన్స్ (SPDX) లైన్ను స్పష్టంగా వ్రాయండి.- యజమానికి మాత్రమే ముద్రించడానికి అనుమతి ఉంది; అనంతమైన నొక్కడానికి వ్యతిరేకంగా టోపీని జోడించండి. - ప్రతి ఫంక్షన్కు NatSpec వ్యాఖ్యను జోడించండి. - మొదటి నుండి భద్రతను వ్రాయండి; ప్రామాణిక బ్లాక్ ఉపయోగించండి. - ముగింపులో హెచ్చరికను జోడించండి: "ఇది డ్రాఫ్ట్; ఆడిటింగ్ మరియు పరీక్ష అవసరం". మీకు ఖచ్చితంగా తెలియని ప్రాంతాలను // TODOతో గుర్తించండి.
తేడా: బలమైన ప్రాంప్ట్ స్పష్టమైన పాత్ర, ప్రమాణం, లైబ్రరీ, భద్రతా సరిహద్దు, డాక్యుమెంటేషన్ మరియు ధ్రువీకరణ అంచనాలను అందిస్తుంది.
నాలుగు కాపీ చేయగల టెంప్లేట్లు
1) ప్రమాణాల ఆధారిత అస్థిపంజరం:
మీ పాత్ర: సాలిడిటీ డెవలపర్. OpenZeppelin ఆడిట్ చేయబడిన లైబ్రరీ ఆధారంగా [ERC-20 / ERC-721 / స్టాకింగ్] కాంట్రాక్ట్ ఫ్రేమ్వర్క్ను రూపొందించండి. 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 లైసెన్స్ మరియు ప్రాగ్మా వెర్షన్ అందుబాటులో ఉన్నాయి.
- [ ] ప్రతి క్లిష్టమైన ఫంక్షన్లో యాక్సెస్ నియంత్రణ ఉంటుంది.
- [ ] నేను పరిమితి కేసుల కోసం పరీక్షలను సృష్టించాను మరియు అమలు చేసాను.
- [ ] లైబ్రరీ/నమూనా తాజాగా ఉందని నేను ధృవీకరించాను.
- [] నేను ఆడిటింగ్ మరియు టెస్టింగ్ కోసం కోడ్ను గుర్తించాను; నేను దీన్ని మెయిన్నెట్లో పర్యవేక్షించలేదు.