[Dev Fund] daml-fuzz — property-based fuzzing for Daml (working PoC, 8/8 mutation score) — seeking a Daml Tooling SIG champion

Hi all,

I’ve built a working proof of concept for daml-fuzz — a property-based fuzzer
for Daml/Canton contracts. You declare the rules a contract must never break
(“value is conserved”, “only the owner can act”, “Eve can never see this”), and
it fires randomized multi-party transaction sequences until it finds one that
breaks a rule — then prints the exact recipe to reproduce it.

Why it’s worth funding: Canton has coverage (DamlCov #323) and formal-
verification proposals (#12), but nothing that generates adversarial inputs.
And it’s the only approach that can test Canton’s unique risk surface —
multi-party authorization and privacy/disclosure — which no EVM fuzzer can
express.

It’s not vaporware. The PoC runs today on Daml 3.4.11 and is validated by
mutation testing: it catches 8/8 planted bugs across all four property tiers,
with zero false positives on the correct contract.

SIG alignment: daml-tooling.

Would a Daml Tooling SIG member be willing to champion this — or point me to
the right person?

Thanks,
dfrnw

Hi @Dfrnw ! Not a possible champion here, but I wanted to reach out regarding this proposal.

We looked into fuzzing some time back, so I have some context. I was going to point you to #52, but from the latest comments on your proposal, I assume someone else already pointed you there.

Aside from that, nice work. Personally, I think shipping a runnable PoC plus a demo, rather than only a write-up, is a great way to showcase value. The same applies to running it with current standards to evaluate results.

From a Canton dev perspective, what turns a fuzzer into something we would actually adopt is a clear developer workflow and a stable API. If #52 moves forward, count us in as supporters and early users!

Hi Тomimor, thanks a lot, and I appreciate you reaching out. Yes, I’ve been pointed to #52 (by Matthieu)

On your main point… a clear developer workflow and real API connection, that’s where I focused. It’s not just Daml Script, it connects to a live Canton participant over the JSON Ledger API v2, introspects any compiled .dar, and fires randomized multi-party transactions at a real ledger (one command with a local sandbox, or against a running participant). I’ve also run it against the CIP-0056 Token Standard to evaluate on current standards, not just toy contracts.

Thanks again.

1 Like

It is live and open source in github