Birlik 2 / 11

Aqlli kontrakt yozishni qo'llab-quvvatlash: mustahkamlik/Vyper loyihasi va xavfsiz kod yaratish

Daromadlar:

  • Tasdiqlangan kutubxonalar (masalan, OpenZeppelin) asosida ramkalar, testlar va loyihalarni ko'rib chiqish uchun sun'iy intellektdan foydalanish va odamlar ishlab chiqarish xavfsizligini kafolatlashini tushunish qobiliyati
  • Kompilyatsiya, test va testnet orqali sun'iy intellekt tomonidan ishlab chiqarilgan kod versiyasini, naqsh va kirishni boshqarishni tekshirish qobiliyati
  • Ushbu kompilyatsiyani ajrata olish xavfsiz bo'lishni anglatmaydi va testnet va audit muhim ahamiyatga ega.

Aqlli shartnomani yozish oddiy dasturiy ta'minotdan farq qiladi: siz yozgan kod ommaviy, o'zgarmas va pulni bevosita harakatga keltiradigan dasturdir. Ushbu bo'limda siz AIdan aqlli kontraktni ishlab chiqish yordamchisi sifatida qanday foydalanishni o'rganasiz; Biz qoralama ishlab chiqarishdan sinov yozishgacha, namunani eslab qolishdan tortib, gazni (tranzaksiya to'lovi) optimallashtirishgacha o'rganamiz. Ammo boshidan aniq aytaylik: AI chizmalarni ishlab chiqaradi; Odamlar ishlab chiqarishga kiradigan xavfsiz kodni ta'minlaydi.

Birinchi asos: til va muhit

Eng keng tarqalgan aqlli shartnoma tili bu Solidity (Ethereum va EVM tili — Ethereum Virtual Machine, shartnomalar ishlaydigan virtual mashina — mos zanjirlar). Muqobil variant - Vyper (ko'proq cheklangan va o'qilishi mumkin bo'lgan Python-ga o'xshash til). Sizning kodingiz gaz iste'mol qiladi (blokcheynga har bir tranzaksiya narxi); Samarasiz kod qimmat. Ushbu shartlarni AIga bergan kontekstda aniq saqlash aniq natija olishning kalitidir.

AI eng qimmatli bo'lgan joyda "noldan yozish" emas, balki ramka + yaxshi qolip ishlab chiqarishdir: standartlarga mos keladigan boshlang'ich, tajribangizni qo'shadigan reja.

Kodlashda AIdan foydalanish qatlamlari

1. Skeletlarni hosil qilish. AI tezda standart token (ERC-20) yoki NFT (ERC-721 - noyob raqamli aktiv standarti) skeletini qazib oladi. Ammo AIni tasdiqlangan kutubxonadan foydalanishga ishonch hosil qiling: masalan, OpenZeppelin (hamjamiyatning ishonchli, tekshirilgan standart shartnoma kutubxonasi). Qoida xavfsizlikni noldan yozishdan ko'ra sinovdan o'tgan blokdan foydalanishdir.

2. Funktsiya tavsifi va ko'rib chiqish. Mavjud funktsiyani sun'iy intellektga tushuntirish mantiqiy xatolarni erta aniqlash imkonini beradi.

3. Test yaratish. AI chekka holatlar uchun test holatlarini yaratishda yaxshi: nol kiritish, juda katta raqam, ruxsatsiz qo'ng'iroq qiluvchi, takroriy qo'ng'iroq. Bu o'tkazib yuborilgan stsenariylardan birini eslatadi.

4. Gaz va o'qilishi. AI keraksiz xotira yozish va muqobil variantlarni taklif qilish kabi qimmat naqshlarni belgilaydi.

Maslahat: AIga "OpenZeppelin tomonidan tekshirilgan shartnomalar asosida qurish, xavfsizlikni noldan qayta yozish" ga ko'rsatma bering. AI uchun asl xavfsizlik kodini yozish sinovdan o'tgan kutubxonadan foydalanishdan ko'ra ancha xavflidir.

Zaif taklif / Kuchli taklif

Zaif taklif:

Menga token shartnomasini yozing.

Bu taklif xavfli: qaysi standart, qaysi zanjir, qaysi kutubxona, qaysi xavfsizlik talabi aniq emas. AI tasodifiy, ehtimol eskirgan yoki xavfli kodni yaratadi.

Kuchli so'rov:

Sizning rolingiz: katta Solidity dasturchisi. EVM mos zanjiri uchun ERC-20 token loyihasini yarating. Qoidalar:- OpenZeppelin tomonidan tekshirilgan ERC20 va Ownable shartnomalari asosida.- Solidity versiyasi va litsenziya (SPDX) qatorini aniq yozing.- Faqat egasi zarb qilish uchun ruxsatga ega; cheksiz bosishga qarshi qopqoq qo'shing. - Har bir funktsiyaga NatSpec sharhini qo'shing. - xavfsizlikni noldan yozish; Standart blokdan foydalaning. - Oxirida ogohlantirish qo'shing: "Bu qoralama; tekshirish va sinovdan o'tkazish kerak". Ishonmagan joylarni // TODO bilan belgilang.

Farqi: kuchli taklif aniq rol, standart, kutubxona, xavfsizlik chegarasi, hujjatlashtirish va tasdiqlash taxminlarini beradi.

To'rt nusxa ko'chirish shablonlari

1) Standartlarga asoslangan skelet:

