Mga nadagdag:
- Kakayahang gumamit ng artificial intelligence upang makagawa ng mga balangkas, pagsubok at pagsusuri ng mga draft batay sa mga napatunayang aklatan (hal. OpenZeppelin) at maunawaan na ginagarantiyahan ng mga tao ang seguridad ng produksyon
- Kakayahang i-verify ang bersyon ng code, pattern at access control na ginawa ng artificial intelligence sa pamamagitan ng compilation, testing at testnet
- Ang kakayahang makilala na ang compilation ay hindi nangangahulugan ng pagiging secure at na ang testnet at pag-audit ay mahalaga.
Ang pagsulat ng isang matalinong kontrata ay iba sa ordinaryong software: ang code na iyong isinusulat ay pampubliko, hindi nababago, at isang programa na direktang gumagalaw ng pera. Sa unit na ito, matututunan mo kung paano gamitin ang AI bilang isang smart contract development assistant; Matututo tayo mula sa paggawa ng draft hanggang sa pagsubok sa pagsulat, mula sa pattern recall hanggang sa gas (transaction fee) optimization. Ngunit maging malinaw tayo sa simula: Ang AI ay gumagawa ng mga blueprint; Tinitiyak ng mga tao ang secure na code na napupunta sa produksyon.
Unang lupa: wika at kapaligiran
Ang pinakakaraniwang matalinong wika ng kontrata ay Solidity (ang wika ng Ethereum at EVM — Ethereum Virtual Machine, ang virtual machine kung saan tumatakbo ang mga kontrata — mga katugmang chain). Ang kahalili ay Vyper (isang wikang tulad ng Python na naglalayong maging mas napilitan at nababasa). Ang iyong code ay gumagamit ng gas (ang halaga ng bawat transaksyon sa blockchain); Ang hindi mahusay na code ay mahal. Ang pagpapanatiling malinaw sa mga terminong ito sa kontekstong ibinigay mo sa AI ay susi sa pagkuha ng tumpak na output.
Kung saan ang AI ay pinakamahalaga ay wala sa "pagsusulat mula sa simula" ngunit sa paggawa ng balangkas + magandang hulma: isang simulang sumusunod sa mga pamantayan, isang blueprint kung saan idadagdag ang iyong kadalubhasaan.
Mga layer ng paggamit ng AI sa coding
1. Pagbuo ng mga kalansay. Mabilis na mina ng AI ang skeleton ng isang karaniwang token (ERC-20) o NFT (ERC-721 — isang natatanging pamantayan ng digital asset). Ngunit siguraduhing gamitin ang AI ng isang napatunayang aklatan: halimbawa, OpenZeppelin (pinagkakatiwalaan, na-audit na karaniwang contracting library ng komunidad). Ang panuntunan ay gamitin ang nasubok na bloke sa halip na magsulat ng seguridad mula sa simula.
2. Paglalarawan ng function at pagsusuri. Ang pagpapaliwanag ng isang umiiral na function sa AI ay nagbibigay-daan sa iyong makita ang mga error sa logic nang maaga.
3. Pagbuo ng pagsubok. Ang AI ay mahusay sa pagbuo ng mga kaso ng pagsubok para sa mga edge na kaso: zero input, napakalaking numero, hindi awtorisadong tumatawag, paulit-ulit na tawag. Ito ay nagpapaalala sa isa sa mga senaryo na nilalaktawan.
4. Gas at madaling mabasa. Ang AI ay nagba-flag ng mga mamahaling pattern tulad ng hindi kinakailangang storage na nagsusulat at nagmumungkahi ng mga alternatibo.
Hint: Atasan ang AI na "Bumuo sa mga na-audit na kontrata ng OpenZeppelin, muling isulat ang seguridad mula sa simula." Mas mapanganib para sa isang AI na magsulat ng orihinal na code ng seguridad kaysa gumamit ng isang nasubok na library.
Mahinang prompt / Malakas na prompt
Mahinang prompt:
Sumulat sa akin ng isang token contract.
Mapanganib ang prompt na ito: hindi malinaw kung aling pamantayan, aling chain, aling library, aling kinakailangan sa seguridad. Ang AI ay bumubuo ng random, posibleng lipas na o hindi secure na code.
Napakahusay na prompt:
Ang iyong tungkulin: senior Solidity developer. Bumuo ng ERC-20 token draft para sa isang EVM compatible chain. Mga Panuntunan:- Batay sa na-audit na ERC20 at Ownable na kontrata ng OpenZeppelin.- Isulat nang tahasan ang Solidity version and license (SPDX) line.- Tanging ang may-ari lamang ang may pahintulot na mag-mint; magdagdag ng takip laban sa walang katapusang pagpindot. - Magdagdag ng komento ng NatSpec sa bawat function. - Sumulat ng seguridad mula sa simula; Gamitin ang karaniwang bloke. - Magdagdag ng babala sa dulo: "Ito ay isang draft; kailangan ang pag-audit at pagsubok". Markahan ang mga lugar na hindi ka sigurado sa // TODO.
Pagkakaiba: ang malakas na prompt ay nagbibigay ng malinaw na tungkulin, pamantayan, library, hangganan ng seguridad, dokumentasyon at mga inaasahan sa pagpapatunay.
Apat na maaaring kopyahin na mga template
1) balangkas batay sa pamantayan:
Ang iyong tungkulin: Solidity developer. Bumuo ng [ERC-20 / ERC-721 / staking]balangkas ng kontrata batay sa OpenZeppelin audited library. Sumulat ng lisensya ng SPDX at bersyon ng pragma. Magdagdag ng access control (na maaaring tumawag) sa bawat panlabas na function. Muling pag-imbento ng seguridad; Gumamit ng mga karaniwang bloke. Ito ay isang draft.
2) Pagsusuri ng function:
Suriin ang sumusunod na function tulad ng isang senior developer: ano ang ginagawa nito, anong estado ang binago nito, sino ang maaaring tumawag dito? Markahan ang mga posibleng error sa logic at mga panganib sa seguridad bilang HYPOTHESIS, na nagli-link sa bawat isa sa isang linya sa code. Huwag sabihing "ligtas" nang tahasan; ilista lamang ang mga punto ng atensyon.
3) Draft ng senaryo ng pagsubok:
Magmungkahi ng mga test case para sa kontratang ito (maaaring isang draft para sa Foundry/Hardhat). Partikular na saklawin ang mga kaso ng limitasyon: zero input, napakalaking numero, hindi awtorisadong tawag, muling pagpasok na tawag, hindi sapat na pondo. Isulat kung ANO ang kinukumpirma ng bawat pagsubok.
4) Pagsusuri ng gas at pagiging madaling mabasa:
Sa kontratang ito, markahan ang mga pattern na maaaring makabawas sa gastos ng gas: hindi kinakailangang pagsulat ng storage, panlabas na tawag sa loop, paulit-ulit na pagkalkula. Ipaliwanag ang pagkakaiba bago/pagkatapos ng bawat mungkahi. Magrekomenda ng mga pag-optimize na lumalabag sa seguridad; Kung hindi malinaw, sabihin ang "magtanong sa auditor".
Tatlong mini case (sa mga numero)
Case 1 — Na-save ang Skeleton ng 4 na oras. Isang team ang mina ng balangkas ng isang na-audit na library-based vesting contract sa AI sa loob ng 30 minuto; Tumagal ng ~4 na oras nang manu-mano. Ang koponan ay naglaan ng oras sa seguridad at pagsubok. Ang pakinabang ay hindi nagmula sa paglilipat ng seguridad, ngunit mula sa pagpapabilis ng nakakapagod na balangkas.
Kaso 2 — Lumang bersyon ng bitag. Ang AI ay gumawa ng pattern na nagpapadala ng hilaw na Ether sa pamamagitan ng paglipat, na hindi na inirerekomenda dahil luma na ang data ng pagsasanay. Napansin ito ng developer at binago ito sa kasalukuyang pattern na nakabatay sa tawag at protektado ng reentrancy. Aralin: Ang library/pattern ng AI ay palaging nakumpirma na napapanahon; Hindi alam ng AI ang lampas sa petsa ng cutoff ng pagsasanay.
Kaso 3 — Nag-pop sa test draft ang nakatagong bug. Ang pagsubok na "hindi awtorisadong tumatawag" na ginawa ng AI ay nagsiwalat na nakalimutan ng developer ang access control sa isang function. Tanging May-ari ang nawawalang 1 linya, nahuli sa loob ng 5 minuto sa testnet; Maaaring may pagkawala ng pondo sa mainnet. Aralin: Sinasaklaw ng AI ang blind spot ng tao sa pagsubok.
Pag-alala sa mga pattern ng seguridad gamit ang AI
Ang AI ay mahusay sa pagpapaalala sa iyo ng mga kilalang pattern ng kahinaan tulad ng isang checklist. Ang pinakakaraniwang mga pattern:
- Reentrancy: Paggawa ng external na tawag nang hindi ina-update ang status. Solusyon: checks-effects-interactions order, reentrancy guard.
- Kakulangan ng kontrol sa pag-access: Kahit sino ay maaaring tumawag sa kritikal na function.
- Integer overflow/underfall: Nahuhuli ng Modern Solidity ang karamihan sa kanila, ngunit isang panganib pa rin sa mababang antas na code.
- Hindi sapat na pagpapatunay ng input: Zero address, zero quantity control.
- Oracle dependency: Blind trust sa external data (gaya ng presyo).
Pansin: Maaaring maalala ng AI ang listahang ito, ngunit hindi nito magagarantiya kung ang isang item sa listahan ay nasa iyong partikular na code. Ang checklist ay isang panimula; Ito ay hindi isang kapalit para sa kontrol ng lalagyan.
Pagiging tama sa konteksto: Ang sikreto sa magandang code mula sa AI
Ang kalidad ng code na ginagawa ng AI ay direktang nakasalalay sa kalidad ng kontekstong ibibigay mo dito. Sa Web3 ito ay lalong kritikal dahil ang isang maliit na detalye (aling chain, kung aling bersyon ng Solidity, na token standard) ay nagbabago sa buong output. Kasama sa isang magandang konteksto ang:
- Target na chain at environment: Ethereum mainnet o isang Layer 2 (mas murang sidechain na tumatakbo sa ibabaw ng mainchain)? Ang halaga ng gas at ilang feature ay nag-iiba ayon sa chain.
- Bersyon at library: Aling bersyon ng Solidity, aling bersyon ng OpenZeppelin? Kung walang tinukoy na bersyon, maaaring gumawa ang AI ng mga luma at hindi na ginagamit na mga pattern.
- Mga kinakailangan sa seguridad: Mayroon bang takip, maaari ba itong i-pause, maaari ba itong madagdagan? Dapat itong sabihin sa simula pa lamang.
- Mga hadlang: I-clear ang mga limitasyon tulad ng "huwag gumamit ng assembly", "iwasan ang panlabas na tawag", "optimize ang gas ngunit panatilihin ang pagiging madaling mabasa."
Ang isa pang makapangyarihang pamamaraan ay ang tanungin muna ang AI para sa plano, pagkatapos ay ang code: "Ilista muna ang mga function ng kontratang ito at kung ano ang gagawin ng bawat isa; isulat ang code sa sandaling maaprubahan ko ito." Maaga nitong nahuhuli ang AI na papunta sa maling direksyon at pinapayagan kang panatilihin ang desisyon sa arkitektura.
Hint: Tanungin ang AI "bakit mo isinulat ang code na ito nang ganito?" magtanong. Ang pagpapaliwanag sa katwiran ay parehong magpapabilis sa iyong pag-aaral at maghahatid sa ibabaw ng anumang mga lohikal na pagkakamali (hal. isang maling palagay sa seguridad). Huwag magtiwala sa output ng isang AI na hindi kayang ipagtanggol ang sarili nitong code.
Mga karaniwang pagkakamali
- Ang paglalagay ng seguridad sa AI mula sa simula. Gumamit ng nasubok na library.
- Hindi kinukumpirma ang bersyon/pattern na ginawa ng AI. Maaaring luma na ang data ng pagsasanay.
- Pag-bypass sa testnet. Dapat tumakbo ang bawat draft sa network ng pagsubok bago mag-live.
- Hindi nagdaragdag ng NatSpec/dokumentasyon. Nagiging mahirap ang inspeksyon at pagpapanatili.
- "Ito ay pinagsama-sama, kaya ito ay ligtas" maling kuru-kuro. Ang pagiging pinagsama-sama ay hindi nangangahulugan ng pagiging ligtas.
- Nakakalimutan ang access control. Ito ay isa sa mga pinakakaraniwang at mamahaling pagkakamali.
Sa buod
- Sa matalinong pagsusulat ng kontrata, gumagawa ang AI ng mga balangkas, pagsubok at mga draft ng pagsusuri; Ginagarantiyahan ng tao ang kaligtasan ng produksyon.
- Bumuo ng seguridad hindi mula sa simula ngunit batay sa mga napatunayang aklatan (hal. OpenZeppelin).
- Ang pagiging napapanahon ng mga bersyon at pattern na ginawa ng YZ ay palaging nakumpirma.
- Ang mga test stub ay mahalaga sa pagkuha ng mga blind spot ng tao (limitahan ang mga kaso, kontrol sa pag-access).
- Ang pagiging pinagsama-sama ay hindi nangangahulugan ng pagiging ligtas; testnet at pag-audit ay isang kinakailangan.
Gawain ng aplikasyon
Para sa isang simpleng ERC-20 token, bumuo ng draft gamit ang "standards-based skeleton" na prompt sa itaas. Pagkatapos: (1) suriin kung gumagamit ito ng isang naka-check na library, (2) suriin ang mga kontrol sa pag-access, (3) bumuo ng mga pagsubok gamit ang prompt na "test case draft" at aktwal na magpatakbo ng hindi bababa sa isang pagsubok na rogue-caller. Maghanap at tandaan ang hindi bababa sa isang punto ng seguridad na napalampas ng AI.
checklist
- [ ] Malinaw kong sinabi ang pamantayan at chain sa prompt.
- [ ] Gusto ko ng proven library-based production.
- [ ] Magagamit ang lisensya ng SPDX at pragma na bersyon.
- [ ] Mayroong access control sa bawat kritikal na function.
- [ ] Gumawa at nagpatakbo ako ng mga pagsubok para sa mga kaso ng limitasyon.
- [ ] Kinumpirma ko na ang library/pattern ay napapanahon.
- [ ] Minarkahan ko ang code para sa pag-audit at pagsubok; Hindi ko ito na-unsupervised sa mainnet.