echidna v1.7.1 releases: Ethereum fuzz testing framework
Echidna is a weird creature that eats bugs and is highly electrosensitive (with apologies to Jacob Stanley)
More seriously, Echidna is a Haskell program designed for fuzzing/property-based testing of Ethereum smarts contracts. It uses sophisticated grammar-based fuzzing campaigns based on a contract ABI to falsify user-defined predicates or Solidity assertions. We designed Echidna with modularity in mind, so it can be easily extended to include new mutations or test specific contracts in specific cases.
- Generates inputs tailored to your actual code
- Optional corpus collection, mutation and coverage guidance to find deeper bugs
- Optional Slither integration to extract useful information before the fuzzing campaign
- Curses-based retro UI, text-only or JSON output
- Automatic testcase minimization for quick triage
- Seamless integration into the development workflow
- Maximum gas usage reporting of the fuzzing campaign
- Support for a complex contract initialization with Etheno and Truffle
Echidna 1.7.1 is a minor release that brings a variety of fixes and small improvements, including better mutations, two new command-line options,
--check-asserts, correct initialization of new addresses and extended notion of coverage to include EVM frames. This release contains no breaking changes.
- Documented known issues and limitations (#655)
- Improved coverage to count number of EVM frames (#624)
- Added two CLI options: –corpus-dir and –check-asserts (#640)
- Tweaked mutators and improved test stability (#628)
- Automatically initialize addresses when used (#657)
- Avoid mutations to generate inputs outside their expected ABI range (#650)
- Various small fixes to run Vyper contracts (#645)
- Fixed link to macOS binary in binaries.soliditylang.org (#629)
- Fixed UI to fit long function calls (#635)
- Fixed default.nix to use 1.7.0 as version (#623)
- Refactored shrinkSeq to improve readability (#639)
- Refactored Test type (#622)
- Refactored coverage types and added corpus size in UI (#627)
docker is recommended to install Echidna.
docker pull trailofbits/echidna
docker run trailofbits/echidna
docker run -v `pwd`:/src trailofbits/echidna echidna-test /src/solidity/cli.sol
If you’d prefer to build from source, use Stack. stack install . should build and compile echidna-test in ~/.local/bin You will need to link against libreadline and libsecp256k1 (built with recovery enabled), which should be installed with the package manager of your choosing. If you’re getting errors building related to linking, try tinkering with –extra-include-dirs and –extra-lib-dirs.
Copyright (C) 2018