
Self Disclosure Privacy using ZK Proofs, Demonstrated & Executed Directly on Cardano Preview
I built a demo where a customer buys a beer and proves they are 18 or over, without ever showing their ID. No name. No birth year. No photo. Just maths.
Two beers were ordered. Two separate transactions. The same proof, reused, no re-verification needed. The blockchain recorded "age verified" both times. That's all it knows. No name. No address. No date of birth. No photo. No personal data of any kind.
This runs entirely and directly on Cardano. No sidechains. No L2s. No off-chain verification. The ZK proof is checked by the Plutus V3 validator itself, on-chain, using Groth16.
And this isn't just for bars, it works for shops, website signups, any age-restricted service. One credential, reused anywhere. Self disclosure means you choose what to share, and in this case, the customer chose to share nothing except "yes, I'm old enough, give me a nice cold beer." 🍺
Massive shout out to everybody involved in the below!
Aiken smart contract language on Cardano (please don't judge my Aiken... I know it's bad 😂)
ak-381 by Modulo-P, Groth16 SNARK verification library for BLS12-381 on Aiken
Circom + snarkjs, ZK circuit design and proof generation
MeshSDK, transaction building and wallet management
Blockfrost, blockchain data provider
A basic demo to set the stage for further privacy enhancements that can occur directly on Cardano.
Self disclosure privacy on Cardano
Cheers Cardano 🍻🍻
Beer 1
preview.cardanoscan.io/transaction/23…
Beer 2
preview.cardanoscan.io/transaction/65…
English













