Shipping to Echidna

May 14, 2026

Writing this one late. Echidna doesn’t wait for blog posts - but it deserves one.

Echidna is the fuzzing OG. Every smart contract fuzzing tool that came after it - Rendezvous included - learnt from it.

Landing PRs upstream, then, doesn’t feel like contributing. It feels like giving back.

Four PRs in:


#1428 — Independent Coverage Directory

Coverage reports were getting dumped in the corpus directory. Confusing. Easy to lose, easy to nuke.

Added a coverageDir config field and a --coverage-dir CLI flag. Falls back to --corpus-dir so nothing breaks for existing users. Coverage now lives where it should.

Shipped in v2.3.0.


#1454 — Live Shrinking Status

Shrinking ran silent. You stared at the status line and prayed it was still alive - or killed Echidna too early and lost the reproducer.

Each worker now streams progress directly into the status line:

shrinking: W2:4592/5000(23)

Multi-worker output. Completed workers drop off automatically. Length computed on demand - no extra state. You can watch the shrinker work.

“Shoutout to @BowTiedRadone for the PR. It’s great to have this extra bit of logging to prevent killing Echidna too early while debugging a broken invariant.” — @rappie_eth

Shipped in v2.3.0.


#1484 — Foundry Contract Name Collision

Generated Foundry tests crashed forge. The generated contract was named Test and collided with forge-std/Test.sol.

Renamed to FoundryTest. Wired up CI to run forge init and validate the generated tests compile end-to-end.

Small fix. Unblocked the Foundry path.

Shipped in v2.3.1.


#1499 — Foundry Test Support, Across the Board

The big one. Stretched Foundry support across stateless, stateful invariant, and assertion modes.

Foundry users now get first-class treatment.

The assume() work also surfaced a bug one layer deeper - in hevm , the EVM Echidna runs on. vm.assume(false) was silently passing instead of reverting with the FOUNDRY::ASSUME magic error, which broke input filtering. Reported and tracked in hevm#963 . Closed.

Shipped in v2.3.2.


Why This Matters

Echidna is critical infrastructure for the Ethereum smart contract ecosystem. Every contribution upstream sharpens the tool that thousands of auditors and developers already depend on.

This is also the same school of thought that shapes how I think about Rendezvous for Clarity: build the fuzzer that the language deserves, then keep sharpening it.


Thanks

A genuine thank you to @gustavo-grieco , @aviggiano , and @rappie for the warm welcome and for pointing me to the right resources. Their guidance turned what could have been weeks of ramp-up into landed fixes.