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 DirectoryCoverage 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 StatusShrinking 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 CollisionGenerated 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 BoardThe big one. Stretched Foundry support across stateless, stateful invariant, and assertion modes.
assume() filteringassertX helpers in assertion modedapptest naming to foundry across the codebaseFoundry 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.
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.
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.