10 промтов, которые превращают ChatGPT в Solidity-аудитора и gas-оптимизатора

Введение

Смарт-контракты — это код, который управляет миллиардами долларов, и ошибки в нём стоят очень дорого. Аудит и оптимизация газовых затрат — критически важные этапы разработки в Web3. Но что, если использовать большие языковые модели (LLM) как помощника? Они могут генерировать код, находить уязвимости, объяснять стандарты и даже предлагать gas-оптимизации. В этой подборке — 10 конкретных промтов, которые превратят LLM в вашего карманного эксперта по Solidity. Каждый промт проверен на практике и сопровождается примером использования. Вы сможете копировать их и адаптировать под свои задачи.

1. Генерация смарт-контракта по описанию

Задача: Быстро создать заготовку контракта на основе бизнес-логики.

Промт:

Напиши смарт-контракт на Solidity (версия ^0.8.0), который реализует следующую логику: [опишите логику]. Используй паттерн Ownable из OpenZeppelin для управления доступом. Добавь комментарии к каждой функции. Не включай функции, не описанные в задании.

Пример использования:
Вы хотите контракт для голосования с возможностью создавать предложения и голосовать за них. Опишите это в промте, и LLM сгенерирует код с функциями createProposal, vote, getWinner, используя Ownable для ограничения создания предложений только владельцем.

Пояснение: Промт задаёт версию Solidity, требует использования проверенной библиотеки и комментариев, что снижает количество ошибок и упрощает аудит.

2. Поиск уязвимостей в коде

Задача: Провести статический анализ контракта на наличие известных уязвимостей.

Промт:

Проанализируй следующий код Solidity на наличие уязвимостей из списка SWC (Smart Contract Weakness Classification). Особое внимание обрати на реентранси, переполнения, небезопасное использование delegatecall и проблемы с доступом. Для каждой найденной уязвимости укажи её тип, строку и рекомендации по исправлению.

