Awesome
Fuzzers for EIP1962
This repo contains preset scripts for fuzzing of Rust implementation, fuzzing gas estimator (those are not too interesting), and differential testing between C++ implementation and Rust implementation. All scripts are Rust files, so C++ is wrapper into the thin layer.
Implementations
Libfuzzer
Requires:
- C++17 compiler
- Nightly Rust
- Install using manual
Usage:
cd fuzz
bash run_fuzz_compare.sh
Honggfuzz
Requires:
- C++17 compiler
- Stable Rust
- Install using manual
Usage:
cd honggfuzz
bash run_honggfuzz_compare.sh
Tuning
- Change number of threads for fuzzers in scripts
- Download initial corpus from here and follow the instructions of either here or here
Recommendations and updates
- Honggfuzz is recommended for speed
- Now Honggfuzz saves all results instead of unique ones. Due to differential testing being implemented as "panic on different results" fuzzer considered different reasons as one crash case.
- run
cargo update
before running to fetch latest copies from github
Extra
Folder cross-tester
contains few examples how to specify inputs from fuzzer reports debug and compare implementations.