Unità 2 / 11

Appoġġ ta 'Kitba ta' Kuntratt Intelliġenti: Solidità/Abbozz ta 'Vyper u Ġenerazzjoni ta' Kodiċi Sikur

Qligħ:

  • Kapaċità li tuża intelliġenza artifiċjali biex tipproduċi oqfsa, testijiet u tirrevedi abbozzi bbażati fuq libreriji ppruvati (eż. OpenZeppelin) u tifhem li l-bnedmin jiggarantixxu s-sigurtà tal-produzzjoni
  • Kapaċità li tivverifika l-verżjoni tal-kodiċi, il-mudell u l-kontroll tal-aċċess prodott minn intelliġenza artifiċjali permezz ta 'kumpilazzjoni, ittestjar u testnet
  • Li tkun kapaċi tiddistingwi dik il-kumpilazzjoni ma jfissirx li tkun sigur u li testnet u l-awditjar huma essenzjali.

Il-kitba ta 'kuntratt intelliġenti hija differenti minn softwer ordinarju: il-kodiċi li tikteb huwa pubbliku, immutabbli, u programm li jċaqlaq direttament il-flus. F'din l-unità, titgħallem kif tuża l-AI bħala assistent ta 'żvilupp ta' kuntratt intelliġenti; Aħna se nitgħallmu mill-produzzjoni tal-abbozz għall-kitba tat-test, mill-irtirar tal-mudell għall-ottimizzazzjoni tal-gass (tariffa tat-tranżazzjoni). Imma ejja nkunu ċari mill-bidu: AI tipproduċi blueprints; Il-bnedmin jiżguraw kodiċi sigur li jidħol fil-produzzjoni.

L-ewwel art: lingwa u ambjent

L-aktar lingwa tal-kuntratt intelliġenti komuni hija Solidity (il-lingwa ta 'Ethereum u EVM — Ethereum Virtual Machine, il-magna virtwali li fuqha jaħdmu l-kuntratti — ktajjen kompatibbli). L-alternattiva hija Vyper (lingwa bħal Python li għandha l-għan li tkun aktar ristretta u li tinqara). Il-kodiċi tiegħek jikkonsma l-gass (l-ispiża ta 'kull transazzjoni għall-blockchain); Kodiċi ineffiċjenti huwa għali. Li żżomm dawn it-termini ċari fil-kuntest li tagħtihom lill-AI hija essenzjali biex tikseb output preċiż.

Fejn l-AI hija l-aktar siewja mhix fil-"kitba mill-bidu" iżda fil-produzzjoni tal-qafas + moffa tajba: bidu konformi mal-istandards, pjan li fuqu żżid il-kompetenza tiegħek.

Saffi tal-użu tal-AI fil-kodifikazzjoni

