Skip to content

Introduce Echidna-based, stateful fuzz testing for Storage Incentives #307

@0xCardiE

Description

@0xCardiE

Add a Docker-based runner and documentation, plus a multi-actor harness that fuzzes all smart contracts with role modeling, cross-actor accounting invariants, non-interference checks, and post-condition properties for all contracts.

What is fuzz testing?
Fuzz testing (“fuzzing”) is an automated testing technique that repeatedly calls contract functions with many randomized inputs and stateful sequences of calls. Instead of writing a single expected-output test per scenario, you write properties/invariants that must always hold, and the fuzzer tries hard to find a sequence that breaks them.

Why use it for smart contracts?
Finds edge cases humans miss: weird input combinations, unusual call ordering, boundary values, and unexpected state transitions.
Stateful bugs: catches issues that only appear after many steps (e.g., stake → freeze → slash → migrate → restake).
Property-driven: you encode “this should never happen” rules (access control, accounting conservation, deletion semantics), and the tool searches for counterexamples.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions