Proposal: daml-fuzz — property-based fuzzing for Daml contracts
CLOSEDPull Request
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.