zisky:
- Schopnosť používať umelú inteligenciu na vytváranie rámcov, testov a kontrolných návrhov na základe osvedčených knižníc (napr. OpenZeppelin) a pochopiť, že ľudia zaručujú bezpečnosť výroby
- Schopnosť overiť verziu kódu, vzor a riadenie prístupu vytvorené umelou inteligenciou prostredníctvom kompilácie, testovania a testovacej siete
- Byť schopný rozlíšiť, že kompilácia neznamená byť bezpečná a že testnet a audit sú nevyhnutné.
Napísanie inteligentnej zmluvy sa líši od bežného softvéru: kód, ktorý napíšete, je verejný, nemenný a je to program, ktorý priamo presúva peniaze. V tejto lekcii sa naučíte používať AI ako inteligentného asistenta rozvoja zmlúv; Naučíme sa od výroby návrhu po písanie testov, od stiahnutia vzoru až po optimalizáciu plynu (transakčný poplatok). Ale aby bolo jasné hneď od začiatku: AI produkuje plány; Ľudia zabezpečujú bezpečný kód, ktorý ide do výroby.
Prvý dôvod: jazyk a prostredie
Najbežnejším jazykom inteligentných zmlúv je Solidity (jazyk Etherea a EVM – virtuálny stroj Ethereum, virtuálny stroj, na ktorom prebiehajú zmluvy – kompatibilné reťazce). Alternatívou je Vyper (jazyk podobný Pythonu, ktorého cieľom je byť obmedzenejší a čitateľnejší). Váš kód spotrebúva plyn (cena každej transakcie do blockchainu); Neefektívny kód je drahý. Udržiavanie týchto výrazov jasné v kontexte, ktorý ich dávate AI, je kľúčom k získaniu presného výstupu.
Umelá inteligencia nie je najcennejšia v „písaní od začiatku“, ale vo vytváraní rámca + dobrej formy: začiatok v súlade so štandardmi, plán, do ktorého môžete pridať svoje odborné znalosti.
Vrstvy používania AI v kódovaní
1. Generovanie kostier. Umelá inteligencia rýchlo vydoluje kostru štandardného tokenu (ERC-20) alebo NFT (ERC-721 – jedinečný štandard digitálnych aktív). Uistite sa však, že AI používa osvedčenú knižnicu: napríklad OpenZeppelin (dôveryhodná a kontrolovaná štandardná zmluvná knižnica komunity). Pravidlom je radšej použiť testovaný blok, ako písať bezpečnosť od začiatku.
2. Popis a prehľad funkcií. Vysvetlenie existujúcej funkcie AI vám umožní včas odhaliť logické chyby.
3. Generovanie testu. AI je dobrá pri vytváraní testovacích prípadov pre okrajové prípady: nulový vstup, veľmi veľký počet, neoprávnený volajúci, opakované volanie. To pripomína jeden zo scenárov, ktoré človek preskočí.
4. Plyn a čitateľnosť. AI označuje drahé vzory, ako sú zbytočné zápisy do úložiska, a navrhuje alternatívy.
Pomôcka: Inštruujte AI, aby „stavte na auditovaných zmluvách OpenZeppelin, prepíšte bezpečnosť od začiatku“. Pre AI je oveľa riskantnejšie napísať originálny bezpečnostný kód ako použiť testovanú knižnicu.
Slabá výzva / Silná výzva
Slabá výzva:
Napíšte mi symbolickú zmluvu.
Táto výzva je nebezpečná: nie je jasné, ktorý štandard, ktorý reťazec, ktorá knižnica, ktorá požiadavka na bezpečnosť. AI generuje náhodný, možno zastaraný alebo nezabezpečený kód.
Výkonná výzva:
Vaša úloha: senior vývojár Solidity. Vygenerujte návrh tokenu ERC-20 pre reťazec kompatibilný s EVM. Pravidlá:- Na základe auditovaných zmlúv OpenZeppelin ERC20 a Ownable.- Explicitne napíšte verziu a licenciu (SPDX) Solidity.- Iba vlastník má povolenie raziť; pridať uzáver proti nekonečnému lisovaniu. - Ku každej funkcii pridajte komentár NatSpec. - Napíšte bezpečnosť od začiatku; Použite štandardný blok. - Na koniec pridajte varovanie: „Toto je návrh; vyžaduje sa audit a testovanie“. Označte oblasti, o ktorých si nie ste istí, pomocou // TODO.
Rozdiel: silná výzva dáva jasnú úlohu, štandard, knižnicu, bezpečnostné hranice, dokumentáciu a očakávania overenia.
Štyri kopírovateľné šablóny
1) Kostra založená na normách:
Vaša úloha: Vývojár Solidity. Vytvorte [ERC-20 / ERC-721 / staking] zmluvný rámec založený na auditovanej knižnici OpenZeppelin. Napíšte licenciu SPDX a verziu pragma. Pridajte riadenie prístupu (kto môže volať) ku každej externej funkcii. Znovuobjavenie bezpečnosti; Použite štandardné bloky. Toto je návrh.
2) Kontrola funkcie:
Preskúmajte nasledujúcu funkciu ako starší vývojár: čo robí, aké stavy mení, kto ju môže volať? Označte možné logické chyby a bezpečnostné riziká ako HYPOTÉZU, pričom každú prepojte s riadkom v kóde. Nehovorte priamo „bezpečné“; len vymenujte body pozornosti.
3) Návrh testovacieho scenára:
Navrhnite testovacie prípady pre túto zmluvu (môže to byť návrh pre Foundry/Hardhat). Špecificky pokrývajú limitné prípady: nulový vstup, veľmi veľký počet, neoprávnené volanie, opätovné volanie, nedostatok finančných prostriedkov. Napíšte, ČO každý test potvrdzuje.
4) Kontrola plynu a čitateľnosti:
V tejto zmluve označte vzory, ktoré môžu znížiť náklady na plyn: zbytočné zapisovanie skladovania, externé volanie v slučke, opakované výpočty. Vysvetlite rozdiel pred/po v každom návrhu. Odporučiť optimalizácie narúšajúce bezpečnosť; Ak to nie je jasné, povedzte „spýtajte sa audítora“.
Tri mini puzdrá (v číslach)
Prípad 1 – Kostra ušetrená 4 hodiny. Jeden tím vydoloval kostru preverovanej zmluvy s AI založenej na knižnici za 30 minút; Manuálne to trvalo ~ 4 hodiny. Tím venoval čas bezpečnosti a testovaniu. Zisk neprišiel z prenosu bezpečnosti, ale z urýchlenia únavného rámca.
Prípad 2 – Zastaraná verzia pasce. AI vytvorila vzor, ktorý posiela surový éter prenosom, čo sa už neodporúča, pretože tréningové údaje sú zastarané. Vývojár si to všimol a zmenil to na súčasný vzor založený na volaní a chránený proti opätovnému vstupu. Lekcia: Knižnica/vzor AI je vždy potvrdený ako aktuálny; AI nevie po dátume ukončenia školenia.
Prípad 3 – Testovací návrh objavil skrytú chybu. Test „neoprávneného volajúceho“, ktorý vytvorila AI, odhalil, že vývojár zabudol kontrolu prístupu vo funkcii. onlyMajiteľ chýba 1 riadok, chytený do 5 minút na testnet; Mohlo dôjsť k strate finančných prostriedkov na hlavnej sieti. Lekcia: AI pri testovaní pokrýva ľudský slepý uhol.
Zapamätanie bezpečnostných vzorov pomocou AI
Umelá inteligencia vám dobre pripomína známe vzorce zraniteľnosti, napríklad kontrolný zoznam. Najbežnejšie vzory:
- Reentrancy: Uskutočnenie externého hovoru bez aktualizácie stavu. Riešenie: kontroly-efekty-poriadok interakcií, stráženie opätovného vstupu.
- Nedostatok kontroly prístupu: Ktokoľvek môže zavolať kritickú funkciu.
- Integer overflow/underfall: Modern Solidity zachytí väčšinu z nich, no stále predstavuje riziko v nízkoúrovňovom kóde.
- Neadekvátne overenie vstupu: Nulová adresa, kontrola nulového množstva.
- Závislosť od Oracle: Slepá dôvera v externé dáta (ako je cena).
Upozornenie: AI dokáže tento zoznam vyvolať, ale nemôže zaručiť, či je položka v zozname vo vašom špecifickom kóde. Kontrolný zoznam je začiatok; Nie je náhradou za riadenie kontajnerov.
Správny kontext: Tajomstvo dobrého kódu od AI
Kvalita kódu, ktorý AI vytvára, závisí priamo od kvality kontextu, ktorý mu dáte. Vo Web3 je to obzvlášť dôležité, pretože jeden malý detail (ktorý reťazec, ktorá verzia Solidity, ktorý štandard tokenu) mení celý výstup. Dobrý kontext zahŕňa:
- Cieľový reťazec a prostredie: Ethereum mainnet alebo Layer 2 (lacnejší vedľajší reťazec, ktorý beží na vrchu hlavného reťazca)? Cena plynu a niektoré funkcie sa líšia podľa reťazca.
- Verzia a knižnica: Ktorá verzia Solidity, ktorá verzia OpenZeppelin? Ak nie je špecifikovaná žiadna verzia, AI môže vytvárať zastarané, zastarané vzory.
- Bezpečnostné požiadavky: Existuje strop, možno ho pozastaviť, možno ho zvýšiť? Toto treba povedať od samého začiatku.
- Obmedzenia: Jasné limity ako „nepoužívať montáž“, „vyhýbať sa externým hovorom“, „optimalizovať plyn, ale zachovať čitateľnosť“.
Ďalšou účinnou technikou je požiadať AI najskôr o plán a potom kód: „Najskôr uveďte funkcie tejto zmluvy a to, čo každá urobí; napíšte kód, keď ho schválim.“ To včas zachytí AI, ktorá ide nesprávnym smerom, a umožní vám zachovať architektonické rozhodnutie.
Tip: Opýtajte sa AI „prečo ste napísali tento kód takto?“ spýtaj sa. Vysvetlenie zdôvodnenia urýchli vaše učenie a vyplaví na povrch všetky logické chyby (napr. nesprávny predpoklad bezpečnosti). Neverte výstupom AI, ktoré nedokáže brániť svoj vlastný kód.
Časté chyby
- Vloženie bezpečnosti do AI od začiatku. Použite testovanú knižnicu.
- Nepotvrdzuje sa verzia/vzor vytvorený AI. Údaje o tréningu môžu byť staré.
- Obchádzanie testnetu. Každý koncept by sa mal pred spustením spustiť v testovacej sieti.
- Nepridávam NatSpec/dokumentáciu. Kontrola a údržba sú náročné.
- Mylná predstava „je to zostavené, takže je to bezpečné“. Byť zostavený neznamená byť v bezpečí.
- Zabudnite na kontrolu prístupu. Je to jedna z najčastejších a najdrahších chýb.
V súhrne
- Pri inteligentnom písaní zmlúv AI vytvára rámce, testy a návrhy revízií; Bezpečnosť výroby zaručuje človek.
- Budujte bezpečnosť nie od začiatku, ale na základe osvedčených knižníc (napr. OpenZeppelin).
- Vždy je potvrdená aktuálnosť verzií a vzorov vyrábaných YZ.
- Testovacie štuple sú cenné pri zachytávaní ľudských slepých miest (limitné prípady, kontrola prístupu).
- Byť zostavený neznamená byť v bezpečí; testnet a audit sú nevyhnutnosťou.
Aplikačná úloha
V prípade jednoduchého tokenu ERC-20 vygenerujte koncept pomocou výzvy „kostra založená na štandardoch“ vyššie. Potom: (1) skontrolujte, či používa skontrolovanú knižnicu, (2) skontrolujte kontroly prístupu, (3) vygenerujte testy s výzvou „test case draft“ a skutočne spustite aspoň jeden test nečestného volajúceho. Nájdite a poznačte si aspoň jeden bezpečnostný bod, ktorý AI vynechala.
kontrolný zoznam
- [ ] Vo výzve som jasne uviedol štandard a reťaz.
- [ ] Chcel som osvedčenú produkciu založenú na knižnici.
- [ ] K dispozícii je licencia SPDX a verzia pragma.
- [ ] V každej kritickej funkcii existuje kontrola prístupu.
- [ ] Vytvoril som a spustil testy pre limitné prípady.
- [ ] Potvrdil som, že knižnica/vzor je aktuálny.
- [ ] Označil som kód na auditovanie a testovanie; Nedostal som to bez dozoru na mainnete.