DarkLedger
Privacy First
The problem DarkLedger solves
DarkLedger is for doing high-value private financial deals without leaking information.
It’s useful anywhere people currently rely on:
• calls
• DMs
• spreadsheets
• manual approvals
because they don’t trust public blockchains or shared order books.
DarkLedger lets those same deals happen on a ledger, but with the same (or better) privacy as off-chain workflows.
Challenges I ran into
The biggest challenge was not functionality, but correct privacy behavior on Canton devnet.
Early on, things appeared to work:
• commands executed
• contracts were created
• UI showed data
But some flows were accidentally leaking visibility because:
• the wrong party was added as an observer
• a helper contract had broader stakeholders than intended
• a query was executed under the wrong participant context
On Canton, one extra observer = a real privacy bug, not just a UI issue.
How I fixed it
• I stopped trusting the UI and relied on devnet party-scoped queries
• I built an Inspector view that runs the same queries under different parties
• I added a “Privacy Challenge” outsider perspective to actively try to see private state
If a non-stakeholder could see anything, the model was wrong and had to be fixed at the Daml contract level.
Use of AI tools and agents
I used AI tools mainly to speed up development and reduce mistakes, not to replace core logic or decision making.
Tools used
I used Claude, CodeCodex, and Cursor during development.
Tracks Applied (2)
Prosperia
Best Privacy-Focused dApp Using Daml
Canton Network
Technologies used