Sizning rolingiz: Solidity dasturchisi. OpenZeppelin tomonidan tekshirilgan kutubxona asosida [ERC-20 / ERC-721 / staking] shartnoma tizimini yarating. SPDX litsenziyasi va pragma versiyasini yozing. Har bir tashqi funktsiyaga kirish boshqaruvini (kim qo'ng'iroq qilishi mumkin) qo'shing. Xavfsizlikni qayta kashf qilish; Standart bloklardan foydalaning. Bu qoralama.

2) Funktsiyani tekshirish:

Katta dasturchi kabi quyidagi funktsiyani ko'rib chiqing: u nima qiladi, qanday holatlarni o'zgartiradi, kim uni chaqirishi mumkin? Mumkin bo'lgan mantiqiy xatolar va xavfsizlik xavflarini HİPOTEZA sifatida belgilang, ularning har birini koddagi qatorga bog'lang. To'g'ridan-to'g'ri "xavfsiz" deb aytmang; faqat diqqatga sazovor joylarni sanab o'ting.

3) Test stsenariysi loyihasi:

Ushbu shartnoma uchun sinov holatlarini taklif qiling (Foundry/Hardhat uchun qoralama bo'lishi mumkin). Xususan, cheklov holatlarini qamrab oladi: nol kiritish, juda katta raqam, ruxsatsiz qo'ng'iroq, qayta qo'ng'iroq qilish, mablag' yetishmasligi. Har bir test NIMA tasdiqlaganini yozing.

4) Gaz va o'qish qobiliyatini tekshirish:

Ushbu shartnomada gaz narxini kamaytirishi mumkin bo'lgan naqshlarni belgilang: keraksiz saqlash yozuvi, tsikldagi tashqi qo'ng'iroq, takroriy hisoblash. Har bir taklifda oldin/keyin farqni tushuntiring. Xavfsizlikni buzadigan optimallashtirishni tavsiya eting; Agar aniq bo'lmasa, "auditordan so'rang" deb ayting.

Uchta mini ish (raqamda)

1-holat - Skelet 4 soat saqlandi. Bir jamoa 30 daqiqada AI bilan tekshirilgan kutubxonaga asoslangan mulk huquqi shartnomasining skeletini qazib oldi; Qo'lda ~ 4 soat davom etdi. Jamoa xavfsizlik va sinovlarga vaqt ajratdi. Daromad xavfsizlikni uzatishdan emas, balki zerikarli ramkani tezlashtirishdan keldi.

2-holat - eskirgan versiya tuzog'i. AI xom Eterni uzatish orqali yuboradigan namunani ishlab chiqardi, bu endi tavsiya etilmaydi, chunki o'quv ma'lumotlari eskirgan. Ishlab chiquvchi buni payqadi va uni joriy qo'ng'iroqqa asoslangan va qayta kirishdan himoyalangan naqshga o'zgartirdi. Dars: AI kutubxonasi/naqsh har doim yangilanganligi tasdiqlanadi; AI mashg'ulotning tugash sanasidan keyin bilmaydi.

3-holat - sinov loyihasi ochilgan yashirin xato. AI tomonidan ishlab chiqarilgan "ruxsatsiz qo'ng'iroq qiluvchi" testi ishlab chiquvchi funktsiyada kirishni boshqarishni unutganligini aniqladi. onlyOwner 1 satr etishmayapti, testnetda 5 daqiqada ushlandi; Asosiy tarmoqda mablag' yo'qolishi mumkin edi. Dars: AI sinovda insonning ko'r joyini qoplaydi.

AI bilan xavfsizlik namunalarini eslab qolish

AI nazorat ro'yxati kabi ma'lum zaiflik namunalarini eslatishda yaxshi. Eng keng tarqalgan naqshlar:

  • Qayta kirish: holatni yangilamasdan tashqi qo'ng'iroq qilish. Yechim: tekshiruvlar-effektlar-o'zaro ta'sirlar tartibi, qayta kirish qo'riqchisi.
  • Kirish nazoratining yo'qligi: har kim muhim funktsiyani chaqirishi mumkin.
  • Butun sonlarning to'lib ketishi/pastlanishi: Zamonaviy mustahkamlik ularning ko'pini ushlaydi, ammo past darajadagi kodda hali ham xavf mavjud.
  • Noto'g'ri kirish tekshiruvi: nol manzil, nol miqdor nazorati.
  • Oracle qaramligi: tashqi ma'lumotlarga (masalan, narx) ko'r-ko'rona ishonch.
Diqqat: AI ushbu ro'yxatni eslab qolishi mumkin, ammo u ro'yxatdagi element sizning maxsus kodingizda ekanligiga kafolat bera olmaydi. Tekshirish ro'yxati - bu boshlang'ich; Bu konteyner nazoratining o'rnini bosmaydi.

