Aonad 2 / 11

Tacaíocht Cliste Scríbhneoireacht Conartha: Solidity/Vyper Dréacht agus Giniúint Cóid Slán

Gnóthachain:

  • Cumas hintleachta saorga a úsáid chun creataí, tástálacha agus dréachtaí athbhreithnithe a tháirgeadh bunaithe ar leabharlanna cruthaithe (m.sh. OpenZeppelin) agus a thuiscint go ráthaíonn daoine slándáil táirgeachta
  • Cumas an leagan cód, an patrún agus an rialú rochtana arna dtáirgeadh ag hintleachta saorga a fhíorú trí thiomsú, tástáil agus testnet
  • Ní hionann a bheith in ann idirdhealú a dhéanamh idir an tiomsú sin a bheith slán agus go bhfuil testnet agus iniúchadh riachtanach.

Tá sé difriúil ó ghnáth-bhogearraí a scríobh conradh cliste: tá an cód a scríobhann tú poiblí, do-aistrithe, agus clár a bhogann airgead go díreach. San aonad seo, beidh tú ag foghlaim conas AI a úsáid mar chúntóir forbartha conartha cliste; Foghlaimeoimid ó dhréacht-tháirgeadh go scríobhnóireacht tástála, ó aisghairm patrún go leas iomlán a bhaint as gás (táille idirbhirt). Ach déanaimis a bheith soiléir ón tús: táirgeann AI gormchlónna; Cinntíonn daoine cód slán a théann isteach i dtáirgeadh.

Ar dtús: teanga agus timpeallacht

Is í an teanga chonartha cliste is coitianta ná Solidity (teanga Ethereum agus EVM - Ethereum Virtual Machine, an meaisín fíorúil ar a ritheann conarthaí - slabhraí comhoiriúnacha). Is é an rogha eile ná Vyper (teanga cosúil le Python a bhfuil sé mar aidhm aige a bheith níos srianta agus níos inléite). ídíonn do chód gás (costas gach idirbhirt chuig an blockchain); Tá cód neamhéifeachtach costasach. Tá sé ríthábhachtach na téarmaí seo a choinneáil soiléir sa chomhthéacs a thugann tú don AI chun aschur cruinn a fháil.

An áit a bhfuil AI is luachmhaire ní i “scríbhneoireacht ón tús” ach i dtáirgeadh an chreata + dea-mhúnla: tús a chomhlíonann caighdeáin, treoirphlean chun do shaineolas a chur leis.

Sraitheanna de AI a úsáid i gcódú

1. Cnámharlaigh a ghiniúint. Déanann AI mianaigh go tapa ar chnámharlach chomhartha caighdeánach (ERC-20) nó NFT (ERC-721 - caighdeán sócmhainne digiteach uathúil). Ach bí cinnte go n-úsáidfidh an AI leabharlann chruthaithe: mar shampla, OpenZeppelin (leabharlann chonarthachta caighdeánach iniúchta iontaofa an phobail). Is é an riail ná an bloc tástála a úsáid seachas slándáil a scríobh ón tús.

2. Cur síos ar an bhfeidhm agus athbhreithniú. Trí fheidhm atá ann cheana a mhíniú do AI, is féidir leat earráidí loighce a aimsiú go luath.

3. Giniúint tástála. Tá AI go maith maidir le cásanna tástála a ghiniúint do chásanna imeall: ionchur nialasach, líon an-mhór, glaoiteoir neamhúdaraithe, glao arís agus arís eile. Cuireann sé seo i gcuimhne ceann de na cásanna a scipeann duine.

4. Gás agus inléiteacht. Léiríonn AI patrúin daor cosúil le scríobhann stórála gan ghá agus molann sé roghanna eile.

Leid: Tabhair treoir don AI "Tóg ar chonarthaí iniúchta OpenZeppelin, slándáil a athscríobh ón tús." Tá sé i bhfad níos baolaí do AI cód slándála bunaidh a scríobh ná leabharlann tástála a úsáid.

Leid lag / Pras láidir

Leid lag:

Scríobh conradh comhartha dom.

Tá an leid seo contúirteach: níl sé soiléir cén caighdeán, cén slabhra, cén leabharlann, cén riachtanas slándála. Gineann an AI cód randamach, b'fhéidir as dáta nó neamhchinnte.

Leid chumhachtach:

Do ról: forbróir sinsearach Solidity. Gin dréachtchomhartha ERC-20 le haghaidh slabhra atá comhoiriúnach le EVM. Rialacha:- Bunaithe ar chonarthaí iniúchta ERC20 agus Iniúchta OpenZeppelin.- Scríobh an leagan Solidity agus líne an cheadúnais (SPDX) go sainráite.- Is ag an úinéir amháin atá cead mionú; cuir caipín i gcoinne brú gan teorainn. - Cuir trácht NatSpec le gach feidhm. - Scríobh slándáil ón tús; Bain úsáid as an bloc caighdeánach. - Cuir rabhadh ag an deireadh: "Is dréacht é seo; tá iniúchadh agus tástáil ag teastáil". Marcáil na réimsí nach bhfuil tú cinnte fúthu le // TODO.

