Vahid 2 / 11

Ağıllı Müqavilənin Yazılmasına Dəstək: Möhkəmlik/Vyper Layihəsi və Təhlükəsiz Kod Yaradılması

Qazanclar:

  • Süni intellektdən sübut edilmiş kitabxanalara (məsələn, OpenZeppelin) əsaslanan çərçivələr, testlər və təhlil layihələri hazırlamaq və insanların istehsal təhlükəsizliyinə zəmanət verdiyini başa düşmək bacarığı
  • Kompilyasiya, sınaq və testnet vasitəsilə süni intellekt tərəfindən yaradılan kod versiyasını, nümunəsini və giriş nəzarətini yoxlamaq bacarığı
  • Bu kompilyasiyanı ayırd edə bilmək təhlükəsiz olmaq demək deyil və test şəbəkəsi və auditin vacib olduğunu göstərir.

Ağıllı müqavilənin yazılması adi proqram təminatından fərqlidir: yazdığınız kod ictimaidir, dəyişməzdir və birbaşa pul köçürən proqramdır. Bu bölmədə siz süni intellektdən ağıllı müqavilənin inkişaf etdirilməsi köməkçisi kimi istifadə etməyi öyrənəcəksiniz; Qaralama istehsalından sınaq yazısına, nümunənin geri çağırılmasından qazın (əməliyyat haqqı) optimallaşdırılmasına qədər öyrənəcəyik. Amma gəlin əvvəldən aydın olaq: ​​AI planlar hazırlayır; İnsanlar istehsala daxil olan təhlükəsiz kodu təmin edirlər.

Birinci əsas: dil və mühit

Ən çox yayılmış ağıllı müqavilə dili Solidity-dir (Ethereum və EVM dili — Ethereum Virtual Machine, müqavilələrin işlədiyi virtual maşın — uyğun zəncirlər). Alternativ Vyper (daha məhdud və oxunaqlı olmağı hədəfləyən Python-a bənzər dildir). Kodunuz qaz istehlak edir (blokçeynlə hər bir əməliyyatın dəyəri); Səmərəli kod bahalıdır. Bu şərtləri AI-yə verdiyiniz kontekstdə aydın saxlamaq dəqiq nəticə əldə etməyin açarıdır.

Süni intellektin ən dəyərli olduğu yer “sıfırdan yazmaq”da deyil, çərçivə + yaxşı forma yaratmaqdır: standartlara uyğun başlanğıc, təcrübənizi əlavə etmək üçün plan.

Kodlaşdırmada AI-dən istifadə səviyyələri

1. Skeletlərin yaradılması. Süni intellekt tez bir zamanda standart token (ERC-20) və ya NFT (ERC-721 – unikal rəqəmsal aktiv standartı) skeletini minalayır. Ancaq AI-nin sübut edilmiş kitabxanadan istifadə etməsinə əmin olun: məsələn, OpenZeppelin (ictimaiyyətin etibarlı, yoxlanılmış standart müqavilə kitabxanası). Qayda sıfırdan təhlükəsizliyi yazmaq əvəzinə sınaqdan keçirilmiş blokdan istifadə etməkdir.

2. Funksiya təsviri və nəzərdən keçirilməsi. Mövcud funksiyanı AI-yə izah etmək məntiq səhvlərini erkən aşkar etməyə imkan verir.

3. Test generasiyası. Süni intellekt kənar vəziyyətlər üçün test nümunələri yaratmaqda yaxşıdır: sıfır giriş, çox böyük nömrə, icazəsiz zəng edən, təkrar zəng. Bu, atladığı ssenarilərdən birini xatırladır.

4. Qaz və oxunaqlılıq. Süni intellekt, lazımsız yaddaş yazıları və alternativlər təklif etmək kimi bahalı nümunələri qeyd edir.

