Introduction
Welcome to scfuzzbench, an up-to-date, practical benchmark for smart-contract fuzzers focused in stateful invariant testing.
Motivation
- Maintain a current view of common fuzzers under a shared, realistic workload.
- Focus on benchmark quality:
- real projects
- real bug-finding tasks
- long timeouts
- repeated runs to reduce noise and compare medians/distributions
- transparent metrics and artifacts for independent review
- Help fuzzer/tool builders understand bottlenecks and improve their tools.
- Leave room for iterative improvements in setup and fairness (for example, corpus bootstrapping strategies).
Inclusion criteria for fuzzers
A fuzzer is considered in-scope when it is:
- Open source.
- Able to run assertion failures.
- Able to run global invariants.
Fuzzers currently ready for this benchmark
- Foundry
- Echidna
- Medusa
- Recon Fuzzer
Benchmark targets
Every target is a fork under the scfuzzbench org. Its main branch holds upstream code plus the harness, while pre-target holds the pristine upstream baseline. Benchmark requests use the immutable commit in the in-repo target manifest.
| Target | Pinned commit | Properties path | Why it is included |
|---|---|---|---|
| Aave v4 | 459b020058f4 | tests/recon/Properties.sol | Represents a large modular lending protocol with price, share, and liquidation state transitions. |
| Superform v2-periphery | 102eeaf5e2f4 | test/recon/Properties.sol | Represents cross-chain vault periphery behavior with asynchronous routing and share-accounting invariants. |
| Liquity v2 Governance | 5610870e7e91 | test/recon/Properties.sol | Represents epoch-based governance, voting power, bribe allocation, and time-sensitive accounting. |
| Origin Dollar (OUSD) | 299ec6b6bf54 | test/recon/Properties.sol | Represents a rebasing yield-bearing stablecoin, including supply, credit, transfer, and rounding behavior. |
| Drips | c50d160ead6b | test/recon/Properties.sol | Represents streaming and split payments with time-dependent squeeze, receive, and withdrawal accounting. |
Notable fuzzers currently excluded
These are notable tools, but currently excluded from this benchmark because they do not meet one or more criteria above:
- Orca: not open source.
- ItyFuzz: not straightforward for assertion-failure/property style runs in this workflow.
- Wake: Python-based workflow that requires a custom harness.
- Harvey: closed source.
As tools evolve, this list should be revisited.