Код:
```solidity
[вставьте код]

**Пример использования:**
Вставьте контракт с функцией `withdraw`, которая изменяет состояние после вызова `call`. LLM должна указать на реентранси (SWC-107) и предложить использовать паттерн Checks-Effects-Interactions.

**Пояснение:** Промт явно ссылается на классификацию SWC, что помогает модели структурировать ответ. Однако помните: LLM не заменяет профессиональный аудит.

## 3. Объяснение стандартов ERC

**Задача:** Понять, как реализовать или использовать стандарт ERC (например, ERC-20, ERC-721, ERC-1155).

**Промт:**

Объясни стандарт ERC-721 простыми словами: какие функции обязательны, какие события, и как реализовать минимальный контракт, соответствующий стандарту. Приведи пример кода на Solidity с комментариями.


**Пример использования:**
Вы хотите создать NFT-коллекцию, но не уверены в требованиях. Промт даст список обязательных функций (`ownerOf`, `balanceOf`, `transferFrom` и т.д.) и пример реализации с использованием OpenZeppelin.

**Пояснение:** Промт просит объяснить «простыми словами» и привести пример, что полезно для новичков.

## 4. Оптимизация газа в существующем контракте

**Задача:** Снизить стоимость транзакций за счёт оптимизации кода.

**Промт:**

Предложи способы оптимизации газа для следующего контракта. Укажи, какие изменения можно внести, и оцени примерную экономию газа. Учти, что контракт будет развернут в сети Ethereum.

Код:

[вставьте код]

**Пример использования:**
Контракт использует `uint256` для счётчика, который никогда не превысит 100. LLM предложит заменить на `uint8` (экономия на упаковке в storage) и использовать `unchecked` для инкремента в цикле.

**Пояснение:** Промт требует оценки экономии, что помогает приоритизировать изменения.

## 5. Написание тестов на Foundry

**Задача:** Сгенерировать тесты для контракта с использованием Foundry.

**Промт:**

Напиши тесты на Solidity для следующего контракта с использованием фреймворка Foundry. Покрой основные функции, включая граничные случаи. Используй forge-std/Test.sol.

Код контракта:

[вставьте код]

**Пример использования:**
Для контракта с функцией `transfer` LLM сгенерирует тесты на успешный перевод, недостаток баланса, перевод самому себе.

**Пояснение:** Foundry — популярный инструмент для тестирования, и промт явно указывает на использование `forge-std`.

## 6. Аудит доступа и ролей

**Задача:** Проверить, правильно ли настроены права доступа.

**Промт:**

Проанализируй контракт на предмет корректности настройки ролей и прав доступа. Проверь, что только авторизованные адреса могут вызывать привилегированные функции. Укажи на любые функции без модификаторов доступа или с избыточными правами.

Код:

[вставьте код]

**Пример использования:**
Контракт имеет функцию `mint`, доступную только владельцу, но модификатор `onlyOwner` забыт. LLM укажет на это.

**Пояснение:** Промт фокусируется на одной из самых частых уязвимостей — неправильный контроль доступа.

## 7. Генерация документации (NatSpec)

**Задача:** Автоматически создать комментарии NatSpec для контракта.

**Промт:**

Сгенерируй комментарии NatSpec для всех публичных функций и событий в следующем контракте. Используй формат @notice, @param, @return.

Код:

[вставьте код]

**Пример использования:**
LLM добавит комментарии к каждой функции, описывая её назначение и параметры.

**Пояснение:** NatSpec улучшает читаемость и используется для генерации документации.

## 8. Перевод контракта с другой платформы

**Задача:** Портировать контракт с Ethereum на другую EVM-совместимую сеть (например, Polygon).

**Промт:**

Адаптируй следующий контракт для развертывания в сети Polygon. Учти различия в стоимости газа и возможные ограничения. Если есть функции, зависящие от конкретных адресов или оракулов, предложи альтернативы.

Код:

[вставьте код]

**Пример использования:**
Контракт использует Chainlink оракул с адресом для Ethereum mainnet. LLM предложит адрес для Polygon.

**Пояснение:** Промт помогает избежать ошибок при миграции.

## 9. Поиск логических ошибок

**Задача:** Выявить ошибки в бизнес-логике, которые не являются уязвимостями, но приводят к неверной работе.

**Промт:**

Проанализируй логику работы следующего контракта. Найди возможные логические ошибки: неверные условия, отсутствие проверок, неправильный порядок операций. Опиши каждую ошибку и предложи исправление.

Код:

[вставьте код]

**Пример использования:**
В функции `bid` не проверяется, что ставка больше текущей. LLM укажет на это.

**Пояснение:** Логические ошибки часто пропускаются автоматическими анализаторами, но LLM может их найти.

## 10. Генерация скрипта развертывания

**Задача:** Создать скрипт для развертывания контракта с помощью Hardhat или Foundry.

**Промт:**

Напиши скрипт для развертывания контракта с использованием Hardhat. Скрипт должен развертывать контракт, выводить адрес и сохранять его в файл. Предположи, что контракт называется MyContract и находится в contracts/MyContract.sol.
```

Пример использования:
LLM сгенерирует JavaScript-скрипт с использованием ethers.js и hardhat.

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

Заключение

Эти 10 промтов покрывают ключевые задачи разработчика смарт-контрактов: от генерации кода до аудита и оптимизации. Используйте их как отправную точку, адаптируя под свои проекты. Помните, что LLM — это инструмент, который усиливает ваши знания, но не заменяет профессиональный аудит. Экспериментируйте, комбинируйте промты и всегда проверяйте результаты. Удачи в создании безопасных и эффективных контрактов!

← Все статьи

Комментарии

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

Архитектура микросервисов: как освоить Kubernetes и Docker на практике с AI-тьютором

14 июля 2026

15 промтов для Java-разработчика: от легаси-кода до высоконагруженных микросервисов

28 августа 2026

SQL AI: Как AI-агенты автоматизируют работу с базами данных, пишут запросы и анализируют результаты

6 июня 2026

Как я в одиночку сделал мобильную игру на iOS — LootShrine: разбор пути инди-разработчика

14 июля 2026

Французские пожарные впервые столкнулись с пирокумулонимбусом: что это за явление и чем оно опасно?

27 июля 2026

Я просканировал 100 приложений, созданных через Vibe Coding. У 73 была уязвимость BOLA

15 июля 2026

Google Maps скоро сможет не только показывать рестораны, но и делать заказы: что это значит для пользователей

4 июля 2026

Освоение визуализации данных в 2026 году: D3.js, Plotly и обучение с ИИ на asibiont.com

16 июля 2026

12 промтов, которые заменяют рутину продакт-менеджера: от roadmap до постмортема

29 сентября 2026