Motivation

Both traditional fuzzers (afl++, libFuzzer) and smart contract fuzzers (Echidna, Medusa) typically use a corpus as a starting sequence of interesting inputs for the program under test.

There is an opportunity for smart contract fuzzers to use a common corpus format to enable composability across a range of tools:

End to end you could imagine a “fuzzer heaven” workflow where:

Proposed Format

A corpus is a directory with the following structure:

corpus
├── setUp.json
├── inputs
│   ├── toolname-seq001.json
│	  │	  ...
│   └── toolname-seqXXX.json
└── outputs
    ├── toolname-seqYYY.json
		│ 	...
    └── toolname-seqZZZ.json