Nyereség:
- Képes a mesterséges intelligencia felhasználására keretrendszerek, tesztek és vázlatok áttekintésére a bevált könyvtárak (pl. OpenZeppelin) alapján, valamint annak megértése, hogy az emberek garantálják a termelés biztonságát
- Lehetőség a mesterséges intelligencia által előállított kódverzió, minta és hozzáférés-szabályozás ellenőrzésére fordítás, tesztelés és teszthálózat segítségével
- Az, hogy meg tudjuk különböztetni, hogy a fordítás nem jelenti azt, hogy biztonságos, és hogy a testnet és az auditálás elengedhetetlen.
Az intelligens szerződés megírása különbözik a hagyományos szoftverektől: az Ön által írt kód nyilvános, megváltoztathatatlan, és egy olyan program, amely közvetlenül pénzt mozgat. Ebben az egységben megtanulhatja, hogyan használhatja az AI-t intelligens szerződéses fejlesztési asszisztensként; Tanulunk a vázlatgyártástól a tesztírásig, a minta visszahívásától a gáz (tranzakciós díj) optimalizálásig. De legyünk tiszták az elején: az AI tervrajzokat készít; Az emberek biztosítják a biztonságos kódot, amely a gyártásba kerül.
Első a talaj: nyelv és környezet
A leggyakoribb intelligens szerződéses nyelv a Solidity (az Ethereum és az EVM nyelve – Ethereum Virtual Machine, a virtuális gép, amelyen a szerződések futnak – kompatibilis láncok). Az alternatíva a Vyper (egy Python-szerű nyelv, amelynek célja, hogy korlátozottabb és olvashatóbb legyen). Kódja gázt fogyaszt (az egyes tranzakciók költsége a blokklánc számára); A nem hatékony kód drága. A pontos kimenet eléréséhez kulcsfontosságú, hogy tisztán tartsa ezeket a kifejezéseket az AI-nak adott szövegkörnyezetben.
A mesterséges intelligencia a legértékesebb nem az "a nulláról való írás", hanem a keret + jó forma létrehozása: a szabványoknak megfelelő kezdés, egy terv, amelyre hozzáadhatja a szakértelmét.
Az AI használatának rétegei a kódolásban
1. Csontvázak generálása. A mesterséges intelligencia gyorsan kibányászza a szabványos token (ERC-20) vagy az NFT (ERC-721 – egyedülálló digitális eszközszabvány) vázát. De ügyeljen arra, hogy az AI egy bevált könyvtárat használjon: például az OpenZeppelint (a közösség megbízható, ellenőrzött szabványos szerződéses könyvtára). A szabály az, hogy a tesztelt blokkot használja, ahelyett, hogy a biztonságot a semmiből írná.
2. Funkció leírása és áttekintése. Egy létező függvény magyarázata a mesterséges intelligencia számára lehetővé teszi a logikai hibák korai észlelését.
3. Tesztgenerálás. Az AI jó tesztesetek generálására szélső esetekre: nulla bemenet, nagyon nagy szám, jogosulatlan hívó, ismételt hívás. Ez az egyik kihagyott forgatókönyvre emlékeztet.
4. Gáz és olvashatóság. A mesterséges intelligencia megjelöli a drága mintákat, például a szükségtelen tárolási írásokat, és alternatívákat javasol.
Tipp: Utasítsa az AI-t, hogy "épüljön az OpenZeppelin auditált szerződéseire, írja át a biztonságot a semmiből." Egy mesterséges intelligencia számára sokkal kockázatosabb eredeti biztonsági kódot írni, mint tesztelt könyvtárat használni.
Gyenge felszólítás / Erős felszólítás
Gyenge felszólítás:
Írj nekem jelképes szerződést.
Ez a prompt veszélyes: nem világos, melyik szabvány, melyik lánc, melyik könyvtár, melyik biztonsági követelmény. Az AI véletlenszerű, esetleg elavult vagy nem biztonságos kódot generál.
Erőteljes felszólítás:
Az Ön szerepköre: vezető Solidity fejlesztő. ERC-20 token piszkozat létrehozása az EVM-kompatibilis lánchoz. Szabályok:- Az OpenZeppelin auditált ERC20 és Ownable szerződései alapján.- Írja kifejezetten a Solidity verzió és licenc (SPDX) sort.- Csak a tulajdonosnak van engedélye a pénzverésre; adjon hozzá egy sapkát a végtelen nyomás ellen. - Adjon hozzá NatSpec megjegyzést minden funkcióhoz. - Írjon biztonságot a semmiből; Használja a szabványos blokkot. - Figyelmeztetés a végére: "Ez egy tervezet; auditálás és tesztelés szükséges". Jelölje meg azokat a területeket, amelyekben nem vagy biztos a // TODO segítségével.
Különbség: az erős prompt egyértelmű szerepet, szabványt, könyvtárat, biztonsági határt, dokumentációs és érvényesítési elvárásokat ad meg.
Négy másolható sablon
1) Szabvány alapú váz:
Az Ön szerepe: Solidity fejlesztő. Generáljon [ERC-20 / ERC-721 / staking] szerződési keretrendszert az OpenZeppelin auditált könyvtár alapján. Írjon SPDX licencet és pragma verziót. Adjon hozzá hozzáférés-vezérlést (ki hívhat) minden külső funkcióhoz. A biztonság újrafeltalálása; Használjon szabványos blokkokat. Ez egy piszkozat.
2) Funkció áttekintése:
Vizsgálja meg a következő funkciót, mint egy vezető fejlesztő: mit csinál, milyen állapotokat változtat meg, ki hívhatja? Jelölje meg a lehetséges logikai hibákat és biztonsági kockázatokat HIPOTÉZIS-ként, és mindegyiket a kód egy sorához kapcsolja. Ne mondd egyenesen, hogy „biztonságos”; csak sorold fel a figyelem pontjait.
3) Tesztforgatókönyv-vázlat:
Javasoljon teszteseteket ehhez a szerződéshez (ez lehet a Foundry/Hardhat tervezete). Kifejezetten fedezi a limites eseteket: nulla bemenet, nagyon nagy szám, jogosulatlan hívás, visszatérő hívás, elégtelen forrás. Írd meg, MIT erősít meg minden teszt!
4) Gáz és olvashatóság felülvizsgálata:
Ebben a szerződésben jelölje meg azokat a mintákat, amelyek csökkenthetik a gázköltséget: felesleges tároló írás, külső hívás a hurokban, ismétlődő számítás. Magyarázza meg az előtte/utána különbséget az egyes javaslatokban. Biztonságot feltörő optimalizációk ajánlása; Ha nem egyértelmű, mondja azt, hogy „kérdezze meg a könyvvizsgálót”.
Három mini tok (számokban)
1. eset – A csontváz 4 órát mentett meg. Az egyik csapat 30 perc alatt kibányászta az AI-val kötött, auditált könyvtári alapú átruházási szerződés vázát; Kézzel kb 4 órát vett igénybe. A csapat időt fordított a biztonságra és a tesztelésre. A haszon nem a biztonság átadásából származott, hanem az unalmas keretrendszer felgyorsításából.
2. eset – Elavult verzió csapda. Az AI olyan mintát hozott létre, amely átvitel útján nyers étert küld, ami már nem ajánlott, mert a képzési adatok elavultak. A fejlesztő észrevette ezt, és megváltoztatta a jelenlegi hívásalapú és visszalépés-védett mintára. Tanulság: Az AI könyvtára/mintája mindig naprakész; Az AI nem tud túl a képzés határidején.
3. eset – A tesztvázlat rejtett hibát észlelt. Az AI által készített "jogosulatlan hívó" teszt feltárta, hogy a fejlesztő elfelejtette a hozzáférés-szabályozást egy funkcióban. csak a tulajdonosnak hiányzik 1 sor, 5 perc alatt elkapták a tesztneten; Pénzkiesés történhetett a mainneten. Tanulság: Az AI lefedi az emberi holtteret a tesztelés során.
Biztonsági minták emlékezése mesterséges intelligencia segítségével
A mesterséges intelligencia alkalmas arra, hogy emlékeztesse Önt az ismert sebezhetőségi mintákra, például egy ellenőrzőlista. A leggyakoribb minták:
- Reentancy: Külső hívás kezdeményezése az állapot frissítése nélkül. Megoldás: ellenőrzések-hatások-kölcsönhatások sorrendje, visszatérési őr.
- Hozzáférés-szabályozás hiánya: Bárki meghívhatja a kritikus funkciót.
- Integer overflow/underfall: A Modern Solidity elkapja a legtöbbet, de még mindig kockázatot jelent az alacsony szintű kódban.
- Nem megfelelő bemenet érvényesítés: Nulla cím, nulla mennyiség ellenőrzés.
- Oracle-függőség: vak bizalom a külső adatokban (például az árban).
Figyelem: A mesterséges intelligencia elő tudja idézni ezt a listát, de nem tudja garantálni, hogy a listában szereplő elem az Ön konkrét kódjában szerepel-e. Az ellenőrző lista a kezdet; Nem helyettesíti a konténervezérlést.
Helyes szövegkörnyezet: Az AI jó kódjának titka
Az AI által előállított kód minősége közvetlenül függ a neki adott környezet minőségétől. A Web3-ban ez különösen kritikus, mert egy apró részlet (melyik lánc, melyik Solidity verzió, melyik token szabvány) megváltoztatja a teljes kimenetet. A jó kontextus a következőket tartalmazza:
- Céllánc és környezet: Ethereum mainnet vagy Layer 2 (olcsóbb oldallánc, amely a főlánc tetején fut)? A gáz költsége és bizonyos jellemzők lánconként eltérőek.
- Verzió és könyvtár: Melyik Solidity verzió, melyik OpenZeppelin verzió? Ha nincs megadva verzió, az AI elavult, elavult mintákat állíthat elő.
- Biztonsági követelmények: Van felső határ, szünetelhető, növelhető? Ezeket már az elején el kell mondani.
- Megszorítások: Világos korlátok, mint például "ne használjon összeállítást", "kerülje a külső hívást", "optimalizálja a gázt, de tartsa fenn az olvashatóságot".
Egy másik hatékony technika az, hogy először a MI-től kérjük meg a tervet, majd a kódot: "Először sorolja fel a szerződés funkcióit és azt, hogy mindegyik mit fog tenni; írja meg a kódot, miután jóváhagyom." Ez korán észreveszi, hogy a mesterséges intelligencia rossz irányba halad, és lehetővé teszi az építészeti döntés megőrzését.
Tipp: Kérdezd meg az AI-t, hogy "miért írtad ezt a kódot így?" kérdez. Az indoklás elmagyarázása felgyorsítja a tanulást, és felszínre hoz minden logikai hibát (pl. hamis biztonsági feltételezést). Ne bízzon egy olyan mesterséges intelligencia kimenetében, amely nem tudja megvédeni a saját kódját.
Gyakori hibák
- Az AI biztonságának megteremtése a semmiből. Használjon tesztelt könyvtárat.
- Nem erősíti meg az AI által készített verziót/mintát. Előfordulhat, hogy a képzési adatok régiek.
- Testnet megkerülése. Minden piszkozatnak futnia kell a teszthálózaton az éles indítás előtt.
- Nem ad hozzá NatSpec/dokumentációt. Az ellenőrzés és a karbantartás nehézkessé válik.
- "Össze van állítva, tehát biztonságos" tévhit. Az, hogy összeállítottak, nem jelenti azt, hogy biztonságban vagyunk.
- A hozzáférés-szabályozás elfelejtése. Ez az egyik leggyakoribb és legdrágább hiba.
Összefoglalva
- Az intelligens szerződésírás során az AI keretrendszereket, teszteket és felülvizsgálati tervezeteket készít; Az ember garantálja a gyártás biztonságát.
- Építsen biztonságot nem a semmiből, hanem a bevált könyvtárak (pl. OpenZeppelin) alapján.
- Az YZ által gyártott változatok és minták naprakészsége mindig megerősített.
- A tesztcsonkok értékesek az emberi holtfoltok rögzítésében (határesetek, hozzáférés-szabályozás).
- Összeállítottnak lenni nem jelenti azt, hogy biztonságban vagyunk; a testnet és az auditálás kötelező.
Pályázati feladat
Egy egyszerű ERC-20 tokenhez hozzon létre egy piszkozatot a fenti „szabványalapú váz” prompt segítségével. Ezután: (1) ellenőrizze, hogy használ-e ellenőrzött könyvtárat, (2) ellenőrizze a hozzáférés-vezérlőket, (3) teszteket generáljon a "teszteset vázlat" prompttal, és futtasson le legalább egy csaló hívó tesztet. Keressen meg és jegyezzen fel legalább egy biztonsági pontot, amelyet az AI nem fogadott el.
ellenőrző lista
- [ ] A promptban egyértelműen megadtam a szabványt és a láncot.
- [ ] Bevált könyvtári alapú produkciót akartam.
- [ ] SPDX licenc és pragma verzió elérhető.
- [ ] Minden kritikus funkcióhoz tartozik hozzáférés-vezérlés.
- [ ] Létrehoztam és lefuttattam a limites esetekre vonatkozó teszteket.
- [ ] Megerősítettem, hogy a könyvtár/minta naprakész.
- [ ] Megjelöltem a kódot az auditáláshoz és teszteléshez; Nem kaptam felügyelet nélkül a mainneten.