Kontekstni to'g'ri tushunish: AIdan yaxshi kodning siri

AI ishlab chiqaradigan kodning sifati bevosita siz bergan kontekstning sifatiga bog'liq. Web3-da bu juda muhim, chunki bitta kichik tafsilot (qaysi zanjir, qaysi Solidity versiyasi, qaysi token standarti) butun chiqishni o'zgartiradi. Yaxshi kontekst quyidagilarni o'z ichiga oladi:

  • Maqsadli zanjir va atrof-muhit: Ethereum asosiy tarmog'i yoki Layer 2 (asosiy zanjirning tepasida ishlaydigan arzonroq yon zanjir)? Gaz narxi va ba'zi xususiyatlar zanjirga qarab farq qiladi.
  • Versiya va kutubxona: Qaysi Solidity versiyasi, qaysi OpenZeppelin versiyasi? Hech qanday versiya ko'rsatilmagan bo'lsa, AI eskirgan, eskirgan naqshlarni ishlab chiqishi mumkin.
  • Xavfsizlik talablari: Qopqoq bormi, uni to'xtatib turish mumkinmi, uni oshirish mumkinmi? Bularni boshidan aytish kerak.
  • Cheklovlar: "yig'ishdan foydalanmang", "tashqi qo'ng'iroqdan saqlaning", "gazni optimallashtiring, lekin o'qishni saqlab turing" kabi cheklovlarni aniqlang.

Yana bir kuchli usul - avval AIdan rejani, so'ngra kodni so'rash: "Avval ushbu shartnomaning funktsiyalarini va har biri nima qilishini sanab o'ting; men uni tasdiqlaganimdan keyin kodni yozing." Bu AI noto'g'ri yo'nalishda ketayotganini erta ushlaydi va arxitektura qarorini saqlab qolishga imkon beradi.

Maslahat: AIdan "nega bu kodni shunday yozdingiz?" Deb so'rang. so'rang. Mantiqiy tushuntirish sizning o'rganishingizni tezlashtiradi va har qanday mantiqiy xatolarni yuzaga keltiradi (masalan, noto'g'ri xavfsizlik taxmini). O'z kodini himoya qila olmaydigan sun'iy intellektning chiqishiga ishonmang.

Umumiy xatolar

  • AIda xavfsizlikni noldan o'rnatish. Tekshirilgan kutubxonadan foydalaning.
  • AI tomonidan ishlab chiqarilgan versiyani/naqshni tasdiqlamaydi. Trening ma'lumotlari eski bo'lishi mumkin.
  • Testnetni chetlab o'tish. Har bir qoralama jonli efirga chiqishdan oldin sinov tarmog‘ida ishlashi kerak.
  • NatSpec/hujjatlarni qo'shmaslik. Tekshirish va texnik xizmat ko'rsatish qiyinlashadi.
  • "U tuzilgan, shuning uchun u xavfsiz" degan noto'g'ri tushuncha. Kompilyatsiya qilish xavfsiz bo'lishni anglatmaydi.
  • Kirish nazoratini unutish. Bu eng keng tarqalgan va qimmat xatolardan biridir.

Xulosa

  • Aqlli shartnoma yozishda AI ramkalar, testlar va ko'rib chiqish loyihalarini ishlab chiqaradi; Inson ishlab chiqarish xavfsizligini kafolatlaydi.
  • Xavfsizlikni noldan emas, balki tasdiqlangan kutubxonalar (masalan, OpenZeppelin) asosida yarating.
  • YZ tomonidan ishlab chiqarilgan versiyalar va naqshlarning dolzarbligi har doim tasdiqlanadi.
  • Sinov stublari insonning ko'r nuqtalarini (cheklangan holatlar, kirishni boshqarish) olishda qimmatlidir.
  • Kompilyatsiya qilish xavfsiz bo'lishni anglatmaydi; testnet va audit majburiydir.

Ilova vazifasi

Oddiy ERC-20 tokeni uchun yuqoridagi “standartlarga asoslangan skelet” ko‘rsatmasi yordamida qoralama yarating. Keyin: (1) tekshirilgan kutubxonadan foydalanishini tekshiring, (2) kirishni boshqarish vositalarini tekshiring, (3) "sinov ishi loyihasi" so'rovi bilan testlarni yarating va aslida kamida bitta soxta qo'ng'iroq qiluvchi testini o'tkazing. AI o'tkazib yuborgan kamida bitta xavfsizlik nuqtasini toping va qayd qiling.

nazorat ro'yxati

  • [ ] Men taklifda standart va zanjirni aniq aytib berdim.
  • [ ] Men kutubxonaga asoslangan ishlab chiqarishni isbotlashni xohlardim.
  • [ ] SPDX litsenziyasi va pragma versiyasi mavjud.
  • [ ] Har bir muhim funksiyada kirishni boshqarish mavjud.
  • [ ] Cheklangan holatlar uchun testlar yaratdim va oʻtkazdim.
  • [ ] Kutubxona/naqsh yangilanganligini tasdiqladim.
  • [ ] Men tekshirish va sinov uchun kodni belgiladim; Men uni asosiy tarmoqda nazoratsiz olmaganman.