PROPERTY BASED TESTING
15 articles tagged "property based testing"
Property Design Patterns for DeFi Lending Protocols
A practical catalog of invariant property patterns for lending protocols — from solvency and utilization bounds to liquidation health checks — with Solidity code for each.
Stateful Fuzzing Explained: Why Sequence Matters in Smart Contract Testing
Most smart contract bugs only manifest after a specific sequence of transactions. Stateful fuzzing explores these sequences automatically — here is how it works and why it matters.
How to write your first invariant test
A hands-on tutorial that walks you through writing three invariant properties for a simple ERC-20 vault, then running them with Foundry and Echidna. Working test suite in 30 minutes.
What is smart contract fuzzing?
Smart contract fuzzing throws millions of random inputs at your contracts to find states that violate your security assumptions. Here's how it works, what it catches, and how to get started.
7 common smart contract fuzzing mistakes (and how to fix them)
Your fuzzer ran for 24 hours and found nothing. That doesn't mean your code is safe — it might mean your campaign was broken. Here are the seven mistakes we see most often and how to fix each one.
Halmos symbolic execution for smart contracts: setup, limitations, and when it beats fuzzing
Fuzzers sample randomly. Symbolic execution explores every path. Halmos brings symbolic execution to Foundry — but it's not always the right tool. Here's when it wins and when fuzzing is better.
Advanced invariant testing techniques for DeFi protocols
Beyond basic property writing. Ghost variables, temporal properties, conditional invariants, bounding inputs, handling oracles, and debugging failing invariants.
Solana smart contract fuzzing: Trident, Honggfuzz, and property testing
Solana fuzzing is years behind EVM but catching up fast. Here's how to use Trident, honggfuzz, and proptest to find bugs in your Solana programs.
Fuzzing Rust smart contracts: CosmWasm, Solana, and cargo-fuzz
Rust smart contracts run on Solana, CosmWasm, and more. Here's how to fuzz them all with cargo-fuzz, proptest, and ecosystem-specific tools.
Move smart contract security: testing patterns for Aptos and Sui
Move's type system prevents some Solidity bugs but introduces new ones. Here's how to test Move contracts on Aptos and Sui, including the built-in Move Prover.
AMM and DEX invariant testing: properties every swap protocol needs
Every AMM needs these properties: constant product conservation, fee accounting, LP share math, and sandwich resistance. Here's the complete invariant suite.
LLM-generated invariant properties: what works, what hallucinates, how we use them
We've tested LLM-generated properties across dozens of engagements. Some are surprisingly good. Some are dangerously wrong. Here's what we've learned.
Fuzzing ZK circuits: testing Noir and Circom with property-based approaches
ZK circuits need testing too. Under-constrained circuits, missing range checks, and witness mismatches are the reentrancy bugs of the ZK world. Here's how to fuzz them.
Differential testing for smart contracts: comparing implementations to find bugs
Two implementations of the same spec should behave identically. When they don't, you've found a bug. Here's how to set up differential testing for smart contracts.
Why we built Chimera: write once, fuzz everywhere
Every fuzzer needs different test code. Chimera lets you write properties once and run them with Foundry, Echidna, and Medusa — no rewrites, no lock-in. Here's why we built it and how the architecture works.