Skip to content

srlabs/cosmfuzz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CosmFuzz

A developer-friendly fuzzing tool for CosmWasm smart contracts that wraps Ziggy and provides automatic harness generation with multi-contract support.

Features

  • Multi-contract fuzzing: Fuzz multiple interacting CosmWasm contracts simultaneously
  • Harness generation: Discovers invariants and generates fuzzing harness template
  • Invariant-driven: Define invariants directly in your contract code using #[cfg(cosmfuzz)] modules

Installation

cargo install --path cosmfuzz

Quick Start

# 1. Initialize in your target
cd my-cosmwasm-contract
cosmfuzz init

# 2. Add invariants and setup function to your contract
# See docs/writing-invariants.md
# See docs/setup-functions.md

# 3. Start fuzzing
cosmfuzz fuzz

# 4. Debug a crash
cosmfuzz run /tmp/cosmfuzz/my-project/output/cosmfuzz/crashes/.../id:000000...

Notes:

  • cosmfuzz init runs cargo afl system-config.
  • cosmfuzz fuzz patches cosmwasm-std's MockApi::addr_validate to return Ok(Addr::unchecked(input)) for fuzzing.

Documentation

Example

See examples/ for a minimal working example.

About

CosmWasm smart contract cover-guided fuzzer

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages