We've standardized the transaction corpus format between Medusa and Echidna, enabling seamless interoperability and replay of discovered transactions across both fuzzers.
> impact
Medusa's transaction corpus format has been updated to align with the standard used by the popular smart contract fuzzer, Echidna. Previously, each tool used a distinct serialization format for storing transaction sequences, preventing cross-compatibility. This update modifies Medusa's corpus generation and parsing logic, ensuring that any corpus created by Medusa can be directly read and utilized by Echidna, and vice-versa.
This change addresses a significant friction point for developers using multiple fuzzing tools in their security workflow. The inability to share a corpus meant that interesting states or transaction sequences discovered by one fuzzer could not be easily replayed or further explored by the other without manual, error-prone conversion. This created siloed testing efforts and prevented developers from leveraging the unique strengths of both Medusa and Echidna on a unified set of test cases.
The impact is a more streamlined and powerful fuzzing process. Developers can now use Medusa for its high-throughput discovery capabilities to generate a comprehensive corpus and then feed that same corpus directly into Echidna to leverage its advanced property-checking features. This interoperability saves time, reduces redundant work, and ultimately leads to more robust and thorough smart contract audits by combining the strengths of two leading security tools.
> Try this now
try this
# This walkthrough demonstrates how to generate a corpus with Medusa
# and then use it directly with Echidna for further testing.
# 1. First, run Medusa to generate a transaction corpus.
# The fuzzer will explore your contract and save interesting
# transaction sequences to the specified directory.
medusa fuzz --target YourContract --corpus-dir ./shared-corpus
# After the fuzzing session, the `./shared-corpus` directory is now
# populated with transaction files in a format Echidna understands.
# 2. Now, you can run Echidna using the corpus generated by Medusa.
# Echidna will load the transaction sequences from the directory,
# replay them, and use them as seeds for its own fuzzing campaign.
echidna YourContract.sol --corpus-dir ./shared-corpus --config config.yaml
# This seamless workflow allows you to leverage the unique strengths
# of both tools on the same dataset without any conversion steps.