15 промтов для Blockchain и смарт-контрактов: Solidity, Rust, Vyper

Введение

Разработка на блокчейне — это не про «написать код и забыть». Каждый смарт-контракт — это финансовый инструмент, ошибка в котором может стоить миллионы. Я сам писал на Solidity, Rust (для Near и Solana) и Vyper, и знаю, как сложно бывает найти баг или оптимизировать газ. Чтобы ускорить работу, я использую AI-промты — не для замены себя, а для рутины. В этой подборке — 15 проверенных промтов, которые я применяю в реальных проектах. Они помогут с аудитом, генерацией кода, рефакторингом и тестами.

1. Генерация базового контракта ERC-20 на Solidity

Промт: «Сгенерируй смарт-контракт ERC-20 на Solidity 0.8.x с функциями mint, burn, transferFrom. Добавь проверки на переполнение и события. Используй OpenZeppelin v4.9.»

Пример кода:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor() ERC20("MyToken", "MTK") {}

    function mint(address to, uint256 amount) external {
        _mint(to, amount);
    }

    function burn(uint256 amount) external {
        _burn(msg.sender, amount);
    }
}

Пояснение: Этот промт экономит время на написание шаблонного кода. Важно указать версию Solidity и библиотеку — тогда AI не использует устаревшие конструкции.

2. Аудит на уязвимости reentrancy

Промт: «Проверь этот код на reentrancy-атаку. Найди места, где внешние вызовы (call, transfer) происходят до изменения состояния. Предложи исправления с использованием паттерна Checks-Effects-Interactions.»

Пример кода (уязвимый участок):

function withdraw(uint256 amount) external {
    require(balances[msg.sender] >= amount);
    (bool success, ) = msg.sender.call{value: amount}("");
    require(success);
    balances[msg.sender] -= amount;
}

Исправление:

function withdraw(uint256 amount) external {
    require(balances[msg.sender] >= amount);
    balances[msg.sender] -= amount;
    (bool success, ) = msg.sender.call{value: amount}("");
    require(success);
}

Пояснение: Reentrancy — одна из самых частых уязвимостей (взлом DAO 2016 года на $60 млн). Промт заставляет AI искать именно эту проблему.

3. Оптимизация газа для Solidity

Промт: «Оптимизируй этот контракт для уменьшения газа. Используй uint256 вместо uint8, упаковку структур в storage, избегай лишних SLOAD. Покажи разницу в газе.»

Пример до:

struct User {
    uint8 age;
    uint16 score;
}

После:

struct User {
    uint128 age;
    uint128 score;
}

Пояснение: AI может предложить упаковку переменных в 256-битные слоты. Это снижает газ на 20-30%.

4. Написание тестов на Hardhat

Промт: «Напиши тесты для ERC-20 контракта на Hardhat с использованием chai и ethers. Проверь mint, burn, transferFrom, включая негативные сценарии (недостаток баланса, нулевой адрес).»

Пример:

const { expect } = require("chai");
describe("MyToken", function () {
    it("should mint tokens", async function () {
        const [owner] = await ethers.getSigners();
        const Token = await ethers.getContractFactory("MyToken");
        const token = await Token.deploy();
        await token.mint(owner.address, 1000);
        expect(await token.balanceOf(owner.address)).to.equal(1000);
    });
});

Пояснение: AI генерирует тесты с покрытием edge-кейсов. Я использую это для ускорения CI/CD.

5. Генерация NFT-контракта (ERC-721) с метаданными

Промт: «Создай ERC-721 контракт с функцией mint для ограниченной серии (maxSupply = 10000). Добавь baseURI для метаданных и reveal. Используй OpenZeppelin.»

Пример:

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
uint256 public maxSupply = 10000;
uint256 public totalSupply;

function mint() external {
    require(totalSupply < maxSupply);
    _safeMint(msg.sender, totalSupply);
    totalSupply++;
}

Пояснение: Промт полезен для старта NFT-проекта. AI добавляет проверки на лимиты и URI.

6. Конвертация Solidity в Vyper

Промт: «Конвертируй этот Solidity-контракт (ERC-20) в Vyper 0.3.x. Сохрани всю логику, включая события. Учти синтаксические отличия Vyper.»

Пример Vyper:

# @version 0.3.7
from vyper.interfaces import ERC20

implements: ERC20

name: public(String[64])
symbol: public(String[32])

@external
def __init__(_name: String[64], _symbol: String[32]):
    self.name = _name
    self.symbol = _symbol

Пояснение: Vyper проще для аудита, но менее гибок. Промт помогает перенести логику без потери функциональности.

7. Написание контракта на Rust (Near Protocol)

Промт: «Напиши смарт-контракт на Rust для Near Protocol с функцией create_poll и vote. Используй near-sdk 4.1. Храни голоса в LookupMap.»

Пример:

use near_sdk::borsh::{self, BorshSerialize, BorshDeserialize};
use near_sdk::collections::LookupMap;

#[near_bindgen]
#[derive(BorshSerialize, BorshDeserialize)]
pub struct Contract {
    polls: LookMap<u64, Poll>,
}