Difríocht: tugann leid láidir ionchais soiléire maidir le ról, caighdeán, leabharlann, teorainn slándála, doiciméadú agus bailíochtú.

Ceithre theimpléad inchóipeála

1) creatlach bunaithe ar chaighdeáin:

Do ról: Forbróir Solidity. Gin creat conartha [ERC-20 / ERC-721 / staking] bunaithe ar leabharlann iniúchta OpenZeppelin. Scríobh ceadúnas SPDX agus leagan pragma. Cuir rialú rochtana (cé atá in ann glaoch) le gach feidhm sheachtrach. Slándáil a athchruthú; Bain úsáid as bloic caighdeánach. Is dréacht é seo.

2) Athbhreithniú feidhm:

Scrúdaigh an fheidhm seo a leanas cosúil le forbróir sinsearach: cad a dhéanann sé, cad iad na stáit a athraíonn sé, cé atá in ann glaoch a chur air? Marcáil earráidí loighic féideartha agus rioscaí slándála mar hipitéis, ag nascadh gach ceann acu le líne sa chód. Ná habair "sábháilte" go hiomlán; liostaigh na pointí aird.

3) Dréacht cás tástála:

Cásanna tástála a mholadh don chonradh seo (d'fhéadfadh sé a bheith ina dhréacht le haghaidh Teilgcheárta/Hardhat). Clúdaíonn siad cásanna teorann go sonrach: ionchur nialasach, líon an-mhór, glao neamhúdaraithe, glaoch athiontrálaí, cistí neamhleor. Scríobh CAD A dheimhníonn gach triail.

4) Athbhreithniú ar ghás agus inléiteacht:

Sa chonradh seo, marcáil na patrúin is féidir leis an gcostas gáis a laghdú: scríobh stórála gan ghá, glaoch seachtrach sa lúb, ríomh athchleachtach. Mínigh an difríocht roimh/i ndiaidh i ngach moladh. Leas iomlán a bhaint as slándáil a mholadh; Mura bhfuil sé soiléir, abair "fiafraigh den iniúchóir".

Trí chás mion (i líon)

Cás 1 - Shábháil creatlach 4 uair an chloig. Bhain foireann amháin creatlach de chonradh dílseacháin leabhar-bhunaithe iniúchta le AI i 30 nóiméad; Thóg sé ~4 uair de láimh. Chaith an fhoireann am ar shlándáil agus ar thástáil. Ní ó aistriú slándála a tháinig an gnóthachan, ach as an gcreat tedious a bhrostú.

Cás 2 - Gaiste leagan as dáta. Tháirg an AI patrún a sheolann Éitear amh trí aistriú, rud nach moltar a thuilleadh toisc go bhfuil na sonraí oiliúna as dáta. Thug an forbróir é seo faoi deara agus d'athraigh sé go dtí an patrún reatha glao-bhunaithe agus athiontrála-chosanta. Ceacht: Deimhnítear i gcónaí go bhfuil leabharlann/patrún an AI cothrom le dáta; Níl a fhios ag AI níos faide ná dáta scoite na hoiliúna.

Cás 3 - Bug folaithe popped dréacht tástála. Léirigh an tástáil "glaoiteoir neamhúdaraithe" a tháirg an AI go raibh dearmad déanta ag an bhforbróir ar rialú rochtana i bhfeidhm. achÚinéir ar iarraidh 1 líne, gafa i 5 nóiméad ar testnet; D’fhéadfadh go mbeadh caillteanas cistí ar an bpríomhlíonra. Ceacht: Clúdaíonn AI spota dalla daonna i dtástáil.

Ag cuimhneamh ar phatrúin slándála le AI

Is maith an rud é AI ag meabhrú duit patrúin leochaileachta aitheanta amhail seicliosta. Na patrúin is coitianta:

  • Athiontráil: Glao seachtrach a dhéanamh gan an stádas a nuashonrú. Réiteach: seiceálacha-éifeachtaí-idirghníomhartha ordú, garda reentrancy.
  • Easpa rialaithe rochtana: Is féidir le duine ar bith an fheidhm chriticiúil a ghlaoch.
  • Slánuimhir thar maoil/ tearc-thitim: Gabhann Solidity Nua-Aimseartha an chuid is mó acu, ach fós ina riosca i gcód íseal-leibhéil.
  • Bailíochtú ionchurtha neamhleor: Seoladh nialais, rialú cainníochta nialasach.
  • Spleáchas Oracle: Iontaobhas dall i sonraí seachtracha (cosúil le praghas).
Aird: Is féidir le AI an liosta seo a thabhairt chun cuimhne, ach ní féidir leis a ráthú an bhfuil mír ar an liosta i do chód sonrach. Is tús é an seicliosta; Ní athsholáthar é do rialú coimeádáin.

