Skip to content

Releases: crytic/echidna

Echidna 2.3.0

15 Dec 19:06
e4be047

Choose a tag to compare

Echidna 2.3.0 introduces symbolic execution capabilities to complement traditional fuzzing workflows. This update adds two verification modes that combine fuzzing with formal verification techniques, alongside improvements to debugging workflows and Foundry integration.

  • Enhanced symbolic execution. Echidna now offers a verification mode for analyzing stateless functions alongside the traditional mode for discovering assertion failures in stateful scenarios. Verification mode performs exhaustive analysis of single-transaction code paths, similar to tools like Halmos and hevm, providing formal guarantees when tests pass. The traditional mode combines traditional fuzzing with symbolic execution, using your accumulated corpus to explore states more exhaustively. You can now use Bitwuzla, cvc5 or Z3 as the solvers.
  • Foundry reproducer generation for debugging workflows. Echidna can now generate Foundry test cases that reproduce discovered bugs. This initial implementation creates standalone reproducers for failed assertions.
  • Revamped HTML coverage reports. The HTML coverage reporting system has been redesigned to provide clearer, more actionable insights, in a manner similar to medusa. The coverage output directory can now be independently configured using the coverageDir option.
  • Improved debugging experience with comprehensive event logging. When properties or assertions fail, Echidna now displays all events from all transactions in the sequence, giving you complete visibility into state changes leading to the failure. Deployment failures now show the full execution trace instead of just a list of events, making initialization issues easier to diagnose. The shrinking process now logs its status in text mode, providing visibility into how Echidna minimizes failing test cases.
  • Streamlined codebase through removal of deprecated features. Echidna 2.3.0 removes Etheno integration (including the initialize configuration option), gas estimation (estimateGas option), and concolic execution (symExecConcolic option). These features saw limited adoption and their removal simplifies the codebase while improving overall performance and maintainability. If your workflows depend on these features, please reach out to the team before upgrading.

Additional improvements:

  • Values from tuple elements are automatically extracted into the fuzzing dictionary
  • Enhanced callback (multicall-style) encoding support for more accurate smart contract testing
  • Docker image now includes Foundry, Z3, Bitwuzla
  • Haskell runtime system options (rtsopts) are now enabled on release builds, allowing users to tweak Echidna for better memory use and performance in their environments

The full changelog is provided below:

Added

Fixed