İpucu: Süni intellektə “OpenZeppelin-in yoxlanılmış müqavilələri əsasında qurun, təhlükəsizliyi sıfırdan yenidən yazın” təlimatını verin. Süni intellekt üçün orijinal təhlükəsizlik kodu yazmaq sınaqdan keçmiş kitabxanadan istifadə etməkdən daha risklidir.

Zəif məlumat / Güclü göstəriş

Zəif çağırış:

Mənə nişan müqaviləsi yazın.

Bu təklif təhlükəlidir: hansı standart, hansı zəncir, hansı kitabxana, hansı təhlükəsizlik tələbi aydın deyil. AI təsadüfi, köhnəlmiş və ya etibarsız kod yaradır.

Güclü göstəriş:

Rolunuz: baş Solidity tərtibatçısı. EVM uyğun zəncir üçün ERC-20 token layihəsi yaradın. Qaydalar:- OpenZeppelin-in yoxlanılmış ERC20 və Sahib oluna bilən müqavilələrinə əsaslanır.- Solidity versiyasını və lisenziya (SPDX) xəttini açıq şəkildə yazın.- Yalnız sahibin nanə etmək icazəsi var; sonsuz basmağa qarşı qapaq əlavə edin. - Hər funksiyaya NatSpec şərh əlavə edin. - Sıfırdan təhlükəsizlik yazın; Standart blokdan istifadə edin. - Sonda bir xəbərdarlıq əlavə edin: "Bu, layihədir; yoxlama və sınaq tələb olunur". Əmin olmadığınız sahələri // TODO ilə qeyd edin.

Fərq: güclü sorğu aydın rol, standart, kitabxana, təhlükəsizlik sərhədi, sənədləşdirmə və doğrulama gözləntiləri verir.

Dörd kopyalana bilən şablon

1) Standartlara əsaslanan skelet:

Rolunuz: Solidity developer. OpenZeppelin tərəfindən yoxlanılmış kitabxana əsasında [ERC-20 / ERC-721 / staking]müqavilə çərçivəsi yaradın. SPDX lisenziyasını və praqma versiyasını yazın. Hər bir xarici funksiyaya giriş nəzarəti (kim zəng edə bilər) əlavə edin. Təhlükəsizliyin yenidən kəşf edilməsi; Standart bloklardan istifadə edin. Bu qaralamadır.

2) Funksiyaya baxış:

Aşağıdakı funksiyanı böyük bir tərtibatçı kimi yoxlayın: nə edir, hansı vəziyyətləri dəyişir, kim onu çağıra bilər? Mümkün məntiq səhvlərini və təhlükəsizlik risklərini HİPOTEZ olaraq qeyd edin, hər birini koddakı sətirlə əlaqələndirin. Birbaşa "təhlükəsiz" deməyin; sadəcə diqqət çəkən məqamları sadalayın.

3) Test ssenarisi layihəsi:

Bu müqavilə üçün sınaq nümunələri təklif edin (Foundry/Hardhat üçün layihə ola bilər). Xüsusilə limit hallarını əhatə edin: sıfır giriş, çox böyük nömrə, icazəsiz zəng, reentrant zəngi, kifayət qədər vəsait. Hər testin nəyi təsdiq etdiyini yazın.

4) Qaz və oxunaqlılığın nəzərdən keçirilməsi:

Bu müqavilədə qazın qiymətini azalda biləcək nümunələri qeyd edin: lazımsız saxlama yazısı, dövrədə xarici çağırış, təkrarlanan hesablama. Hər təklifdə əvvəl/sonra fərqini izah edin. Təhlükəsizliyi pozan optimallaşdırmaları tövsiyə edin; Əgər aydın deyilsə, "auditordan soruşun" deyin.

Üç mini iş (rəqəmlə)

