Бірліктер
1. Blockchain және Web3-тегі жасанды интеллектке кіріспе: рөлдер, шекаралар, аутентификация және қауіпсіздік сыни 2. Ақылды келісім-шарт жазуды қолдау: беріктік/Vyper жобасы және қауіпсіз кодты құру 3. Ақылды келісімшарт аудитін қолдау: қауіпсіздікті шолу және қорытындылар жобасы 4. Осалдықты сканерлеу: жалпы осалдық үлгілері және автоматтандырылған талдау 5. Тізбектегі деректерді талдау: блок, транзакция және әмиян деректерін түсіну 6. DeFi және хаттамалық талдау: өтімділік, MEV және экономикалық шабуылдар 7. Токеномикалық модельдеу: жеткізу, бөлу, ынталандыру және модельдеу 8. Құжаттама және техникалық жазу: Whitepaper, NatSpec және пайдаланушы нұсқаулығы 9. Алаяқтық, Rug-Pull және тәуекелді анықтау: тізбектегі қызыл жалаулар 10. Қауіпсіздік-критикалық аудит, сарапшылық мақұлдау және жауапты пайдалану 11. Жұмыс процесі, басқару, тексеру және этика
Бірлік 2 / 11

Ақылды келісім-шарт жазуды қолдау: беріктік/Vyper жобасы және қауіпсіз кодты құру

Табыстар:

  • Дәлелденген кітапханаларға (мысалы, OpenZeppelin) негізделген құрылымдарды, сынақтарды және жобаларды қарау үшін жасанды интеллектті пайдалану мүмкіндігі және адамдар өндіріс қауіпсіздігіне кепілдік беретінін түсіну
  • Компиляция, тестілеу және testnet арқылы жасанды интеллект жасаған код нұсқасын, үлгісін және қол жеткізуді басқаруды тексеру мүмкіндігі
  • Бұл компиляция қауіпсіз болу дегенді білдірмейді және тест желісі мен аудит маңызды екенін ажырата білу.

Смарт келісім-шартты жазу қарапайым бағдарламалық жасақтамадан ерекшеленеді: сіз жазған код ашық, өзгермейтін және ақшаны тікелей жылжытатын бағдарлама. Бұл бөлімде сіз AI-ны смарт келісімшартты әзірлеу көмекшісі ретінде пайдалануды үйренесіз; Біз жобаны өндіруден сынақ жазуға дейін, үлгіні қайта шақырудан бастап газды (транзакция ақысы) оңтайландыруға дейін үйренеміз. Бірақ басынан анық айтайық: AI сызбаларды шығарады; Адамдар өндіріске түсетін қауіпсіз кодты қамтамасыз етеді.

Бірінші негіз: тіл және орта

Ең кең тараған смарт келісімшарт тілі - Solidity (Ethereum және EVM тілі — Ethereum Virtual Machine, келісім-шарттар жұмыс істейтін виртуалды машина — үйлесімді тізбектер). Балама нұсқасы - Vyper (питонға ұқсас тіл, ол шектеулі және оқылатын тіл). Сіздің кодыңыз газды тұтынады (блокчейнге әрбір транзакцияның құны); Тиімсіз код қымбат. Бұл терминдерді AI-ге берген контексте анық сақтау - дәл нәтиже алудың кілті.

Жасанды интеллект ең құндысы «нөлден бастап жазу» емес, құрылымды + жақсы қалып жасау: стандарттарға сәйкес келетін бастама, тәжірибеңізді қосатын жоспар.

Кодтауда AI қолдану деңгейлері

1. Қаңқаларды генерациялау. AI стандартты таңбалауыштың (ERC-20) немесе NFT (ERC-721 — бірегей цифрлық актив стандарты) қаңқасын жылдам шығарады. Бірақ AI дәлелденген кітапхананы пайдалануды ұмытпаңыз: мысалы, OpenZeppelin (қауымдастықтың сенімді, тексерілген стандартты келісім-шарт кітапханасы). Ереже қауіпсіздікті нөлден жазудан гөрі тексерілген блокты пайдалану болып табылады.

