Skip to content

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.

TargetPinned commitProperties pathWhy it is included
Aave v4459b020058f4tests/recon/Properties.solRepresents a large modular lending protocol with price, share, and liquidation state transitions.
Superform v2-periphery102eeaf5e2f4test/recon/Properties.solRepresents cross-chain vault periphery behavior with asynchronous routing and share-accounting invariants.
Liquity v2 Governance5610870e7e91test/recon/Properties.solRepresents epoch-based governance, voting power, bribe allocation, and time-sensitive accounting.
Origin Dollar (OUSD)299ec6b6bf54test/recon/Properties.solRepresents a rebasing yield-bearing stablecoin, including supply, credit, transfer, and rounding behavior.
Dripsc50d160ead6btest/recon/Properties.solRepresents 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.

Fully static. Generated in CI from S3 run artifacts.