Repository navigation
Releases
Releases · latent-9/chainoffuzz
v0.1.0
First release of ChainOfFuzz, a mutation fuzzer for consensus adjacent parsers.
What ships
- Four targets sharing one engine, mutator and oracle:
sbpf-elf,block-component,votor-wire,shred-ingress - Receipts: 130,000,000 iterations across the four targets, 957,062 accepted, 0 panics
- Seed invariant tests: every target must reject its own seeds cleanly and accept at least one of them
- CI with dependency cache, libclang for the rocksdb bindgen step, and a 20k-iteration smoke campaign per target
- MIT license
Fixes landed before this tag
- shred-ingress seeds now carry valid
ShredVariantbytes (MerkleData/MerkleCode, proof size 6) at exact wire sizes. The previous seeds used theShredTypetag bytes, whichShredVariant::try_fromrejects outright, so the target measured a rejection gate instead of the parser. Accepted inputs went from 12 to 187,595 over 10M iterations. - votor-wire seeds are generated from a fixed keypair, making the corpus byte-identical across runs.
- block-component footers now include reward certificate payloads.
- The sbpf-elf program loader is built once instead of per iteration.
Receipts
| target | crate | iterations | accepted | rejected | panics |
|---|---|---|---|---|---|
| sbpf-elf | solana-sbpf 0.25.0 | 100,000,000 | 65,110 | 99,934,890 | 0 |
| block-component | solana-entry 4.5.0-alpha.2 | 10,000,000 | 447,763 | 9,552,237 | 0 |
| votor-wire | agave-votor-messages 4.5.0-alpha.2 | 10,000,000 | 256,594 | 9,743,406 | 0 |
| shred-ingress | solana-ledger 4.5.0-alpha.2 | 10,000,000 | 187,595 | 9,812,405 | 0 |
Rerun: cargo run --release -- <target> <iterations>, default seed 12648430.