2. Функцияның сипаттамасы және шолу. Бар функцияны AI-ға түсіндіру логикалық қателерді ерте анықтауға мүмкіндік береді.

3. Тест генерациясы. AI шеткі жағдайлар үшін сынақ жағдайларын жасауда жақсы: нөлдік кіріс, өте көп сан, рұқсатсыз қоңырау шалушы, қайталанатын қоңырау. Бұл өткізіп жіберетін сценарийлердің бірін еске салады.

4. Газ және оқылатындығы. AI қажетсіз жад жазу сияқты қымбат үлгілерді белгілейді және балама нұсқаларды ұсынады.

Нұсқау: AI-ға «OpenZeppelin-тің тексерілген келісім-шарттарына сүйене отырып, қауіпсіздікті нөлден қайта жазуға» нұсқау беріңіз. AI үшін сынақтан өткен кітапхананы пайдаланудан гөрі түпнұсқалық қауіпсіздік кодын жазу әлдеқайда қауіпті.

Әлсіз шақыру / Күшті шақыру

Әлсіз шақыру:

Маған белгі бойынша келісім-шарт жазыңыз.

Бұл шақыру қауіпті: қай стандарт, қай тізбек, қай кітапхана, қандай қауіпсіздік талаптары екені белгісіз. AI кездейсоқ, ескірген немесе қауіпті кодты жасайды.

Күшті шақыру:

Сіздің рөліңіз: аға Solidity әзірлеушісі. EVM үйлесімді тізбегі үшін ERC-20 таңбалауыш жобасын жасаңыз. Ережелер:- OpenZeppelin тексерген ERC20 және Меншік келісім-шарттарына негізделген.- Solidity нұсқасы мен лицензия (SPDX) жолын анық жазыңыз.- Тек иеленушінің рұқсаты бар; шексіз басуға қарсы қақпақ қосыңыз. - Әрбір функцияға NatSpec түсініктемесін қосыңыз. - Қауіпсіздікті нөлден бастап жазу; Стандартты блокты пайдаланыңыз. - Соңында ескертуді қосыңыз: «Бұл жоба; аудит және тестілеу қажет». Сенімсіз аймақтарды // TODO арқылы белгілеңіз.

Айырмашылық: күшті шақыру нақты рөлді, стандартты, кітапхананы, қауіпсіздік шекарасын, құжаттаманы және валидация күтулерін береді.

Көшірілетін төрт үлгі

1) Стандарттарға негізделген қаңқа:

Сіздің рөліңіз: Solidity әзірлеушісі. OpenZeppelin тексерілген кітапханасы негізінде [ERC-20 / ERC-721 / staking]контракт құрылымын жасаңыз. SPDX лицензиясын және прагма нұсқасын жазыңыз. Әрбір сыртқы функцияға кіруді басқаруды (кім қоңырау шала алады) қосыңыз. Қауіпсіздікті қайта ойлап табу; Стандартты блоктарды қолданыңыз. Бұл жоба.

2) Функцияны тексеру:

Аға әзірлеуші сияқты келесі функцияны қарастырыңыз: ол не істейді, ол қандай күйлерді өзгертеді, оны кім шақыра алады? Әрқайсысын кодтағы жолға байланыстырып, ықтимал логикалық қателер мен қауіпсіздік тәуекелдерін ГИПОТЕЗ ретінде белгілеңіз. «Қауіпсіз» деп тікелей айтпаңыз; тек назар аударатын жерлерді тізімдеңіз.

3) Сынақ сценарийінің жобасы:

Осы келісімшартқа сынақ жағдайларын ұсыныңыз (Foundry/Hardhat үшін жоба болуы мүмкін). Атап айтқанда, шектеу жағдайларын қамтиды: нөлдік кіріс, өте көп нөмір, рұқсат етілмеген қоңырау, қайта қоңырау шалу, қаражат жеткіліксіз. Әрбір сынақ НЕні растайтынын жазыңыз.

4) Газды және оқылуды тексеру:

Бұл келісім-шартта газ құнын төмендетуге болатын үлгілерді белгілеңіз: қажетсіз сақтауды жазу, циклдегі сыртқы қоңырау, қайталанатын есептеу. Әрбір ұсыныстың алдындағы/кейінгі айырмашылықты түсіндіріңіз. Қауіпсіздікті бұзатын оңтайландыруларды ұсыныңыз; Егер түсініксіз болса, «аудитордан сұраңыз» деп айтыңыз.

Үш шағын іс (санмен)

1-жағдай – Қаңқа 4 сағат сақталды. Бір команда 30 минут ішінде AI-мен тексерілген кітапханаға негізделген келісім-шарттың қаңқасын қазып алды; Қолмен ~ 4 сағат қажет болды. Команда қауіпсіздік пен тестілеуге уақыт бөлді. Табыс қауіпсіздікті беруден емес, жалықтыратын құрылымды жылдамдатудан келді.

2-жағдай — Ескірген нұсқа қақпағы. AI шикі эфирді тасымалдау арқылы жіберетін үлгіні шығарды, ол енді ұсынылмайды, себебі жаттығу деректері ескірген. Әзірлеуші ​​мұны байқап, оны ағымдағы қоңырауға негізделген және қайта кіруден қорғалған үлгіге өзгертті. Сабақ: Жасанды интеллект кітапханасы/үлгісі әрқашан жаңартылған болып расталады; AI жаттығудың аяқталу күнін білмейді.

3-жағдай - Сынақ жобасы жасырын қатені ашты. AI шығарған «рұқсат етілмеген қоңырау шалушы» сынағы әзірлеуші ​​​​функцияда қол жеткізуді басқаруды ұмытып кеткенін көрсетті. onlyOwner 1 жолды жіберіп алды, testnet желісінде 5 минутта ұсталды; Негізгі желіде қаражат жоғалуы мүмкін еді. Сабақ: AI тестілеу кезінде адамның соқыр аймағын жабады.

AI көмегімен қауіпсіздік үлгілерін есте сақтау

AI тексеру тізімі сияқты белгілі осалдық үлгілерін еске салуда жақсы. Ең көп таралған үлгілер:

  • Қайта кіру: күйді жаңартпай сыртқы қоңырау шалу. Шешуі: тексерулер-эффекттер-өзара әрекеттесу тәртібі, қайта кіру күзетшісі.
  • Қол жеткізуді басқарудың болмауы: кез келген адам маңызды функцияны шақыра алады.
  • Бүтін сандардың толып кетуі/төмен түсуі: Заманауи қаттылық олардың көпшілігін ұстайды, бірақ әлі де төмен деңгейлі кодта тәуекел.
  • Енгізілген тексерудің жеткіліксіздігі: нөлдік мекенжай, нөлдік мөлшерді бақылау.
  • Oracle тәуелділігі: сыртқы деректерге соқыр сенім (баға сияқты).
Назар аударыңыз: AI бұл тізімді еске түсіре алады, бірақ ол тізімдегі элементтің нақты кодыңызда бар-жоғына кепілдік бере алмайды. Тексеру парағы – бұл бастама; Бұл контейнерді басқаруды алмастырмайды.

Мәтінмәнді дұрыс алу: AI-дан жақсы кодтың құпиясы

AI шығаратын кодтың сапасы сіз берген контексттің сапасына тікелей байланысты. Web3-те бұл өте маңызды, себебі бір шағын деталь (қай тізбек, қай Solidity нұсқасы, қай стандартты белгі) бүкіл шығысты өзгертеді. Жақсы контекст мыналарды қамтиды:

  • Мақсатты тізбек және орта: Ethereum негізгі желісі немесе 2-деңгейі (мейстер тізбегінің үстінде жұмыс істейтін арзанырақ бүйірлік тізбек)? Газ құны және кейбір мүмкіндіктер тізбек бойынша өзгереді.
  • Нұсқа және кітапхана: қандай Solidity нұсқасы, қай OpenZeppelin нұсқасы? Егер нұсқа көрсетілмесе, AI ескірген, ескірген үлгілерді шығаруы мүмкін.
  • Қауіпсіздік талаптары: қалпақ бар ма, оны кідіртуге бола ма, көбейтуге бола ма? Бұларды басынан бастап айту керек.
  • Шектеулер: «жинақтауды пайдаланбаңыз», «сыртқы қоңырауды болдырмаңыз», «газды оңтайландырыңыз, бірақ оқылу мүмкіндігін сақтаңыз» сияқты шектеулерді анықтаңыз.

