Документирование смарт-контрактов (NatSpec)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Документирование смарт-контрактов (NatSpec)
Простая
~1 рабочий день
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Документирование смарт-контрактов (NatSpec)

Контракт без документации — это контракт, который невозможно безопасно проинтегрировать. Разработчик, который будет использовать ваш токен через полгода, не должен реконструировать логику из байткода и тестов. NatSpec — стандарт inline-документации для Solidity, который читается людьми, генерируется инструментами и отображается в MetaMask при подписании транзакций.

Что такое NatSpec и как он работает

NatSpec (Natural Language Specification) — это набор тегов в комментариях Solidity, которые компилятор включает в ABI и отдельный JSON-документ. Поддерживает два формата: однострочный (///) и блочный (/** */).

Основные теги:

  • @title — название контракта
  • @notice — описание для конечного пользователя (отображается в MetaMask)
  • @dev — технические детали для разработчика
  • @param — описание параметра функции
  • @return — описание возвращаемого значения
  • @custom:tag — кастомные теги (аудит-заметки, security notices)

Пример правильно задокументированной функции:

/// @notice Переводит токены на указанный адрес
/// @dev Не работает с ERC-777 токенами из-за hook'ов; используй safeTransfer для неизвестных получателей
/// @param to Адрес получателя, не может быть address(0)
/// @param amount Количество токенов в минимальных единицах (wei)
/// @return success True если перевод прошёл успешно
function transfer(address to, uint256 amount) external returns (bool success);

Что генерируется из NatSpec

forge doc (Foundry) или solidity-docgen генерирует Markdown/HTML документацию из NatSpec-комментариев. Результат — структурированный API-референс с описанием каждого контракта, функции, события и ошибки.

Для публичных протоколов это критично: аудиторы работают быстрее с задокументированным кодом, интеграторы не задают вопросы в Discord, пользователи видят понятный текст в кошельке перед подписью.

@custom:security и @custom:oz-upgrades-unsafe-allow — специальные теги, которые читают инструменты (OpenZeppelin Upgrades проверяет помеченные unsafe паттерны). Не просто документация — машиночитаемые аннотации.

Что документируем

Обязательно: все public и external функции, все события (event), все кастомные ошибки (error), все state-changing операции. @notice — с позиции пользователя, @dev — с позиции интегратора.

Необязательно, но полезно: internal функции в библиотеках, сложные алгоритмы (AMM формулы, reward calculation), security-критичные предположения (@dev Assumes price oracle is not manipulable within single block).

Полная документация контракта среднего размера (500-1000 строк) — 1 рабочий день. Генерация и настройка docgen-пайплайна — ещё 2-4 часа.