Faida:
- Uwezo wa kutumia akili bandia kutoa mifumo, majaribio na kukagua rasimu kulingana na maktaba zilizothibitishwa (k.m. OpenZeppelin) na kuelewa kuwa wanadamu huhakikisha usalama wa uzalishaji.
- Uwezo wa kuthibitisha toleo la msimbo, muundo na udhibiti wa ufikiaji unaozalishwa na akili ya bandia kupitia mkusanyiko, majaribio na testnet.
- Kuweza kutofautisha mkusanyiko huo haimaanishi kuwa salama na kwamba testnet na ukaguzi ni muhimu.
Kuandika mkataba mahiri ni tofauti na programu za kawaida: msimbo unaoandika ni wa umma, hauwezi kubadilika, na ni mpango unaohamisha pesa moja kwa moja. Katika kitengo hiki, utajifunza jinsi ya kutumia AI kama msaidizi mahiri wa ukuzaji wa kandarasi; Tutajifunza kutoka kwa utayarishaji wa rasimu hadi uandishi wa majaribio, kutoka kwa kurejesha muundo hadi uboreshaji wa gesi (ada ya muamala). Lakini hebu tuwe wazi tangu mwanzo: AI hutoa ramani; Wanadamu huhakikisha nambari salama inayoingia katika uzalishaji.
Msingi wa kwanza: lugha na mazingira
Lugha ya kawaida ya mkataba mahiri ni Solidity (lugha ya Ethereum na EVM — Ethereum Virtual Machine, mashine pepe ambayo kandarasi huendeshwa — minyororo inayooana). Njia mbadala ni Vyper (lugha inayofanana na Python ambayo inalenga kuzuiliwa zaidi na kusomeka). Nambari yako hutumia gesi (gharama ya kila shughuli kwa blockchain); Nambari isiyofaa ni ghali. Kuweka maneno haya wazi katika muktadha unaowapa AI ni ufunguo wa kupata matokeo sahihi.
Ambapo AI ni ya thamani zaidi sio "kuandika kutoka mwanzo" lakini katika kutengeneza mfumo + ukungu mzuri: mwanzo unaotii viwango, mwongozo wa kuongeza ujuzi wako.
Tabaka za kutumia AI katika kuweka msimbo
1. Kuzalisha mifupa. AI huchimba haraka mifupa ya tokeni ya kawaida (ERC-20) au NFT (ERC-721 - kiwango cha kipekee cha mali ya dijiti). Lakini hakikisha kufanya AI itumie maktaba iliyothibitishwa: kwa mfano, OpenZeppelin (maktaba ya kandarasi inayoaminika na iliyokaguliwa ya jamii). Sheria ni kutumia kizuizi kilichojaribiwa badala ya kuandika usalama kutoka mwanzo.
2. Maelezo ya kazi na uhakiki. Kuelezea kazi iliyopo kwa AI hukuruhusu kuona makosa ya kimantiki mapema.
3. Kizazi cha mtihani. AI ni nzuri katika kuzalisha kesi za majaribio kwa kesi za makali: ingizo sifuri, nambari kubwa sana, mpiga simu ambaye hajaidhinishwa, simu inayorudiwa. Hii inakumbusha moja ya matukio ambayo mtu huruka.
4. Gesi na usomaji. AI huashiria mifumo ya bei ghali kama vile uhifadhi usiohitajika huandika na kupendekeza njia mbadala.
Kidokezo: Agiza AI "Jenga juu ya mikataba iliyokaguliwa ya OpenZeppelin, kuandika upya usalama kutoka mwanzo." Ni hatari zaidi kwa AI kuandika nambari asilia ya usalama kuliko kutumia maktaba iliyojaribiwa.
Mwongozo dhaifu / Mwongozo thabiti
Agizo dhaifu:
Niandikie mkataba wa ishara.
Kidokezo hiki ni hatari: haijulikani ni kiwango gani, mnyororo gani, maktaba gani, mahitaji ya usalama. AI hutengeneza msimbo bila mpangilio, ikiwezekana kuwa wa kizamani au usio salama.
Agizo lenye nguvu:
Jukumu lako: msanidi mkuu wa Solidity. Tengeneza rasimu ya tokeni ya ERC-20 kwa mlolongo unaolingana wa EVM. Kanuni:- Kulingana na ERC20 iliyokaguliwa ya OpenZeppelin na mikataba inayomilikiwa.- Andika laini ya toleo la Solidity na leseni (SPDX) kwa uwazi.- Mmiliki pekee ndiye ana ruhusa ya kutengeneza; ongeza kofia dhidi ya ubonyezo usio na mwisho. - Ongeza maoni ya NatSpec kwa kila kazi. - Andika usalama kutoka mwanzo; Tumia kizuizi cha kawaida. - Ongeza onyo mwishoni: "Hii ni rasimu; ukaguzi na upimaji unahitajika". Weka alama kwenye maeneo ambayo huna uhakika nayo kwa // TODO.
Tofauti: haraka haraka inatoa jukumu wazi, kiwango, maktaba, mpaka wa usalama, uhifadhi wa nyaraka na matarajio ya uthibitishaji.
Violezo vinne vinavyoweza kunakiliwa
1) Mifupa ya msingi ya viwango:
Jukumu lako: Msanidi wa Mshikamano. Tengeneza [ERC-20 / ERC-721 / staking]mfumo wa mkataba kulingana na maktaba iliyokaguliwa ya OpenZeppelin. Andika leseni ya SPDX na toleo la pragma. Ongeza udhibiti wa ufikiaji (anayeweza kupiga simu) kwa kila kitendakazi cha nje. Kurejesha usalama; Tumia vitalu vya kawaida. Hii ni rasimu.
2) Ukaguzi wa kazi:
Chunguza kazi ifuatayo kama msanidi mkuu: inafanya nini, inabadilika katika hali gani, ni nani anayeweza kuiita? Tia alama hitilafu za kimantiki zinazowezekana na hatari za usalama kama HYPOTHESIS, ukiunganisha kila mstari kwenye msimbo. Usiseme "salama" moja kwa moja; orodhesha tu mambo ya kuzingatia.
3) Rasimu ya hali ya jaribio:
Pendekeza kesi za majaribio kwa mkataba huu (unaweza kuwa rasimu ya Foundry/Hardhat). Hushughulikia kesi za kikomo: ingizo sifuri, nambari kubwa sana, simu ambayo haijaidhinishwa, simu iliyotumwa tena, fedha zisizo za kutosha. Andika KILE ambacho kila mtihani unathibitisha.
4) Mapitio ya gesi na usomaji:
Katika mkataba huu, alama mifumo ambayo inaweza kupunguza gharama ya gesi: kuandika uhifadhi usiohitajika, simu ya nje katika kitanzi, hesabu ya kurudia. Eleza tofauti ya kabla/baada ya kila pendekezo. Pendekeza uboreshaji wa kuvunja usalama; Ikiwa haijulikani, sema "muulize mkaguzi".
Kesi tatu ndogo (kwa nambari)
Kesi ya 1 - Mifupa imehifadhiwa kwa saa 4. Timu moja ilichimba mifupa ya kandarasi iliyokaguliwa ya uwekaji maktaba na AI katika dakika 30; Ilichukua ~ masaa 4 kwa mikono. Timu ilijitolea wakati kwa usalama na majaribio. Faida haikutoka kwa kuhamisha usalama, lakini kutoka kwa kuharakisha mfumo wa kuchosha.
Kesi ya 2 - Mtego wa toleo lililopitwa na wakati. AI imetoa mchoro ambao hutuma Etha mbichi kwa uhamisho, ambayo haipendekezwi tena kwa sababu data ya mafunzo imepitwa na wakati. Msanidi aligundua hili na akaibadilisha hadi muundo wa sasa unaotegemea simu na unaolindwa tena. Somo: Maktaba/muundo wa AI huthibitishwa kila mara kuwa umesasishwa; AI haijui zaidi ya tarehe ya kukata mafunzo.
Kesi ya 3 - Rasimu ya majaribio iliibua hitilafu iliyofichwa. Jaribio la "mpiga simu ambaye hajaidhinishwa" ambalo AI ilitoa lilibaini kuwa msanidi programu alikuwa amesahau udhibiti wa ufikiaji katika kipengele cha kukokotoa. Mmiliki pekee amekosa mstari 1, aliyekamatwa kwa dakika 5 kwenye testnet; Kunaweza kuwa na upotevu wa fedha kwenye mainnet. Somo: AI inashughulikia upofu wa binadamu katika majaribio.
Kumbuka mifumo ya usalama na AI
AI ni nzuri katika kukukumbusha kuhusu mifumo ya kuathiriwa inayojulikana kama orodha hakiki. Mitindo ya kawaida zaidi:
- Kujiandikisha tena: Kupiga simu ya nje bila kusasisha hali. Suluhisho: utaratibu wa kuangalia-madhara-maingiliano, walinzi wa kuingia tena.
- Ukosefu wa udhibiti wa ufikiaji: Mtu yeyote anaweza kuita kazi muhimu.
- Nambari kamili ya kufurika/kuporomoka: Mshikamano wa Kisasa huwashika wengi wao, lakini bado ni hatari katika msimbo wa kiwango cha chini.
- Uthibitishaji usiofaa wa uingizaji: Anwani ya sifuri, udhibiti wa wingi wa sifuri.
- Utegemezi wa Oracle: Kutoamini data ya nje (kama vile bei).
Angalizo: AI inaweza kukumbuka orodha hii, lakini haiwezi kuthibitisha kama kipengee kwenye orodha kiko katika msimbo wako mahususi. Orodha ya ukaguzi ni mwanzo; Sio badala ya udhibiti wa kontena.
Kupata muktadha sawa: Siri ya nambari nzuri kutoka kwa AI
Ubora wa nambari ambayo AI hutoa inategemea moja kwa moja juu ya ubora wa muktadha unaoipatia. Katika Web3 hii ni muhimu sana kwa sababu maelezo moja ndogo (ambayo mnyororo, toleo la Solidity, ambayo kiwango cha ishara) hubadilisha matokeo yote. Muktadha mzuri ni pamoja na:
- Msururu unaolengwa na mazingira: Ethereum mainnet au Tabaka la 2 (mnyororo wa pembeni wa bei nafuu unaoendesha juu ya mnyororo mkuu)? Gharama ya gesi na baadhi ya vipengele hutofautiana kwa mlolongo.
- Toleo na maktaba: Ni toleo gani la Solidity, ni toleo gani la OpenZeppelin? Ikiwa hakuna toleo lililobainishwa, AI inaweza kutoa ruwaza zilizopitwa na wakati, ambazo hazitumiki tena.
- Mahitaji ya usalama: Je, kuna kofia, inaweza kusimamishwa, inaweza kuongezeka? Haya yanapaswa kusemwa tangu mwanzo.
- Vikwazo: Futa mipaka kama vile "usitumie kuunganisha", "epuka simu ya nje", "boresha gesi lakini udumishe usomaji".
Mbinu nyingine yenye nguvu ni kuuliza AI kwa mpango kwanza, kisha msimbo: "Kwanza orodhesha kazi za mkataba huu na kila mmoja atafanya nini; andika msimbo mara tu nitakapoidhinisha." Hii inashika AI kwenda katika mwelekeo mbaya mapema na hukuruhusu kuhifadhi uamuzi wa usanifu.
Kidokezo: Uliza AI "kwa nini uliandika nambari hii kama hii?" uliza. Kufafanua mantiki kutaharakisha kujifunza kwako na kuleta makosa yoyote ya kimantiki (k.m. dhana potofu ya usalama). Usiamini matokeo ya AI ambayo haiwezi kutetea msimbo wake yenyewe.
Makosa ya kawaida
- Kuweka usalama katika AI kutoka mwanzo. Tumia maktaba iliyojaribiwa.
- Kutothibitisha toleo/muundo uliotolewa na AI. Data ya mafunzo inaweza kuwa ya zamani.
- Kukwepa testnet. Kila rasimu inapaswa kuendeshwa kwenye mtandao wa majaribio kabla ya kwenda moja kwa moja.
- Sio kuongeza NatSpec/nyaraka. Ukaguzi na matengenezo inakuwa ngumu.
- "Imeundwa, kwa hivyo ni salama" maoni potofu. Kukusanywa haimaanishi kuwa salama.
- Kusahau udhibiti wa ufikiaji. Ni moja ya makosa ya kawaida na ya gharama kubwa.
Kwa muhtasari
- Katika uandishi mzuri wa mikataba, AI hutoa mifumo, vipimo na rasimu za mapitio; Binadamu huhakikisha usalama wa uzalishaji.
- Jenga usalama sio kutoka mwanzo lakini kulingana na maktaba zilizothibitishwa (k.m. OpenZeppelin).
- Usasisho wa matoleo na ruwaza zinazotolewa na YZ huthibitishwa kila mara.
- Vipande vya majaribio ni muhimu katika kunasa maeneo ya vipofu ya binadamu (kesi za kikomo, udhibiti wa ufikiaji).
- Kukusanywa haimaanishi kuwa salama; testnet na ukaguzi ni lazima.
Jukumu la maombi
Kwa tokeni rahisi ya ERC-20, toa rasimu kwa kutumia kidokezo cha "mifupa inayozingatia viwango" hapo juu. Kisha: (1) angalia ikiwa inatumia maktaba iliyowekewa alama, (2) angalia vidhibiti vya ufikiaji, (3) tengeneza majaribio kwa haraka ya "rasimu ya kesi" na ufanye angalau jaribio moja la kijambazi. Tafuta na kumbuka angalau sehemu moja ya usalama ambayo AI ilikosa.
orodha ya ukaguzi
- [ ] Nimeeleza kwa uwazi kiwango na mnyororo katika dodoso.
- [ ] Nilitaka uzalishaji uliothibitishwa wa msingi wa maktaba.
- [ ] Leseni ya SPDX na toleo la pragma linapatikana.
- [ ] Kuna udhibiti wa ufikiaji katika kila kitendakazi muhimu.
- [ ] Niliunda na kuendesha majaribio ya kesi za kikomo.
- [ ] Nilithibitisha kuwa maktaba/muundo umesasishwa.
- [ ] Niliweka alama kwenye kanuni za ukaguzi na majaribio; Sikuipata bila kusimamiwa kwenye mainnet.