Пояснение: Rust — основной язык для Near и Solana. Промт генерирует структуру контракта с хранилищем.

8. Генерация ABI и интерфейса для веб-приложения

Промт: «На основе этого Solidity-контракта сгенерируй ABI и TypeScript-интерфейс для взаимодействия с ethers.js. Включи все функции и события.»

Пример вывода:

interface MyToken {
    balanceOf(account: string): Promise<BigNumber>;
    transfer(to: string, amount: BigNumber): Promise<TransactionResponse>;
}

Пояснение: Экономит часы на ручной типизации.

9. Поиск race condition в мультичейн-контрактах

Промт: «Найди race condition в этом bridge-контракте между Ethereum и BSC. Учти, что функция finalizeTransfer может быть вызвана дважды.»

Пояснение: Bridge-атаки (как Wormhole на $326 млн) часто из-за гонок. AI находит такие места.

10. Генерация upgradeable контракта (UUPS)

Промт: «Создай upgradeable ERC-20 контракт по паттерну UUPS. Используй OpenZeppelin Upgrades. Добавь функцию initialize вместо constructor.»

Пример:

import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
contract MyTokenUpgradeable is ERC20Upgradeable {
    function initialize() initializer public {
        __ERC20_init("MyToken", "MTK");
    }
}

Пояснение: Upgradeable контракты — стандарт для DeFi. Промт добавляет правильный паттерн.

11. Логирование событий для аналитики

Промт: «Добавь события в этот контракт для отслеживания всех операций mint, burn, swap. Используй indexed параметры для фильтрации.»

Пример:

event Mint(address indexed user, uint256 amount, uint256 timestamp);
event Burn(address indexed user, uint256 amount, uint256 timestamp);

Пояснение: События критичны для The Graph и Dune Analytics. AI подсказывает, что индексировать.

12. Генерация контракта стейкинга с вознаграждениями

Промт: «Напиши контракт стейкинга ERC-20 с вознаграждением в том же токене. Используй механизм распределения на основе времени блоков.»

Пример:

function claimRewards() external {
    uint256 reward = calculateReward(msg.sender);
    _mint(msg.sender, reward);
}

Пояснение: Стандартный паттерн для DeFi. AI генерирует расчет rewardPerBlock.

13. Рефакторинг контракта под многопользовательское управление (DAO)

Промт: «Рефактори этот контракт, чтобы добавить multi-sig управление через Gnosis Safe. Сделай функции только для owner вызываемыми через DAO.»

Пояснение: AI переписывает модификаторы и добавляет проверки на голосование.

14. Генерация контракта для аукциона (English Auction)

Промт: «Создай контракт English Auction для NFT. Включи функции bid, withdraw, finalize. Добавь минимальный шаг ставки.»

Пример:

function bid() external payable {
    require(msg.value > highestBid + minBidStep);
    // возврат предыдущей ставки
}

Пояснение: Полезно для NFT-маркетплейсов. AI добавляет защиту от front-running.

15. Создание контракта для пула ликвидности (AMM)

Промт: «Напиши простой AMM контракт (как Uniswap V2) для двух токенов. Функции addLiquidity, removeLiquidity, swap. Используй формулу x*y=k.»

Пример:

function swap(uint256 amountIn, address tokenIn) external returns (uint256 amountOut) {
    // расчет по резервам
}

Пояснение: Базовый паттерн DeFi. AI генерирует логику торговли и комиссий.

Заключение

Эти 15 промтов — мой личный набор, который я использую каждый день. Они не заменяют понимание блокчейна, но ускоряют рутину в 2-3 раза. Помните: всегда проверяйте код, сгенерированный AI, особенно в финансовых контрактах. Начните с малого — попробуйте промт для ERC-20, а потом переходите к сложным DeFi-логикам. Если хотите углубиться, читайте документацию OpenZeppelin и Near SDK. Удачи в Web3!

← Все статьи

Комментарии

Читайте также

Bristol Myers Squibb строит самый передовой AI-завод в биофарме: что такое Vibe Coding на базе NVIDIA Vera Rubin

20 июля 2026

Я протестировал ScrapeOps AI Scraper Builder на 5 разных сайтах: вот что случилось

20 июля 2026

На дворе C++23, а заставить компилятор проверять код всё ещё помогает только ассемблер

20 июля 2026

Автоматизация SEO-аналитики: как подключить Яндекс.Вебмастер к AI-агенту ASI Biont

20 июля 2026

Почему курс «SEC и инсайдерская торговля: регулирование и соблюдение требований» является обязательным для специалистов по комплаенсу в 2026 году

20 июля 2026

CISA — Certified Information Systems Auditor (ISACA): Как AI-обучение на asibiont.com упрощает подготовку к сертификации

20 июля 2026

Почему стратегия открытых весов Китая побеждает в гонке ИИ

20 июля 2026

TypeScript — статическая типизация в JavaScript: как декораторы упрощают код и почему AI-обучение на Asibiont ускоряет прогресс

20 июля 2026

Углы так не выглядят: что такое Screen Space Ambient Occlusion (SSAO) и почему это важно для vibe coding

20 июля 2026