1. Ġenerazzjoni ta 'skeletri. L-AI malajr tħaffef l-iskeletru ta 'token standard (ERC-20) jew NFT (ERC-721 — standard uniku ta' assi diġitali). Imma kun żgur li tagħmel l-AI tuża librerija ppruvata: pereżempju, OpenZeppelin (il-librerija tal-kuntratt standard fdata u vverifikata tal-komunità). Ir-regola hija li tuża l-blokk ittestjat aktar milli tikteb is-sigurtà mill-bidu.

2. Deskrizzjoni tal-funzjoni u reviżjoni. L-ispjegazzjoni ta 'funzjoni eżistenti lill-AI tippermettilek li tidentifika żbalji loġiċi kmieni.

3. Ġenerazzjoni tat-test. L-AI hija tajba biex tiġġenera każijiet tat-test għal każijiet tat-tarf: input żero, numru kbir ħafna, min iċempel mhux awtorizzat, sejħa ripetuta. Dan ifakkar wieħed mix-xenarji li wieħed jaqbeż.

4. Gass u leġibilità. L-AI tindika mudelli għaljin bħal kitba ta' ħażna bla bżonn u tissuġġerixxi alternattivi.

Ħjiel: Għid lill-AI biex "Ibni fuq il-kuntratti vverifikati ta' OpenZeppelin, tikteb mill-ġdid is-sigurtà mill-bidu." Huwa ħafna iktar riskjuż għal AI li tikteb kodiċi tas-sigurtà oriġinali milli tuża librerija ttestjata.

Pront dgħajjef / Pront qawwi

Pront dgħajjef:

Iktbilli kuntratt simboliku.

Dan il-pront huwa perikoluż: mhuwiex ċar liema standard, liema katina, liema librerija, liema rekwiżit tas-sigurtà. L-AI tiġġenera kodiċi każwali, possibbilment skadut jew mhux sigur.

Pront qawwi:

Ir-rwol tiegħek: żviluppatur anzjan ta 'Solidity. Iġġenera abbozz ta' token ERC-20 għal katina kompatibbli EVM. Regoli:- Ibbażat fuq il-kuntratti ERC20 u Ownable vverifikati ta 'OpenZeppelin.- Ikteb il-linja tal-verżjoni u l-liċenzja tas-Solidità (SPDX) b'mod espliċitu.- Is-sid biss għandu l-permess li jdaħħal; żid għatu kontra l-ippressar infinit. - Żid kumment NatSpec għal kull funzjoni. - Ikteb is-sigurtà mill-bidu; Uża l-blokk standard. - Żid twissija fl-aħħar: "Dan huwa abbozz; huma meħtieġa verifika u ttestjar". Immarka l-oqsma li m'intix ċert dwarhom bi // TODO.

Differenza: pront b'saħħtu jagħti rwol ċar, standard, librerija, konfini tas-sigurtà, dokumentazzjoni u aspettattivi ta 'validazzjoni.

Erba' mudelli li jistgħu jiġu kkupjati

1) Skeletru bbażat fuq standards:

Ir-rwol tiegħek: Solidity developer. Iġġenera [ERC-20 / ERC-721 / staking]qafas ta' kuntratt ibbażat fuq librerija vverifikata ta' OpenZeppelin. Ikteb il-liċenzja SPDX u l-verżjoni pragma. Żid il-kontroll tal-aċċess (min jista 'jsejjaħ) għal kull funzjoni esterna. Nivvintaw mill-ġdid is-sigurtà; Uża blokki standard. Dan huwa abbozz.

2) Reviżjoni tal-funzjoni:

Eżamina l-funzjoni li ġejja bħal żviluppatur anzjan: x'tagħmel, liema stati tbiddel, min jista 'jsejjaħlu? Immarka l-iżbalji loġiċi possibbli u r-riskji tas-sigurtà bħala IPOTESI, u għaqqad kull wieħed ma' linja fil-kodiċi. Tgħidx "safe" għal kollox; elenka biss il-punti ta 'attenzjoni.

3) Abbozz tax-xenarju tat-test:

Ipproponi każijiet ta' test għal dan il-kuntratt (jista' jkun abbozz għal Foundry/Hardhat). Speċifikament ikopru każijiet ta 'limitu: input żero, numru kbir ħafna, sejħa mhux awtorizzata, sejħa reentrant, fondi insuffiċjenti. Ikteb X'Kkonferma kull test.

4) Reviżjoni tal-gass u tal-leġibbiltà:

F'dan il-kuntratt, immarka l-mudelli li jistgħu jnaqqsu l-ispiża tal-gass: kitba ta 'ħażna bla bżonn, sejħa esterna fil-linja, kalkolu ripetittiv. Spjega d-differenza qabel/wara f’kull suġġeriment. Irrakkomanda ottimizzazzjonijiet li jkissru s-sigurtà; Jekk mhux ċar, għid "staqsi lill-awditur".