An comhthéacs a fháil i gceart: An rún maidir le dea-chód ó AI

Braitheann cáilíocht an chóid a tháirgeann an AI go díreach ar cháilíocht an chomhthéacs a thugann tú dó. In Web3 tá sé seo thar a bheith tábhachtach mar go n-athraíonn mionsonra beag amháin (cén slabhra, cén leagan Solidity, cén caighdeán comhartha) an t-aschur iomlán. Áirítear le comhthéacs maith:

  • Slabhra sprice agus timpeallacht: Ethereum mainnet nó Sraith 2 (sidechain níos saoire a ritheann ar bharr an phríomhshlabhra)? Athraíonn costas gáis agus roinnt gnéithe de réir slabhra.
  • Leagan agus leabharlann: Cén leagan Solidity, cén leagan OpenZeppelin? Mura sonraítear leagan ar bith, féadfaidh AI patrúin as dáta, as dáta a tháirgeadh.
  • Riachtanais slándála: An bhfuil caipín ann, an féidir é a chur ar sos, an féidir é a mhéadú? Ba chóir iad seo a rá ón tús.
  • Srianta: Teorainneacha soiléire ar nós "ná húsáid cóimeáil", "seachain glaoch seachtrach", "uasmhéadú ar ghás ach coinnigh inléiteacht".

Teicníc chumhachtach eile is ea an plean a iarraidh ar an AI ar dtús, ansin an cód: "Ar dtús liostaigh feidhmeanna an chonartha seo agus cad a dhéanfaidh gach duine; scríobh an cód a luaithe a cheadóidh mé é." Glacann sé seo leis an AI ag dul sa treo mícheart go luath agus ligeann duit an cinneadh ailtireachta a choinneáil.

Leid: Fiafraigh den AI "cén fáth ar scríobh tú an cód seo mar seo?" fiafraigh. Má mhínítear an réasúnaíocht, cuirfear dlús le do chuid foghlama agus cuirfear aon earráidí loighciúla chun solais (m.sh. toimhde bréagach slándála). Ná muinín as aschur AI nach féidir a chód féin a chosaint.

Botúin choitianta

  • Slándáil a chur in AI ón tús. Bain úsáid as leabharlann tástála.
  • Gan an leagan/patrún arna tháirgeadh ag an AI a dhearbhú. Féadfaidh sonraí oiliúna a bheith sean.
  • Seachbhóthar testnet. Ba cheart do gach dréacht a bheith ar siúl ar an líonra tástála roimh é a chur beo.
  • Gan NatSpec/doiciméadúchán a chur leis. Éiríonn sé deacair iniúchadh agus cothabháil.
  • "Tá sé le chéile, mar sin tá sé sábháilte" míthuiscint. Ní chiallaíonn a bheith le chéile a bheith sábháilte.
  • Ag déanamh dearmad ar rialú rochtana. Tá sé ar cheann de na botúin is coitianta agus costasach.

Go hachomair

  • I scríbhinn conarthaí cliste, táirgeann AI creataí, tástálacha agus dréachtaí athbhreithnithe; Ráthaíonn an duine sábháilteacht táirgeachta.
  • Tóg slándáil ní ón tús ach bunaithe ar leabharlanna cruthaithe (m.sh. OpenZeppelin).
  • Deimhnítear i gcónaí cothrom le dáta na leaganacha agus na bpatrún a tháirgtear ag YZ.
  • Tá stubs tástála luachmhar chun spotaí dalla daonna a ghabháil (cásanna teorann, rialú rochtana).
  • Ní chiallaíonn a bheith le chéile a bheith sábháilte; tá testnet agus iniúchadh riachtanach.

Tasc feidhmchláir

Le haghaidh comhartha ERC-20 simplí, gin dréacht ag baint úsáide as an leid "cnámharlach bunaithe ar chaighdeáin" thuas. Ansin: (1) seiceáil an n-úsáideann sé leabharlann atá seiceáilte, (2) na rialuithe rochtana a sheiceáil, (3) tástálacha a ghiniúint leis an "dréacht cás tástála" pras agus tástáil glaoiteora bradaí amháin ar a laghad a reáchtáil. Aimsigh agus tabhair faoi deara pointe slándála amháin ar a laghad a chaill an AI.

seicliosta

  • [ ] Tá an caighdeán agus an slabhra ráite go soiléir agam sa leid.
  • [ ] Bhí táirgeadh cruthaithe sa leabharlann ag teastáil uaim.
  • [ ] Tá ceadúnas SPDX agus leagan pragma ar fáil.
  • [ ] Tá rialú rochtana i ngach feidhm ríthábhachtach.
  • [ ] Chruthaigh mé agus rith mé tástálacha le haghaidh cásanna teorann.
  • [ ] Dheimhnigh mé go bhfuil an leabharlann/patrún cothrom le dáta.
  • [ ] Mharcáil mé an cód le haghaidh iniúchta agus tástála; Ní bhfuair mé é gan mhaoirseacht ar mainnet.