DAML / CANTON · A DIFFERENT REVIEW

A DAML audit is not an EVM audit
with the names changed

Point an EVM audit at a DAML package and it finds nothing — there is no msg.sender, no gas, no reentrancy, no proxies for it to look at, and the failures that actually cost you here have no EVM equivalent at all. So we built the review DAML needs: four risk axes, a review written for the language, every authorization finding proven by execution, and — when you give us the version you are replacing — a check of your upgrade. Pick the DAML skill in the workspace and this is what runs.An EVM audit finds nothing in DAML — no msg.sender, no gas, no reentrancy. So we built a review for it: four risk axes and every authorization finding proven by execution.

Risk axesFour
ReviewNative
ProofBy execution
Daml3.x
01 · WHAT THE BUG IS

You cannot forget an access-control check

The ledger computes authority from the parties on the contracts in a transaction and rejects an under-authorized submission before any code runs. There is no onlyOwner to leave off, and no modifier to forget. That entire bug class is gone.The ledger rejects under-authorized commands before any code runs. No onlyOwner to forget — that bug class is gone.

What replaces it is harder to see: authority wired to the wrong party, which the ledger then enforces faithfully, forever, without ever erroring. Nothing fails. The workflow runs exactly as written, for the wrong person.The real risk: authority given to the wrong party, which the ledger then enforces silently, forever.

There is no cost of attack to weigh. No gas, no capital requirement, no timing race, no mempool. If a party can submit the command, the ledger executes it — so a finding here is never softened by how hard it would be to reach.No gas, no capital, no race: if a party can submit the command, it runs. A finding is never softened by how hard it is to reach.

02 · TWO RISKS THE EVM DOES NOT HAVE

Who can see, and who can proceed

Privacy is the signature risk class here

A public chain discloses everything by construction, so over-disclosure is only a defect on a shared ledger — where leaking to the wrong participant is frequently worse than an authorization slip. There is no EVM analogue to import, and no EVM tool that looks for it.Over-disclosure only matters on a shared ledger, where a leak can be worse than an authorization slip. No EVM tool looks for it.

Contention is a correctness property, not an operational one

A consuming exercise archives rather than queues. So one shared contract that every participant must consume fails under ordinary honest load, with no attacker involved anywhere. That is the defect that works perfectly with one user and collapses with fifty — and it will not show up in your tests.A consuming exercise archives rather than queues: one shared contract fails under ordinary load — fine with one user, broken with fifty.

03 · COVERAGE

Built for how DAML actually fails

Smart-contract tooling grew up around the EVM, and DAML fails in different places. A DAML package is easy to ship reviewed only by the team that wrote it; this gives it an independent review in minutes, at the same price as an EVM audit. No third-party analyzer is run on a DAML package, so every finding comes from the review and says what backs it.EVM tooling misses how DAML fails. Get an independent review in minutes, at EVM prices.

Our review reads your package for what fails in DAML:

The review is written for DAML, not borrowed from an EVM audit, because the two languages fail in completely different places.Written for DAML, not borrowed from EVM.

Your package must build before the review starts, so every finding is against code that actually compiles. Each finding then tells you whether it is proven or reasoned, so you always know how much weight it carries.Your package must build first, so the review covers real code. Each finding says what backs it.

Every potential finding is verified exactly as in an EVM audit. Nothing reaches your report on a single opinion.

04 · PROOF

Proven, not argued

An authorization finding is proven by execution: the exploit is attempted as the party who should not be able to act.

A command that goes through when it should have been rejected is the proof. Not an inference — the outcome itself.

Only the authorization axis is mechanically verifiable, and we say so rather than implying more. A privacy finding has no attack sequence — the harm is disclosure, complete at creation. A liveness finding may have no attacker at all. Your report says which is which per finding, instead of sending you off to reproduce something that cannot be reproduced.Only authorization is mechanically verifiable, and we say so. Your report marks, per finding, what can and cannot be reproduced.

05 · WHAT STAYS THE SAME

Same checks, same price, same remediation

DAML is a skill on the same rails, not a separate product.

In the reportEVM auditDAML audit
Access mapPrivileged-access mapAuthorization topology — signatory, observer and choice controller per template
Emergency controlsPause, upgrade, timelock reviewNo section — DAML has no deployed code to pause or upgrade
06 · IT TAKES YOUR REAL PACKAGE

Built for Daml 3, not a toy subset

Contract keys were removed from the language in Daml 3.x, so a package still using key/maintainer targets 2.x and will not build here.

07 · THE FOURTH AXIS

What your next version would break

Daml 3 packages can be upgraded, and a contract created under one version can be exercised under another. Almost every piece of smart-contract security thinking predates that idea entirely — so upgrade safety is a whole risk axis here, with its own review and its own finding category, not a footnote.A contract can run under a newer package version, so upgrade safety is its own risk axis and finding category.

The dangerous change is not the one that fails. A changed signatory, observer or ensure expression is not a deployment error — it quietly alters who is bound by, and who can see, contracts that are already live on the ledger. Nothing in your pipeline announces it.The dangerous change does not fail: a changed signatory, observer or ensure expression silently changes contracts already live.

Give us the version you are replacing and we check the two together — the answer your own deployment will give, before you deploy.Upload the version you are replacing and we check both — before your deployment does.

READY WHEN YOU ARE

Pick the DAML skill and this is what runs

Same workspace, same price, same multi-round engagement. Upload a package or point us at a public GitHub repo.

Grisoco AI is an automated audit: no human security engineer reviews your code, and it is not a certification. No audit of any kind — automated or human — can prove a contract is free of vulnerabilities, and this one will miss issues, including critical ones. Have a qualified engineer review every finding, and engage a professional audit firm as well before deploying a contract that holds significant value. See the Terms of Service.