Tliet kaxxi żgħar (f'numri)

Każ 1 — Skeletru ffrankat 4 sigħat. Tim wieħed immina l-iskeletru ta 'kuntratt ta' vesting ivverifikat ibbażat fuq librerija ma 'AI fi 30 minuta; Hija ħadet ~ 4 sigħat manwalment. It-tim iddedika ħin għas-sigurtà u l-ittestjar. Il-qligħ ma ġiex mit-trasferiment tas-sigurtà, iżda mit-tħaffif tal-qafas tedious.

Każ 2 — Nassa tal-verżjoni antikwata. L-AI pproduċiet mudell li jibgħat Ether mhux maħdum bi trasferiment, li m'għadux rakkomandat minħabba li d-dejta tat-taħriġ hija skaduta. L-iżviluppatur innota dan u bidlu għall-mudell kurrenti ibbażat fuq is-sejħa u protett mir-ridħul. Lezzjoni: Il-librerija/il-mudell tal-AI huwa dejjem ikkonfermat li huwa aġġornat; AI ma tafx lil hinn mid-data tal-qtugħ tat-taħriġ.

Każ 3 — L-abbozz tat-test popped bug moħbi. It-test "min iċempel mhux awtorizzat" li pproduċiet l-AI wera li l-iżviluppatur kien nesa l-kontroll tal-aċċess f'funzjoni. onlyOwner nieqes linja 1, maqbud f'5 minuti fuq testnet; Seta' kien hemm telf ta' fondi fuq il-mainnet. Lezzjoni: L-AI tkopri l-post blind tal-bniedem fl-ittestjar.

Niftakru mudelli tas-sigurtà bl-AI

L-AI hija tajba biex tfakkarkom f'xejriet ta' vulnerabbiltà magħrufa bħal lista ta' kontroll. L-aktar mudelli komuni:

  • Rientranza: Tagħmel sejħa esterna mingħajr ma taġġorna l-istatus. Soluzzjoni: ordni ta 'kontrolli-effetti-interazzjonijiet, gwardja ta' reentrancy.
  • Nuqqas ta 'kontroll ta' aċċess: Kulħadd jista 'jsejjaħ il-funzjoni kritika.
  • Integer overflow/underfall: Modern Solidity taqbad il-biċċa l-kbira tagħhom, iżda xorta riskju f'kodiċi ta 'livell baxx.
  • Validazzjoni tal-input inadegwata: Indirizz żero, kontroll tal-kwantità żero.
  • Dipendenza Oracle: Fiduċja għomja f'dejta esterna (bħal prezz).
Attenzjoni: AI tista' tfakkar din il-lista, iżda ma tistax tiggarantixxi jekk oġġett fil-lista huwiex fil-kodiċi speċifiku tiegħek. Il-lista ta' kontroll hija bidu; Mhuwiex sostitut għall-kontroll tal-kontejners.

Nġibu l-kuntest it-tajjeb: Is-sigriet għal kodiċi tajjeb mill-AI

Il-kwalità tal-kodiċi li tipproduċi l-AI tiddependi direttament fuq il-kwalità tal-kuntest li tagħtih. Fil-Web3 dan huwa partikolarment kritiku minħabba dettall żgħir wieħed (liema katina, liema verżjoni Solidità, liema standard token) jibdel l-output kollu. Kuntest tajjeb jinkludi:

  • Katina fil-mira u ambjent: Ethereum mainnet jew Saff 2 (sidechain irħas li timxi fuq il-mainchain)? L-ispiża tal-gass u xi karatteristiċi jvarjaw skont il-katina.
  • Verżjoni u librerija: Liema verżjoni Solidity, liema verżjoni OpenZeppelin? Jekk ma tkun speċifikata l-ebda verżjoni, l-AI tista' tipproduċi mudelli skaduti u deprekati.
  • Rekwiżiti ta 'sigurtà: Hemm limitu, jista' jitwaqqaf, jista 'jiżdied? Dawn għandhom jingħadu mill-bidu nett.
  • Limitazzjonijiet: Limiti ċari bħal "ma tużax assemblaġġ", "tevita sejħa esterna", "ottimizza l-gass iżda żżomm il-leġibilità".

Teknika qawwija oħra hija li titlob lill-AI għall-pjan l-ewwel, imbagħad il-kodiċi: "L-ewwel elenka l-funzjonijiet ta 'dan il-kuntratt u x'se jagħmel kull wieħed; ikteb il-kodiċi ladarba napprovah." Dan jaqbad l-AI li tmur fid-direzzjoni żbaljata kmieni u jippermettilek li żżomm id-deċiżjoni arkitettonika.

Ħjiel: Staqsi lill-AI "għaliex ktibt dan il-kodiċi bħal dan?" staqsi. L-ispjegazzjoni tar-raġuni se tħaffef it-tagħlim tiegħek kif ukoll iġib fil-wiċċ kwalunkwe żball loġiku (eż. suppożizzjoni falza ta’ sigurtà). M'għandekx tafda l-output ta 'AI li ma tistax tiddefendi l-kodiċi tagħha stess.

Żbalji komuni

  • Tpoġġi s-sigurtà fl-AI mill-bidu. Uża librerija ttestjata.
  • Mhux tikkonferma l-verżjoni/mudell prodott mill-AI. Id-dejta tat-taħriġ tista' tkun antika.
  • Jevita testnet. Kull abbozz għandu jaħdem fuq in-netwerk tat-test qabel ma jibda jaħdem.
  • Ma żżidx NatSpec/dokumentazzjoni. L-ispezzjoni u l-manutenzjoni jsiru diffiċli.
  • "Huwa kkompilata, għalhekk huwa sigur" kunċett żbaljat. Li tkun miġbura ma jfissirx li tkun sigur.
  • Tinsa l-kontroll tal-aċċess. Huwa wieħed mill-iżbalji l-aktar komuni u għaljin.

Fil-qosor

  • Fil-kitba tal-kuntratti intelliġenti, l-AI tipproduċi oqfsa, testijiet u abbozzi ta 'reviżjoni; Il-bniedem jiggarantixxi s-sigurtà tal-produzzjoni.
  • Ibni s-sigurtà mhux mill-bidu imma bbażata fuq libreriji ppruvati (eż. OpenZeppelin).
  • L-aġġornament tal-verżjonijiet u l-mudelli prodotti minn YZ huwa dejjem ikkonfermat.
  • Stubs tat-test huma ta 'valur biex jinqabdu blind spots tal-bniedem (każijiet ta' limitu, kontroll ta 'aċċess).
  • Li tkun miġbura ma jfissirx li tkun sigur; testnet u l-awditjar huma essenzjali.

Kompitu ta' applikazzjoni

Għal token ERC-20 sempliċi, iġġenera abbozz billi tuża l-pront ta '"skeletru bbażat fuq standards" hawn fuq. Imbagħad: (1) iċċekkja jekk tużax librerija ċċekkjata, (2) iċċekkja l-kontrolli tal-aċċess, (3) tiġġenera testijiet bl-"abbozz tal-każ tat-test" fil-pront u fil-fatt mexxi mill-inqas test wieħed ta' min iċempel diżonesti. Sib u nnota mill-inqas punt wieħed tas-sigurtà li l-AI ma tilfet.

lista ta' kontroll

  • [ ] Iddikjarajt b'mod ċar l-istandard u l-katina fil-pront.
  • [ ] Ridt produzzjoni ppruvata bbażata fuq il-librerija.
  • [ ] Liċenzja SPDX u verżjoni pragma disponibbli.
  • [ ] Hemm kontroll tal-aċċess f'kull funzjoni kritika.
  • [ ] Ħloqt u għamilt testijiet għal każijiet ta' limitu.
  • [ ] Ikkonfermajt li l-librerija/mudell huwa aġġornat.
  • [ ] Immarkajt il-kodiċi għall-awditjar u l-ittestjar; I ma ġġibu mingħajr sorveljanza fuq mainnet.