Skip to content

Proposal: daml-fuzz — property-based fuzzing for Daml contracts

CLOSEDPull Request
by fronow20-07-2026Declined
daml-toolingneeds-champion

Summary

daml-fuzz is an open-source (Apache-2.0) property-based fuzzer for Daml contracts on Canton: developers declare invariants a contract must never break, and it generates randomized multi-party transaction sequences until it finds one that does — then reports a minimal, deterministic reproduction recipe. A working proof of concept is public and validated by mutation testing (8/8 planted bugs discovered by seeded random generation, zero false positives). It fills the ecosystem's adversarial-input-generation gap, complementing coverage (DamlCov, #323) and formal verification (B-Method, #12).

---

Checklist

Checklist

  • [x] Proposal file added under /proposals/
  • [x] Milestones and funding amounts defined
  • [x] Acceptance criteria included
  • [x] Alignment with Canton priorities described

---

Notes for Reviewers

  • SIG alignment: daml-tooling.
  • Working PoC (runnable today, Daml 3.4.11): https://github.com/fronow/daml-fuzz-canton
  • 2.5-minute demo (live break → catch → fix): https://youtu.be/QZ2AnSY_Fps
  • Uniquely to Canton, the property set includes privacy/disclosure and multi-party authorization — surfaces EVM-ecosystem fuzzers cannot express.
  • Positioning: consumes the dpm devkit (#18); complementary to DamlCov (#323) and B-Method (#12), not competing.
  • Funding figures are the author's market-cost estimate; open to committee guidance.