Echidna
Echidna is a Haskell-based smart contract fuzzer for Ethereum that uses property-based testing to find violations of user-defined invariants in Solidity code.
In Depth
Echidna is one of the pioneering smart contract fuzzers, developed by Trail of Bits. It uses grammar-based fuzzing combined with coverage guidance to efficiently explore contract state spaces. Echidna supports both property-based testing (boolean properties) and assertion testing, making it versatile for different testing approaches. It integrates with the Solidity compiler and can test complex multi-contract systems.
Frequently Asked Questions
What is Echidna used for?
Echidna is used for finding bugs in Solidity smart contracts through fuzzing. It generates random sequences of function calls and checks that user-defined properties (invariants) are never violated.
How does Echidna compare to Medusa?
Echidna is written in Haskell and was one of the first smart contract fuzzers. Medusa is a newer Go-based fuzzer that offers parallel execution and is often faster. Both tools test the same types of properties. Recon's Chimera framework lets you write tests compatible with both.