1-ci hal - Skelet 4 saata qənaət etdi. Bir komanda 30 dəqiqə ərzində süni intellektlə yoxlanılmış kitabxanaya əsaslanan mülkiyyət müqaviləsinin skeletini minaladı; Əl ilə ~ 4 saat çəkdi. Komanda təhlükəsizlik və sınaqlara vaxt ayırdı. Qazanc təhlükəsizliyin ötürülməsindən deyil, yorucu çərçivəni sürətləndirməkdən gəldi.

Case 2 - Köhnə versiya tələsi. AI, ötürmə yolu ilə xam Ether göndərən bir nümunə istehsal etdi, təlim məlumatları köhnəldiyi üçün artıq tövsiyə edilmir. Tərtibatçı bunu fərq etdi və onu cari zəng əsaslı və təkrar girişdən qorunan modelə dəyişdi. Dərs: Süni intellekt kitabxanasının/naxışının həmişə yeni olduğu təsdiqlənir; Süni intellekt təlimin kəsilmə tarixindən sonrasını bilmir.

Case 3 - Test layihəsi gizli səhvi çıxardı. Süni intellektin istehsal etdiyi "icazəsiz zəng edən" testi, tərtibatçının bir funksiyada giriş nəzarətini unutduğunu ortaya qoydu. onlyOwner 1 sətir çatışmır, testnetdə 5 dəqiqəyə tutuldu; Mainnetdə vəsait itkisi ola bilərdi. Dərs: AI sınaqda insanın kor nöqtəsini əhatə edir.

AI ilə təhlükəsizlik nümunələrini xatırlamaq

Süni intellekt sizə yoxlama siyahısı kimi məlum zəiflik nümunələrini xatırlatmaqda yaxşıdır. Ən çox yayılmış nümunələr:

  • Yenidən giriş: statusu yeniləmədən xarici zəng etmək. Həll yolu: yoxlamalar-effektlər-qarşılıqlı əlaqə qaydası, yenidən giriş mühafizəsi.
  • Giriş nəzarətinin olmaması: Hər kəs kritik funksiyaya zəng edə bilər.
  • Tam ədədlərin çoxalması/aşağı düşməsi: Müasir Solidity onların əksəriyyətini tutur, lakin aşağı səviyyəli kodda hələ də riskdir.
  • Qeyri-adekvat giriş yoxlaması: Sıfır ünvan, sıfır kəmiyyət nəzarəti.
  • Oracle asılılığı: Xarici məlumatlara kor-koranə etibar (məsələn, qiymət).
Diqqət: Süni intellekt bu siyahını xatırlaya bilər, lakin siyahıdakı elementin sizin xüsusi kodunuzda olub-olmamasına zəmanət verə bilməz. Yoxlama siyahısı başlanğıcdır; Bu konteyner nəzarətinin əvəzi deyil.

Konteksti düzgün əldə etmək: AI-dən yaxşı kodun sirri

Süni intellektin istehsal etdiyi kodun keyfiyyəti birbaşa ona verdiyiniz kontekstin keyfiyyətindən asılıdır. Web3-də bu xüsusilə vacibdir, çünki bir kiçik detal (hansı zəncir, hansı Solidity versiyası, hansı token standartı) bütün çıxışı dəyişir. Yaxşı kontekst aşağıdakıları əhatə edir:

  • Hədəf zənciri və ətraf mühit: Ethereum əsas şəbəkəsi və ya Layer 2 (əsas zəncir üzərində işləyən daha ucuz yan zəncir)? Qazın qiyməti və bəzi xüsusiyyətlər zəncirdən asılı olaraq dəyişir.
  • Versiya və kitabxana: Hansı Solidity versiyası, hansı OpenZeppelin versiyası? Heç bir versiya göstərilməyibsə, AI köhnəlmiş, köhnəlmiş nümunələr yarada bilər.
  • Təhlükəsizlik tələbləri: Qapaq varmı, dayandırıla bilərmi, artırıla bilərmi? Bunları əvvəldən demək lazımdır.
  • Məhdudiyyətlər: "montajdan istifadə etməyin", "xarici zəngdən çəkinin", "qazı optimallaşdırın, lakin oxunaqlılığı qoruyun" kimi məhdudiyyətləri təmizləyin.

