Differential Fuzzing of Bitcoin protocol implementations and libraries
// readme
bitcoinfuzz
Differential Fuzzing of Bitcoin implementations and libraries. Note this project is a WIP and might be not stable.
Each module is a thin adapter over a library’s public API: the harness compares the libraries and does not reimplement them. Read CONTRIBUTING.md before opening a PR.
Installation
Platform Support
bitcoinfuzz is developed and supported on Linux only.
MacOS or Windows Users:
We recommend using Docker to run bitcoinfuzz if you’re on macOS or Windows. This provides the most reliable fuzzing experience with full toolchain support.
Dependencies
llvm toolset (clang and libfuzzer)
-
To support the flags used in some modules
-fsanitize=address,fuzzer -std=c++20the minimum clang version required is 10.0 -
For ubuntu/debian it can be installed using the package manager:
sudo apt install clang lld llvm-dev -
To install it from source check clang_get_started. You must build it with this cmake option:
-DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt"
Running
The fuzzer has a lot of dependencies from…