#

Lez-fuzzing
**Coverage-guided fuzzing & adversarial testing infrastructure for the
[Logos Execution Zone (LEZ)](https://github.com/logos-blockchain/logos-execution-zone) protocol.**
[](rust-toolchain.toml)
[](#-fuzz-targets)
[](.github/workflows/mutants.yml)
[](LICENSE-MIT)
---
## π Repository Layout
```
lez-fuzzing/
βββ Cargo.toml # Workspace root (members: fuzz_props)
βββ Justfile # Turn-key entry-points
βββ rust-toolchain.toml # Pins Rust nightly (required by cargo-fuzz)
βββ .gitignore
βββ fuzz_props/ # Shared invariant framework + input generators
β βββ Cargo.toml
β βββ src/
β βββ lib.rs
β βββ arbitrary_types.rs # Arbitrary impl wrappers for LEZ types (libFuzzer)
β βββ invariants.rs # ProtocolInvariant trait + concrete invariants
β βββ generators.rs # Arbitrary / proptest strategies
βββ fuzz/ # cargo-fuzz crate (own [workspace] sentinel)
β βββ Cargo.toml
β βββ fuzz_targets/ # 20 targets total β see table below
β β βββ _template.rs # Template for `just new-target`
β β βββ fuzz_*.rs
β βββ corpus/ # Curated seed inputs (one dir per target)
βββ .github/
β βββ workflows/
β βββ fuzz.yml # CI: smoke-fuzz Β· regression Β· proptest Β· perf (libFuzzer)
β βββ fuzz-afl.yml # CI: AFL++ lane
β βββ mutants.yml # CI: mutation testing (cargo-mutants)
β βββ lint.yml # CI: fmt + clippy
βββ scripts/
β βββ add_fuzz_target.py # Automates new-target scaffolding (called by just new-target)
βββ docs/
βββ fuzzing.md # Full developer guide
βββ mutants-not-fuzzable.md # Policy + mutantβtest mapping
```
The LEZ codebase is consumed as a **sibling directory** β clone
`logos-execution-zone` next to this repository so the `../` path deps resolve:
```
parent/
βββ lez-fuzzing/ β this repo
βββ logos-execution-zone/ β LEZ codebase (path deps resolve via ../)
```
---
## π Quick Start
### 1. Prerequisites
```bash
rustup install nightly
rustup component add llvm-tools-preview --toolchain nightly
cargo install cargo-fuzz
cargo install just # optional but recommended
```
### 2. Setup
```bash
# Clone both repositories side by side
git clone