Набор инструментов на Rust для разработки смарт-контрактов Ethereum: Forge, Cast, Anvil и Chisel помогают собирать и тестировать контракты и взаимодействовать с EVM-сетями.
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
Установить Echidna с помощью Homebrew (macOS / Linux)
brew install echidna - 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 обновляется ежедневно.
Похожие проекты
Среда разработки Ethereum для компиляции, развёртывания, тестирования и отладки смарт-контрактов и dapp.
Реализация исполнительного уровня Ethereum на Go: запуск полного или архивного узла, доступ через JSON-RPC и инструменты для разработчиков.
Библиотека property-based тестирования для Python, которая автоматически генерирует тестовые данные и сводит ошибки к минимальным примерам.
Solidity — статически типизированный язык для разработки смарт-контрактов на платформе Ethereum.
Второе издание книги «Mastering Ethereum» об разработке на Ethereum, смарт-контрактах и базовых технологиях сети.