Skip to content

Releases: crytic/echidna

Echidna 1.3.0.0

25 Feb 00:38

Choose a tag to compare

This is the fourth release of Echidna. With this release, we introduce several new features which can be enabled via various config flags. Some of the major ones are:

# multi-abi enables the calling of all known contract ABIs passed to echidna at runtime,
# rather than just fuzzing the target contract. e.g. echidna can discover how to falsify
# contract A {
#   uint256 public flag = 0;
#   function setflag(uint256 x) public {
#     flag = x;
#   }
# }
# contract B {
#   A public a;
#   constructor() public {
#     a = new A();
#   }
#   function echidna_test() public {
#     return a.flag() == 1;
#   }
# }
multi-abi: true
# Given a JSON file describing how to set up an initial blockchain,
# echidna can load these transactions and start fuzzing from there.
# See examples/solidity/basic_multicontract/export.json for more details.
# Leave this null to disable.
initialize: "/path/to/file"
# Turns on the worst case gas estimator. This causes echidna to print the maximum gas usage it saw.
estimateGas: true

Please note that this release introduces a breaking change from previous releases. The tested contract is now specified with --contract rather than being the 2nd argument. This lets us pass more contracts to the command line driver for multi ABI support. See echidna-test --help for more details.

As always, the full changelog may be viewed here. Attached to this release are a statically built Ubuntu binary from the Docker package and a macOS Catalina binary. You can also find this on Dockerhub under incertia/echidna while we sort out automatic builds on the official repository.

Echidna 1.2.0.0

24 Feb 23:18

Choose a tag to compare

This is the third stable release of Echidna. We provide binaries for MacOS Catalina and Ubuntu. We recommend either using the docker container or building from source instead of the binaries, which are much less portable. Note that the standalone binaries do require crytic-compile and solc to work. You can install crytic-compile via pip (pip install crytic-compile).

This release's changelog has some conflicts with the previous Github release, because the changelog was not religiously kept up to date. Future releases should have more accurate changelog information. You can read it here.

v1.1.0.0

16 Aug 17:06
6869bab

Choose a tag to compare

Second stable release

  • Provides a statically compiled Linux binary tested in Ubuntu 18.04 (x86_64)
  • Mac OS binary is use-at-your-own-risk, may not be portable to other environments

Note that the standalone binaries do require crytic-compile and solc to work. You can install crytic-compile via pip (pip install crytic-compile).

Major changes since 1.0.0.0:

  • Support for catching assertion violations

  • Support for maximum gas limits for properties and transactions

  • Support for generation of block number and time changes between transactions

  • Constant extraction for return values

  • Multisender testing is now default

  • Other improvements to default configuration to tune test generation, comments on default config

  • In particular, note that by default the property sender and the caller of the contract constructor (thus, often, the owner) are the same now, which can change the behavior of some properties

  • Various bug-fixes and minor improvements

v1.0.0.0

14 Jun 16:23

Choose a tag to compare

First stable release of Echidna based on hevm 0.30.

We provide a statically compiled Linux binary tested in Ubuntu 18.04 (x86_64)

e395687: Merge pull request #78 from trailofbits/dev-build-bins

12 Jul 18:11
e395687

Choose a tag to compare

d934170: Merge pull request #78 from trailofbits/dev-build-bins

16 Jul 16:12
e395687

Choose a tag to compare

aa472a1: Merge pull request #78 from trailofbits/dev-build-bins

12 Jul 21:24
e395687

Choose a tag to compare

a850fb2: Merge pull request #78 from trailofbits/dev-build-bins

13 Jul 19:59
e395687

Choose a tag to compare