Başqa bir güclü üsul, əvvəlcə AI-dən planı, sonra kodu soruşmaqdır: "Əvvəlcə bu müqavilənin funksiyalarını və hər birinin nə edəcəyini sadalayın; mən onu təsdiqlədikdən sonra kodu yazın." Bu, süni intellektin yanlış istiqamətdə getməsini erkən tutur və memarlıq qərarını saxlamağa imkan verir.

İpucu: AI-dən soruşun "niyə bu kodu belə yazdınız?" soruş. Məntiqi izah etmək həm öyrənmənizi sürətləndirəcək, həm də hər hansı məntiqi səhvləri (məsələn, yanlış təhlükəsizlik fərziyyəsi) üzə çıxaracaq. Öz kodunu müdafiə edə bilməyən AI-nin çıxışına etibar etməyin.

Ümumi səhvlər

  • Sıfırdan AI-də təhlükəsizliyin qurulması. Test edilmiş kitabxanadan istifadə edin.
  • Süni intellekt tərəfindən istehsal edilən versiya/naxış təsdiqlənmir. Təlim məlumatları köhnə ola bilər.
  • Test şəbəkəsindən yan keçmək. Hər bir qaralama canlı yayımdan əvvəl test şəbəkəsində işləməlidir.
  • NatSpec/sənədlər əlavə edilmir. Təftiş və texniki xidmət çətinləşir.
  • "Tərtib olunub, ona görə də təhlükəsizdir" səhv anlayışı. Tərtib olunmaq təhlükəsiz olmaq demək deyil.
  • Giriş nəzarətini unutmaq. Ən çox yayılmış və bahalı səhvlərdən biridir.

Xülasə

  • Ağıllı müqavilə yazarkən, AI çərçivələr, testlər və nəzərdən keçirmə layihələri istehsal edir; İnsan istehsalın təhlükəsizliyinə zəmanət verir.
  • Təhlükəsizliyi sıfırdan deyil, sübut edilmiş kitabxanalara (məsələn, OpenZeppelin) əsaslanaraq qurun.
  • YZ tərəfindən istehsal olunan versiyaların və nümunələrin müasirliyi həmişə təsdiqlənir.
  • Test stubları insanın kor nöqtələrini tutmaqda dəyərlidir (məhdud hallar, girişə nəzarət).
  • Tərtib edilmiş olmaq təhlükəsiz olmaq demək deyil; testnet və audit mütləqdir.

Tətbiq tapşırığı

Sadə bir ERC-20 nişanı üçün yuxarıdakı "standartlara əsaslanan skelet" əmrindən istifadə edərək qaralama yaradın. Sonra: (1) onun yoxlanılmış kitabxanadan istifadə edib-etmədiyini yoxlayın, (2) giriş nəzarətlərini yoxlayın, (3) "sınaq nümunəsi layihəsi" sorğusu ilə testlər yaradın və ən azı bir saxtakar çağıran testini həyata keçirin. AI-nin qaçırdığı ən azı bir təhlükəsizlik nöqtəsini tapın və qeyd edin.

yoxlama siyahısı

  • [ ] Mən sorğuda standart və zənciri açıq şəkildə ifadə etmişəm.
  • [ ] Mən sübut edilmiş kitabxana əsaslı istehsal istədim.
  • [ ] SPDX lisenziyası və praqma versiyası mövcuddur.
  • [ ] Hər bir kritik funksiyada giriş nəzarəti var.
  • [ ] Mən limit hallar üçün testlər yaratdım və sınaqdan keçirdim.
  • [ ] Kitabxananın/naxışın güncəl olduğunu təsdiqlədim.
  • [ ] Audit və sınaq üçün kodu qeyd etdim; Mən onu əsas şəbəkədə nəzarətsiz əldə etməmişəm.