Loading video...

Video Failed to Load

Go Home

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...

21,534 views • 8 months ago •via X (Twitter)

72 Comments

Dave's profile picture
Dave8 months ago

Still learning about zk proofs, but excited to be sharing many more demo's and scenario's on Cardano when I get time :)

TIMxBRIDGE's profile picture
TIMxBRIDGE8 months ago

Nice experiment! Could you please help me to define the roles on your model? User orders two beers …that’s easy. I like to know who is the trust registry, issuer and verifier.

Dave's profile picture
Dave8 months ago

Issuer is the authority that verified the customer's birth year and issued a cryptographic credential (e.g. a government ID office). Holder is the customer. They generate the ZK proof locally on their device, their birth year never leaves their phone. Verifier is the Plutus V3 smart contract I deployed on Cardano. It checks the Groth16 proof on-chain and only learns "age ≥ 18: yes/no", nothing else. Trust Registry is the verification key embedded in the validator. It defines which issuer's credentials are

TIMxBRIDGE's profile picture
TIMxBRIDGE8 months ago

Thanks, Dave! What I was missing was the issuer component, and now that point is clear. Over the last few years, I’ve come across many rather wild concepts around “issuers.” But in practice, without an issuer at government level, there is very little we can do. In the EU, we also have to comply with eIDAS, which brings a broader framework and many additional requirements. That said, the tool you created is very nice. You may also want to look at It also uses ZKPs and is built modularly, which makes it possible to tailor the entire solution to the relevant use case.

Am_Tortol's profile picture
Am_Tortol8 months ago

Bro says dont judge my aiken as he changes the game 😂😂

Defi-the-Oz's profile picture
Defi-the-Oz8 months ago

I am joking here, but it would be funny if #cardano became the dominant chain used for bar hopping, porn web sites, and strip clubs. Maybe this is our niche.

Dave's profile picture
Dave8 months ago

Haha it's true though, restrictions by age

agus 🐦‍⬛ 🇦🇷's profile picture
agus 🐦‍⬛ 🇦🇷8 months ago

👀

Dano Finance's profile picture
Dano Finance7 months ago

Wait, so can we use this as KYC in DeFi? As long as we have a reliable handling CEX KYC now acting as Issuer we can do this easily on Cardano?

Dave's profile picture
Dave7 months ago

@DanogoFinance If there is an external party willing to validate the age then from what I understand yes. Of course this is a super basic example and is by no means a production ready implementation.

Fiksukettu🐍's profile picture
Fiksukettu🐍8 months ago

@DjediMindTrick Hei Dave! Very nice! In layman terms does that mean that onve there has been a valid age verification “by a trusted third party “ then that wallet is verified for ever, and all it needs to show is “yup I am old enough, here is the taransaction that says I am old enough” (?)

Dave's profile picture
Dave8 months ago

@DjediMindTrick Yeah exactly this :)

Zormtar's profile picture
Zormtar8 months ago

@CardanoMitch Thanks for this Dave this is exactly what I've been trying to explain to people about ZK proofs

Dave's profile picture
Dave8 months ago

@CardanoMitch No worries was cool to do!

Powered by Cardano - The Ecosystem Media Layer's profile picture
Powered by Cardano - The Ecosystem Media Layer5 months ago

@DenicioBernier Does it still work after 5 beers?

Dave's profile picture
Dave5 months ago

@DenicioBernier Works better the more beers you have :)

Powered by Cardano - The Ecosystem Media Layer's profile picture
Powered by Cardano - The Ecosystem Media Layer5 months ago

@DenicioBernier Alcohol induced zero knowledge

.ZKDID® 🧠's profile picture
.ZKDID® 🧠8 months ago

Nice one Dave 👏

BatCaveNode's profile picture
BatCaveNode8 months ago

Awesome work🖤🦇

Frank's profile picture
Frank8 months ago

This is brilliant Dave. Exactly what Cardano was made for. Well done!

Dave's profile picture
Dave8 months ago

Cheers Frank, I thought it was a good real-world use-case

Frank's profile picture
Frank8 months ago