Updated

  • build(deps): bump DeterminateSystems/nix-installer-action from 18 to 19 by @dependabot[bot] in #1407
  • build(deps): bump actions/download-artifact from 4 to 5 by @dependabot[bot] in #1418
  • build(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in #1419
  • Update hevm to 9982c580ed19b88ebab9744d29d940fd2f0bd8c6 by @elopez in #1417
  • flake: update nixpkgs, foundry, bitwuzla by @elopez in #1427
  • Update CODEOWNERS by @elopez in #1432
  • Update references to hevm repository by @elopez in #1435
  • build(deps): bump actions/setup-python from 5 to 6 by @dependabot[bot] in #1442
  • build(deps): bump softprops/action-gh-release from 2.3.2 to 2.3.3 by @dependabot[bot] in #1443
  • build(deps): bump DeterminateSystems/nix-installer-action from 19 to 20 by @dependabot[bot] in #1451
  • ci: macos-13 -> macos-15-intel by @elopez in #1455
  • build(deps): bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #1478
  • build(deps): bump sigstore/gh-action-sigstore-python from 3.0.1 to 3.1.0 by @dependabot[bot] in #1479
  • build(deps): bump actions/download-artifact from 5 to 6 by @dependabot[bot] in #1477
  • build(deps): bump softprops/action-gh-release from 2.3.3 to 2.4.2 by @dependabot[bot] in #1481
  • build(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #1483
  • Echidna 2.3 RC by @gustavo-grieco in #1467
  • build(deps): bump DeterminateSystems/nix-installer-action from 20 to 21 by @dependabot[bot] in #1482
  • build(deps): bump softprops/action-gh-release from 2.4.2 to 2.5.0 by @dependabot[bot] in #1488
  • Update hevm to 9ba5e52fc7ec7ae6f7f3a25d5ee426625d2aa9d by @elopez in #1487
  • build(deps): bump sigstore/gh-action-sigstore-python from 3.1.0 to 3.2.0 by @dependabot[bot] in #1491

Removed

Important

The following features have been removed from Echidna:

  • Etheno integration, and the initialize configuration option
  • Gas estimation (estimateGas configuration option)
  • Concolic execution (symExecConcolic configuration option)

New Contributors

Read more

Echidna 2.3.0-RC2

12 Nov 07:59

Choose a tag to compare

Echidna 2.3.0-RC2 Pre-release
Pre-release

This release candidate pre-release is for benchmarking and testing latest features. Do not use it in production, wait for the upcoming final release instead.

What's Changed

New Contributors

Echidna 2.3.0-RC1

21 Oct 11:42

Choose a tag to compare

Echidna 2.3.0-RC1 Pre-release
Pre-release

This release candidate pre-release is for benchmarking and testing latest features. Do not use it in production, wait for the upcoming final release instead.

What's Changed

New Contributors

Echidna 2.2.7

21 Jul 14:39
e871c88

Choose a tag to compare

What's Changed

  • UI is now more responsive and can be scrolled using the keyboard (arrow keys, PgUp/Down, Tab)
  • Text mode now reports gas/s during a fuzzing campaign.
  • The docker container and static binaries are now also built for ARM Linux.
  • Users can now give a friendly name to a project through the config file and it will show in the UI.
  • Bugs squashed when shrinking, generating random integers, collecting contract addresses into the internal dictionary, and counting gas usage.
  • Echidna is now built with GHC 9.8.4
  • hevm has been upgraded to release/0.55.0
    • This hevm release includes multiple fixes and performance improvements, including a fix for multiple contract deployments under a prank.
    • Full hevm changelog: argotorg/hevm@037ff11...2931f09

Deprecation notice

Important

The following features will be removed from future Echidna releases. This will be the last release supporting:

  • Etheno integration, and the initialize configuration option
  • Gas estimation (estimateGas configuration option)
  • Concolic execution (symExecConcolic configuration option)

New Contributors

Full Changelog: v2.2.6...v2.2.7

Echidna 2.2.6

08 Jan 17:37
aff20b7

Choose a tag to compare

What's Changed

  • Users can now turn off the Slither integration with the disableSlither config option or the --disable-slither command-line flag (#1327).
    • This is only intended for development, and we do not recommend doing this as it degrades fuzzing efficiency.
    • Additionally, the UI now shows a visible warning when the Slither integration fails to execute for any reason.
  • More statistics on exit: Echidna now prints the total call count (#1328)
  • Precompiles now work correctly on Windows (#1333)
  • hevm has been upgraded to release/0.54.2 (#1331)
    • This hevm release includes fixes for prank and startPrank. Pranking now applies to contract creation, and startPrank behavior now matches Foundry's.
    • Full hevm changelog: argotorg/hevm@f1f45d3...037ff11

Full Changelog: v2.2.5...v2.2.6

Echidna 2.2.5

15 Oct 12:10
6d5ac38

Choose a tag to compare

What's Changed

  • Support Ethereum Cancun upgrade, including MCOPY (#1317, #1309, #1300)
  • Print a warning if an assert isn't hit in assert mode (#1110)
  • Add support for the vm.label cheatcode when printing call sequences (#1314)
  • Add support for other cheatcodes: startPrank, stopPrank, setEnv, and env{Bool,Uint,Int,Address,Bytes32,String,Bytes} (#1300)
  • Collect coverage during contract deployment (#1304)
  • Fix overflow behavior: overflows now revert the transaction, rather than causing Echidna to error (#1293)
  • Add documentation (#1298)

Full Changelog: v2.2.4...v2.2.5

Echidna 2.2.4

16 Jul 15:23
f8deef5

Choose a tag to compare

Echidna 2.2.4 is an exciting release that brings a host of improvements in fuzzing speed and user experience. This update:

  • Boosts performance through optimized shrinking and multicore fuzzing. Adjustments made to our multi-worker implementation will provide increased performance when multiple workers are in use, meaning you can now have a faster and more scalable fuzzing experience. Echidna will now by default run between one to four workers, based on the available CPU cores. While we have set an intelligent default logic, you can continue to manually control the number of workers with the workers config option or --workers CLI switch. Another welcome tweak is in the shrinking process where a single worker now handles a shrinking task to minimize contention.

  • Enhances user interface with handy shortcuts, added metrics, more informative messages, and clearer error responses. The new shortcuts allow for swiftly toggling the visibility of the tests and log panels (t and l). The newly introduced performance metric gas/s should be a more user-friendly indicator of execution performance than its predecessor calls/s. Expect insightful time measurements when saving coverage and an added message upon saving reproducers. Last but not least, we improved the error messages in various conditions, for better clarity and ease of understanding.

  • Adds initial support to TLOAD/TSTORE opcodes as we continue our work towards achieving full compatibility with Cancun. Note that other new opcodes from Cancun are still not supported, so we recommend working with solc 0.8.24 or older for the time being.

  • Introduces more configuration options including the ability to specify the Etherscan API key via the config file.

Take a peek at Echidna v2.2.4 in action fuzzing assert.sol:

Echidna 2.2.4 fuzzing the example in assert.sol

The full changelog is provided below:

Added

Fixed

Updated

New Contributors

Full Changelog: v2.2.3...v2.2.4

Echidna 2.2.3

04 Mar 13:59
fabd1ff

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.2.2...v2.2.3

Echidna 2.2.2

22 Jan 10:22
4ccee4b

Choose a tag to compare

What's Changed

  • Save corpus and reproducers continuously (#1167)
  • Deliver status information using server-sent events (#1131)
  • Performance improvements for coverage collection (#1160)
  • Make slither optional (#1159)
  • Rich trace printing (#1157)
  • Static builds and release workflow (#1133)
  • Re-enables using slither for vyper files (#1108)
  • Dependency updates (#1153, #1096, #1154)

Full Changelog: v2.2.1...v2.2.2

Echidna 2.2.1

20 Jul 16:23
21e6e52

Choose a tag to compare

What's Changed

  • Shanghai fork support with hevm 0.51.3 (#1090)
  • Fixed coverage collection for delegatecalls (#1083)
  • Added events to JSON output (#1069)
  • Changed event sequence to be displayed on new lines (#1079)
  • Improved "No tests found in ABI" error message (#1077)
  • Refactored code (#1070, #1074)

Full Changelog: v2.2.0...v2.2.1