Repolode
crytic

crytic/echidna

Echidna — фаззер на Haskell для тестирования смарт-контрактов Ethereum: он подбирает последовательности вызовов, чтобы нарушить пользовательские инварианты или Solidity-утверждения.

Звёзды
3,191
Форки
437
Открытые issues
107
Последний коммит
23 часа назад

Что это?

Echidna — инструмент для фаззинга и property-based тестирования смарт-контрактов Ethereum. Он генерирует последовательности вызовов на основе грамматики и ABI контракта, а затем проверяет пользовательские инварианты — функции с префиксом echidna_, возвращающие bool, — или инструкции Solidity assert(). Если инструмент находит последовательность, опровергающую свойство, он сообщает о ней и может минимизировать тестовый пример, чтобы упростить разбор.

Инструмент поддерживает несколько режимов тестирования: проверку свойств, assertions, тесты в стиле Foundry, формальную проверку отдельных транзакций, поиск переполнений целых чисел, оптимизацию возвращаемых значений int256 и исследование только покрытия. Он работает с контрактами, собранными Foundry, Hardhat и Truffle, через crytic-compile и использует Slither для извлечения информации перед фаззингом. Результаты можно просматривать в интерактивном терминальном интерфейсе, в обычном текстовом формате или JSON; также можно сохранить корпус, максимизирующий покрытие, и добавить аннотации к исходному коду.

Ключевые возможности

  • 01Генерирует последовательности вызовов с учётом ABI и исходного кода контракта.
  • 02Проверяет булевы инварианты с префиксом echidna_ и assertions в Solidity.
  • 03Минимизирует тестовые примеры с ошибками, ускоряя их разбор.
  • 04Показывает покрытие строк и добавляет аннотации к исходному коду.
  • 05Поддерживает текстовый вывод, JSON и интерактивный терминальный интерфейс.
  • 06Интегрируется с проектами Foundry, Hardhat и Truffle через crytic-compile.

Сценарии использования

  • Поиск нарушений инвариантов в контрактах DeFi-протоколов до развертывания.
  • Проверка токен-контрактов на ошибки в балансе и переполнения.
  • Запуск property-тестов смарт-контрактов в workflow GitHub Actions.
  • Воспроизведение исследовательских примеров фаззинга на контрактах Solidity.

Быстрый старт

  1. 1

    Установить Echidna с помощью Homebrew (macOS / Linux)

    brew install echidna
  2. 2

    Запустить Echidna на примере контракта из README

    echidna tests/solidity/basic/flags.sol

Что важно знать

  • Поддержка Vyper ограничена.
  • Поддержка некоторых библиотек для тестирования ограничена.
  • Для установки Echidna требуется Slither — это дополнительная зависимость, которую нужно настроить.
  • В настоящее время образы контейнеров можно собирать только на системах x86.

В подборках

Темы

Частые вопросы

Что такое echidna?
Echidna — фаззер на Haskell для тестирования смарт-контрактов Ethereum: он подбирает последовательности вызовов, чтобы нарушить пользовательские инварианты или Solidity-утверждения. Echidna — инструмент для фаззинга и property-based тестирования смарт-контрактов Ethereum. Он генерирует последовательности вызовов на основе грамматики и ABI контракта, а затем проверяет пользовательские инварианты — функции с префиксом echidna_, возвращающие bool, — или инструкции Solidity assert(). Если инструмент находит последовательность, опровергающую свойство, он сообщает о ней и может минимизировать тестовый пример, чтобы упростить разбор.
echidna можно использовать бесплатно? Какая у него лицензия?
echidna распространяется с открытым исходным кодом под лицензией AGPL-3.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
echidna всё ещё поддерживается?
Активно поддерживается. Последний коммит в echidna — 6 нояб. 2026 г..
Для чего можно использовать echidna?
Поиск нарушений инвариантов в контрактах DeFi-протоколов до развертывания. Проверка токен-контрактов на ошибки в балансе и переполнения. Запуск property-тестов смарт-контрактов в workflow GitHub Actions. Воспроизведение исследовательских примеров фаззинга на контрактах Solidity.
Как установить echidna?
Установить Echidna с помощью Homebrew (macOS / Linux): brew install echidna Запустить Echidna на примере контракта из README: echidna tests/solidity/basic/flags.sol
Где скачать echidna?
Исходный код и инструкции по установке — на GitHub: https://github.com/crytic/echidna

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Набор инструментов на Rust для разработки смарт-контрактов Ethereum: Forge, Cast, Anvil и Chisel помогают собирать и тестировать контракты и взаимодействовать с EVM-сетями.

10,8 тыс.+27 за неделю2,7 тыс.RustApache-2.0Обновлён 14 часов назад