Agreed. Asking for too much information in RWA is bugbear of mine. It's harvesting for profit. If asked for phone number, name or email when I'm buying something I either refuse or go elsewhere. I give money, they supply goods. Simple. The customer should be in control.

Frank's profile picture
Frank8 months ago

Very many transactions in Thailand, no matter what it is, bank, hotel, hospital they ask to see a passport. I have never understood why. They have enough information to verify me without this intrusion.

Frank's profile picture
Frank8 months ago

Electronic payment in some shops they ask to take a photo of the transaction from my phone! I mean. Wtaf. Then they give a paper receipt!

Dave's profile picture
Dave8 months ago

wow haha, well now it's on the blockchain :)

Frank's profile picture
Frank8 months ago

Another rwa use case. Instead of scanning each item individually at checkouts we should be able to push a full trolley through a scanner that would identify its contents and give the option of instant pay or verify click to pay.

Frank's profile picture
Frank8 months ago

This would also allow instant stock check on items, reordering levels, profit margin, sales figures in real time, trends, footfall figures, the possibilities are endless without imposing on your customer. In fact making customer experience quicker, simpler and possibly cheaper

ADSL's profile picture
ADSL5 months ago

Love this Dave. The verification side is exactly right — the chain only needs to know "yes" or "no." The harder problem is issuance how does the credential get created in the first place without a centralised authority holding your ID? That's what we're solving in Lovelace with Identus DID + Halo2 on-device. The proof never leaves the phone. Not even to our servers. Same end result as your beer demo, but the ID check happens once, privately, and then never again - anywhere.

Dave's profile picture
Dave5 months ago

Sounds interesting!

ADSL's profile picture
ADSL5 months ago

I'll open source it asap. Intended to be anyway.

Karl Fren's profile picture
Karl Fren8 months ago

My man

Ace101's profile picture
Ace1018 months ago

Very fun

FatFrog FFR's profile picture
FatFrog FFR8 months ago

Love this. Well done 👍

Pramit's profile picture
Pramit8 months ago

@morganschofield Weird. This turned me on.

GNP1 - Cardano SPO - supporting mental health's profile picture
GNP1 - Cardano SPO - supporting mental health7 months ago

Yes but how do they prove they are the person connected to the digital ID - I dont understand how this can work unless there is some kind of biotmetric connection to a former verification process ?

Dave's profile picture
Dave7 months ago

As mentioned this is a very basic example as a starting point to show its possible to validate on Cardano using smart contracts :) facial scanning, biometrics etc can be added to compliment this

GNP1 - Cardano SPO - supporting mental health's profile picture
GNP1 - Cardano SPO - supporting mental health7 months ago

I think it is a great example and highlights the many use cases in digital identify and supply chain management etc which is where Cardano should be focussing - but one of the biggest hurdles with real world cases is that you ultimately have to have a third party trusted entity to enter the system

Dave's profile picture
Dave7 months ago

Completely agree. I think this is why a lot of the privacy aspects is better suited on an institutional level. I've got some ideas on some things to try out though.

CORN🌽's profile picture
CORN🌽7 months ago

乾杯しよう🍻

45B - Cardano Enablement's profile picture
45B - Cardano Enablement8 months ago

👏👏👏💪🚀

Geronimo Cardano 👁️🐍's profile picture
Geronimo Cardano 👁️🐍8 months ago

👏

0x53s's profile picture
0x53s8 months ago

Peroni - kid has good taste! Is it public on GH?

Dave's profile picture
Dave8 months ago

love a Peroni, it's all on my laptop at the mo, but I have a few more demo's planned, i'd like to attempt self disclosure of an ADA balance that exceeds a threshold possibly, and keep pushing until they get trickier, I have it formed as part of a toolkit currently

0x53s's profile picture
0x53s8 months ago

WAGMI energy right here. Building through the chaos Lemme send a Peroni your way, you deserve it for keeping it real and transparent. Drop me an address ser, just a small thank you for the grind 🍻

Dave's profile picture
Dave8 months ago

We are :) appreciate it, means a lot, no need! 🍻

0x53s's profile picture
0x53s8 months ago

a'right ser, cheers from the trenches 🍻

HighestFastestStrongest's profile picture
HighestFastestStrongest8 months ago