Тағы бір күшті әдіс - алдымен AI-дан жоспарды, содан кейін кодты сұрау: «Алдымен осы келісім-шарттың функцияларын тізімдеңіз және олардың әрқайсысы не істейтінін көрсетіңіз; мен оны бекіткеннен кейін кодты жазыңыз». Бұл AI дұрыс емес бағытта жүріп жатқанын ерте анықтайды және архитектуралық шешімді сақтауға мүмкіндік береді.

Нұсқау: AI-дан «бұл кодты неге осылай жаздыңыз?» деп сұраңыз. сұраңыз. Негіздемені түсіндіру оқуды тездетеді және кез келген логикалық қателерді (мысалы, қауіпсіздік туралы жалған болжам) көрсетеді. Өз кодын қорғай алмайтын AI нәтижесіне сенбеңіз.

Жалпы қателер

  • Қауіпсіздікті AI жүйесін нөлден бастап орнату. Тексерілген кітапхананы пайдаланыңыз.
  • AI шығарған нұсқаны/үлгіні растамау. Жаттығу деректері ескі болуы мүмкін.
  • Тест желісін айналып өту. Әрбір нобай тікелей эфирге шықпас бұрын сынақ желісінде іске қосылуы керек.
  • NatSpec/құжаттаманы қоспау. Тексеру және техникалық қызмет көрсету қиындай түседі.
  • «Бұл құрастырылған, сондықтан қауіпсіз» деген қате түсінік. Құрастыру қауіпсіз болу дегенді білдірмейді.
  • Қол жеткізуді басқаруды ұмыту. Бұл ең көп таралған және қымбат қателердің бірі.

Қысқаша айтқанда

  • Ақылды келісім-шартты жазуда AI құрылымдарды, сынақтарды және шолу жобаларын жасайды; Адам өндіріс қауіпсіздігіне кепілдік береді.
  • Қауіпсіздікті нөлден емес, дәлелденген кітапханалар негізінде құрыңыз (мысалы, OpenZeppelin).
  • YZ шығарған нұсқалар мен үлгілердің жаңартылғандығы әрқашан расталады.
  • Сынақ түтіктері адамның соқыр дақтарын (шектеу жағдайлары, қол жеткізуді басқару) түсіруде құнды.
  • Құрастыру қауіпсіз болу дегенді білдірмейді; testnet және аудит міндетті болып табылады.

Қолданбалы тапсырма

Қарапайым ERC-20 таңбалауышы үшін жоғарыдағы "стандарттарға негізделген қаңқа" сұрауын пайдаланып жобаны жасаңыз. Содан кейін: (1) оның тексерілген кітапхананы пайдаланатынын тексеріңіз, (2) кіруді басқару элементтерін тексеріңіз, (3) "сынақ нұсқасының жобасы" шақыруымен сынақтарды жасаңыз және кем дегенде бір жалған қоңырау шалушы сынағын іске қосыңыз. AI жіберіп алған кем дегенде бір қауіпсіздік нүктесін тауып, ескеріңіз.

бақылау парағы

  • [ ] Мен нұсқауда стандартты және тізбекті анық көрсеттім.
  • [ ] Мен дәлелденген кітапханаға негізделген өнімді қалаймын.
  • [ ] SPDX лицензиясы және прагма нұсқасы қол жетімді.
  • [ ] Әрбір маңызды функцияда кіруді басқару мүмкіндігі бар.
  • [ ] Мен шекті жағдайлар үшін сынақтарды жасадым және орындадым.
  • [ ] Мен кітапхананың/үлгінің жаңартылғанын растадым.
  • [ ] Мен аудит пен тестілеуге арналған кодты белгіледім; Мен оны негізгі желіде бақылаусыз алған жоқпын.