It would be nice if you can make wallets private with selective disclosure.

Brent Norris's profile picture
Brent Norris8 months ago

This is great. Really great. On the bar side, would they have an app with a qr code reader or how would that work?

Blitz Mcgee's profile picture
Blitz Mcgee8 months ago

👀👀👀

BillyJ's profile picture
BillyJ8 months ago

Next you should vibe code a node and show the community if it is possible or not. Take up @Quantumplation challenge

Dave's profile picture
Dave8 months ago

@Quantumplation I was actually debating attempting this, mainly for the learning opportunity, but the whole vibe code the entire thing puts me off :)

BillyJ's profile picture
BillyJ8 months ago

@Quantumplation But if you can prove it’s possible imagine the effect it could have on future dev spending. Could be a huge plus for Cardano and if you prove it is not possible it would also help settle some of the drama. Win win.

Dave's profile picture
Dave8 months ago

@Quantumplation I'm already fairly sure its possible, but not to the level I would deem quality, and then getting it from that position into quality it's probably more time-consuming than coding it with the context in mind, is my opinion. :)

Quantumplation | Pi Lanningham's profile picture
Quantumplation | Pi Lanningham8 months ago

@BELTRAANC I'm fairly sure the quality bar I outlined in my challenge is *not* possible right now😅

Quantumplation | Pi Lanningham's profile picture
Quantumplation | Pi Lanningham8 months ago

@BELTRAANC In particular, we as an ecosystem don't have the tools to determine when such an implementation is "done"; We don't have a definition of what it means to *be* a compliant node. Without that an AI will *really* struggle to finish the task, even when guided by a Cardano expert.

Dave's profile picture
Dave8 months ago

@BELTRAANC Yeah exactly this

BillyJ's profile picture
BillyJ8 months ago

@Quantumplation One day I guess 🤷🏻‍♂️. Shouldn’t the end goal be to make it possible though so it is easier for everyone to participate and secure the chain?

Modulo-p's profile picture
Modulo-p8 months ago

That's amazing, great work! 🙌

Leonardo Boz's profile picture
Leonardo Boz8 months ago

Nice! Are you saying midnight for zkp is overkilling? Real question, not sarcastic.

Dave's profile picture
Dave8 months ago

Lots of use cases can be solved on Cardano :)

Blitz Mcgee's profile picture
Blitz Mcgee8 months ago

We’ve come a long way since @IAM_X_IDENTITY inception.

Kastor's profile picture
Kastor8 months ago

I think it is only possible without revealing the photo when you authenticate with your face.

Dave's profile picture
Dave8 months ago

Yeah, and that is possible too :)

Kastor's profile picture
Kastor8 months ago

Absolutely but if not set correctly on the phone there must an option to reveal the photo as well. It will grow in very complex way very soon. This is what I like about programable selective disclosure. It will create so many opportunities and remove so much friction. TY sir

Dave's profile picture
Dave8 months ago

Yeahh for sure, so many opportunities, lots of basic use-cases this can cover, i'm going to attempt much harder ones too I think, but with a focus of execution & interaction directly on Cardano

Kastor's profile picture
Kastor8 months ago

Thank you for all that time you keep building and keep exploring. Much appreciated

Candle Kid's profile picture
Candle Kid7 months ago

Does this work for Guinness?

James Mcloughlin's profile picture
James Mcloughlin8 months ago

But age verified could mean different things for different verifications right? I.e social media bans/restrictions are implemented for under 16/17, whilst driving may be 18 and drinking 21 depending on the country. Doesn't something like this need to be Linked to a DID?

James Mcloughlin's profile picture
James Mcloughlin8 months ago

assuming the age verification would be works once for the app, but different apps doing this would need to do the verification

The Collective Consciousness's profile picture
The Collective Consciousness8 months ago

where do you store the proof of who you are ? and how the protocol know that you are the person you need to prove you are ?

Dave's profile picture
Dave8 months ago

You can store it wherever you like, the protocol doesn't need to ever know who you are, this is just a basic example you can extend this with all kinds of things, facial recognition, etc

Endeavor's profile picture
Endeavor8 months ago

isn't better use halo2?

Related Videos