New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

Shipping zkPassport, Shipping Self Protocol Into Production | Marek Olszewski at Pragma Prague 2025

ETHGlobalThu, Oct 9, 2025, 12:00 AM

Marek Olszewski, co-founder of Celo and creator of Self Protocol, presents a deep dive into zkPassport and Self Protocol at Pragma Prague 2025. Learn how this decentralized identity solution leverages biometric passports, zero-knowledge proofs (ZKPs), and blockchain to verify identity without compromising privacy. Discover how Self Protocol tackles Sybil resistance, prevents bad actors in DeFi, and distinguishes humans from AI—all while maintaining full decentralization. From NFC passport scanning to on-chain ZK attestations, this talk covers the technical architecture, challenges in production, and real-world applications for Web3 identity. 00:00 - Introduction to Self Protocol by Marek Olszewski 00:44 - Self Protocol Launch at ETH Denver Recap 01:27 - Solving Web3’s Biggest Problems: Sybil Resistance 02:03 - Preventing Bad Actors in DeFi with On-Chain Identity 02:43 - Proving You’re Human in an AI-Driven World 03:48 - Interactive Game: Guess the Country! 04:58 - Why Existing Identity Solutions Fall Short 06:00 - Centralized vs. Decentralized Identity Tradeoffs 06:36 - Why Passports Are Ideal for Decentralized Identity 07:50 - Biometric Passports & NFC Chip Security 08:32 - How Countries Authenticate Passports On-Chain 09:46 - Using ZK Proofs for Privacy-Preserving Verification 10:23 - Proving Citizenship Without Revealing Country 10:58 - Age Verification & OFAC Compliance with ZKPs 12:01 - Self Protocol’s Two-Step Onboarding Flow 12:39 - Scanning Your Passport & NFC Verification 13:14 - Generating ZK Proofs for On-Chain Registration 14:01 - How Self Protocol’s Merkle Tree Works 14:39 - Nullifiers & Commitments for Anti-Sybil 15:56 - Privacy: Hiding Data from Issuing Countries 17:17 - Demo: Proving Attributes to dApps with ZK 18:49 - Technical Deep Dive: ZKP Circuit Design 19:24 - Merkle Exclusion Proofs for OFAC Checks 20:09 - How Self Protocol Protects User Privacy 20:59 - Mobile App & Secure Secret Backup 21:40 - Offloading ZKP Generation to Trusted Hardware 22:59 - Challenges: Choosing a Proving System (R1CS vs. Groth16) 23:38 - Handling 5GB Proving Keys & Ceremony Complexity 24:47 - Why Off-the-Shelf ZK Tools Failed 25:20 - Can AI Help Write ZK Circuits? (Spoiler: Not Yet) 26:02 - Hackathon Use Cases: DeFi, Smart Wallets, Memecoins 26:34 - Closing Remarks & Self Protocol Documentation _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 🇨🇿 *Pragma Prague* Pragma Prague 2025 was held on May 29th at Holešovice Market in Prague, Czech Republic and was an in-person summit for builders and leaders in the web3 ecosystem. This event was in collaboration with ETH Prague. Watch the full Pragma Prague YouTube Playlist here: ETHGlobal's Pragma series takes place in cities around the world, and is designed to be a different kind of event. Pragma is a one-stage conference with founders-only on stage, bringing together a small group of curated attendees and speakers to discuss the future of web3 and reflect on the past. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ✅ Follow Marek Olszewski X: https://x.com/marek_ ✅ Follow Self X: https://x.com/SelfProtocol ✅ Follow Kartik Talwar X: https://x.com/TheRealKartik ✅ Follow ETHGlobal X: https://x.com/ETHGlobal​ Warpcast: https://warpcast.com/ethglobal Website: https://ethglobal.com YouTube: https://www.youtube.com/@UCfF9ZO8Ug4xk_AJd4aeT5HA _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Are you interested in Ethereum development and entrepreneurship? 👉 Sign up for the next ETHGlobal event: https://ethglobal.com/events 🎁 Get exclusive access and perks with ETHGlobal Plus! https://ethglobal.com/plus 📣 Want us to throw an event in your city? Tell us where! https://ethglobal.com/city _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Transcript

[Music] And for this talk, I'd like to bring on Maric to tell you all about how self- protocol works under the hood. So, please give Marik a big round of applause. [Applause] Thank you, Karthik. Hey, everyone, it's really great to be here. My name is Marchky and uh I'm going to be talking about self-protocol today.

Uh if you like this talk, you can find me at on Twitter and you can learn more about self-protocol at uh self protocol and self.xyz. Um so uh previously on pragma um we introduced uh self-protocol at ETH Denver. Uh so self protocol was launched uh just a few months ago at ETH Denver. Anybody here saw that talk?

Uh anybody here? Was it in Denver? Few people over here. Okay, very few people. That's great.

Uh so you guys will appreciate this content. Um and so self-protocol is is a new uh decentralized identity protocol um that uh really is aimed at solving uh some of the biggest problems in in web 3. Um, one of them that I think is probably the one that we're most focused on is, you know, solving this question of are you um sibling. Um, you know, I think proof of work uh way back when uh started working on this problem and to some extent it succeeded uh but you have to burn a lot of electricity. Proof of stake is another way to address this.

Uh but uh it requires people to bring capital. And so without capital, without burning electricity, this today continues to be an unsolved problem. And it's one that we've been really really focused on. Uh the other one is um you know, are you a bad actor? Uh sadly, we've we've had a lot of hacks uh recently and we've seen a lot of um uh funds being moved through DeFi applications to to launder those funds that have been stolen and and there's really no way for these onchain DeFi applications uh to uh fight back against kind of this kind of bad actor activity.

And so self-protocol has a nice solution for this as well. And then as if um you know those weren't big enough problems uh to think about self also um lets you solve and answer this question which is you know are you even a human? Um and so uh who would have thought that uh you know certainly a few years ago it would have been hard to imagine uh that we're living in a world now where we actually have to think about this problem. Um, so how many people here have looked at a tweet online and wondered is that really a human writing that? Anybody on Twitter going what's going on here?

Right. Um, so this is certainly going to be a bigger and bigger problem going forward. Uh, knowing whether or not some you're interacting or you're reading some content that's been written by a human or not is going to be important. But I would argue that even these agents that are writing this content, they too will want to know if they're interacting with a human. uh which is a little ironic.

Um and so self-protocol uh can can help you here as well. And so last time we we introduced self protocol. We launched it. We're really proud. We raced towards launching at East Denver and and getting it to a production uh ready state.

Uh in this talk I want to kind of dive a little bit deeper and and talk uh about how the inner workings work. And um like last time, I wanted to make this fun for you guys. And so I I have a little game that you guys can participate in. And the game is called Guest to Country. So throughout the slides, we're going to have a few uh country shapes uh sprinkled uh around.

If you see a country that you recognize, yell it out. Okay? Don't wait for me to stop talking. Just yell it out. Don't raise your hand.

Just yell it out. We're gonna make it a competition between the left side and the right side or I guess the right side and the left side and the right side. Uh and um and at the end we'll keep score and we'll see who can do better. So I'm going to warm you guys up. Um so this is the first country.

It's going to be easy. Okay. I think I think I heard these guys first. So it's going to be one zero. Um okay.

One more warm-up. France is correct. I think I heard this side, too. But maybe because I'm standing here, maybe I should stand in the middle here. I'll just stand here.

Okay. And the next one, I still heard them faster. Come on, guys. You got to speed up. Okay, those were the easy ones.

Um so um you know I think you know we're really proud to be you know bringing kind of self-protocol uh to the world right now because we think it's again really sorely needed. You know those three problems that I talked about you know they're really big problems in our industry. Um and a lot of the other approaches I would argue are not really cutting it just yet. So we've got these hardware dependent approaches that I think are really elegant and you know certainly very innovative uh but you know because they require people to go and act you know um find one of these hardwares pieces of hardware you know it's hard to scale to billions of people um then there's also these web of trust models which I think are also pretty interesting actually my co-founder uh from Cello invented IGN trust way back when which is I think one of the um original decentral centralized web of trust identity systems. Um but one challenge with them is is they they can be gameable.

Um and then of course you have people you know creating these centralized offerings that then um maybe create these onchain attestations and you know of course those are are centralized so they come with a whole slew of issues. Uh and then there are also issues around privacy. If those centralized entities ever get hacked uh then your personal data might might be you know out there. Um and so that's not really really ideal. And so um what self does uh to address these kind of shortcomings is um leverage the most trusted uh attestation of who you are.

Uh anybody want to guess this country down here? That's right. Okay, that's one for the right. Congrats. It's one three and nobody guessed it.

Okay, two two three now. Um, yes, this one I thought would be an easy one, but I was surprised that nobody mentioned it till now. So, nice nice call out. Don't be shy. This is a this is a safe space, everyone.

Um, yeah. And so, passports are are actually a perfect thing to use for decentralized identity in part because they're issued by many countries. Uh and so there's no one um you know centralized actor. It's um you know there's around 200 or just under 200 countries out there in the world. So that's really nice.

Uh and they're actually quite difficult to obtain. Uh people generally uh keep them safe because you need them to travel. It's hard to get more than one of them unless you're a citizen of multiple countries. Uh and they're also uh machine readable. Uh who knew that you can read your passport with your phone?

Okay, you guys are um ahead of the curve. It's great. Uh for those of you who aren't familiar with this, if you look at the bottom of this passport, you'll see this little gold rectangular and circular logo. That means that this is a biometric passport. Next time you look at your passport, see if you have that logo.

It means that there is a microchip inside your passport. Uh and that microchip uh stores your uh personal data. That's right. Okay. 33.

I'm going to go back to this side now. See if I'm biased again. Um, so inside the passport over here, uh, is your biometric data encoded inside that chip and it is signed by a certificate authority chain uh, leading up to a country um,wide um, signing uh, authority, certificate authority. And uh, they did this so that it's harder to forge passports. So each uh passport can effectively be authenticated uh by just reading the data on the NFC chip and then verifying the signatures going up to this uh root certificate authority.

And so if you have access to every country's certificate authority and there's not that many countries, so there's not that many of these certificates, it's easy to have them um you know already on your device. You can effectively verify the authenticity of your passport. And again, they did this to make it harder to uh forge these passports. So next time you enter a new country, if you see them kind of holding your passport down in the machine face down for a little bit of time, usually that means they're reading the NFC chip and they're validating whether or not you have a forge passport or not. And so that's pretty exciting because we can use that for a decentralized identity protocol.

And that is right. So now it's 43. Um, and what's amazing about blockchains and smart contracts is that you can actually verify this without a counterparty. So you can verify this in a smart contract. Um, and if you were to do that, um, you'd probably run into gas issues and maybe some privacy issues.

And so that's not what we do. Instead, what we do is we verify it inside a zk snark and then or we prove it inside a zk snark and then we verify that snark on chain and that effectively allows us to prove in zero knowledge and without a counterparty that you have a valid passport on chain and that's pretty pretty exciting. And once you've done that, you can then start. That is right. 44.

Uh, this is really close. I love it. Sometimes it's really lopsided. So, I'm I'm glad that you guys are keeping the competition alive. Um, once you've done that, you can um prove various statements about yourself in zero knowledge to third party applications.

Uh and so for example, you can prove, you know, that you're just a citizen of any country without revealing which country. Uh that's pretty exciting because again, you can use that for civil resistance, right? You can prove that you're from a specific country. Say that you have a protocol where you want to target specific, you know, um uh people in specific countries. You can do that.

Uh you can also prove that you're either above or below a certain age. Um, certainly like being above a certain age is useful for showing that you're an adult, but we're also talking to some dating companies and they seem to want to be able to prove that you're under a certain age. And you can do that without revealing your actual age. And so it's privacy preserving. Uh, you can prove that you're not from a set of countries without revealing which country you are from.

And you can also prove that you are not on the OFAC list without revealing anything about yourself. And so again, you can prove this in a decentralized and privacy preserving way on chain uh so that folks could build uh DeFi primitives that could prevent bad actors from accessing them. And these proofs can then be associated with uh wallet addresses. Uh so again you can prove that you're uh not on the offic list and you want to associate this address with that statement and you can then prove another statement with another address and those two proofs can't be linked together. And so that's really really uh quite elegant as well.

And so what does the whole experience look like and how does all of this work? Um well it looks a little bit like this. Uh there's two steps. The first step is that is right for four. First step is to scan your passport.

So we have to uh take a picture of your of your main page. Um we need that to be able to decrypt the data on the NFC chip. That's a privacy feature that passports have. Next you do the NFC scan. And as soon as you've done that, uh we are ready to start generating those uh ZK Snark proofs.

Um once we generate the proof uh we can submit it on chain. Then it's verified on chain. We're waiting until uh the verification happens on chain. And once that's done, you've registered. And so it's really really quick.

Uh if you have your passport with you, if you traveled from overseas and you brought your passport with you, definitely recommend uh going through this onboarding flow. Uh once again, it's it's really really easy. Uh and that's the first step. And so what's going on here? Um, you know, there's a few I think I heard it here first, which means we're 55 54 54.

Okay. Um, so the first step is to generate that that zero knowledge proof. Um, and that zero knowledge proof is uh once again verifying the uh certificate authority chain. uh so going from the passport up to uh the certificate authority route. Now uh we don't have all of the certificate authorities uh on chain.

Instead we have a a Merkel route of all of them. And so we we first check these signatures. These are not very snark friendly signatures. Um these are ones that again these these issuing countries of these um uh that you know issue these passports use. Um and then the uh the final um uh Merkel tree that includes um all of the different certificate authorities that is a snark friendly uh Merkel tree that we've created.

And so you do basically two signature checks here and then a Merkel inclusion uh check um for that certificate authority in the certificate authority tree. And so we generate that proof uh and the output of this is also a hash of your passport data uh and we use that uh to generate a nullifier uh and then also a commitment um which is made of uh your secret and your passport data. And so once the user generates all of these things they they submit this snark proof onchain. the the smart contract onchain verifies okay yes indeed you have a valid passport that's great uh this was not forged uh it verifies that the nullifier hasn't been used before and this is important so you can only register once this is how we prevent civil attacks uh and then we add this commitment uh to a Merkel tree that we maintain on chain anybody know this country that's right 64 before you guys are falling behind. I'm even on your side.

What's going on? Um, so this commitment we put on chain into a tree that looks like this. Um, and the reason we do this, um, you notice that the commitment is made up of a userenerated secret and your passport data. And the reason we do this is we want to make it so that even your own issuing country can't see uh what you're doing on self-protocol because your issuing country and actually any country that you go visit uh that scans your passport has all of your passport data, right? And so we don't want these um uh organizations uh to necessarily be able to see what you're using self prototle for.

I think you yourself probably want a level of privacy. Uh and and so the way we do that is we every user generates a user generated secret and the commitment that they make to this tree uh is composed of both that user generated secret and the data and then we'll talk a little bit about what happens with that in a bit. Um Switzerland is right. It's a hard one actually. It's a funny shape actually.

um a lot of um uh mountains and valleys in the bottom. Um so I think that's five six right? Okay. So once you've registered you can start interacting with these third party uh DAPs to disclose information about yourself. And so this is what the flow looks like.

Um looks like this GIF is not looping. So I'm just going to go back and forward again. Oh no. Too much talk of Switzerland. Um okay I'll just describe what what you may have seen.

Um we have on the homepage we have a button with a um um QR code scanner and so you press that button and that brings up the camera and the first step is to scan um the QR code uh that your DAP that you want to interact with uh generates that DAP uh shares in the QR code what um what you would like uh what the DAP is asking you to disclose to them in zero knowledge. Um, and then that pops up on the app. It lists everything out for you, so you can uh take a close look. Uh, and if you approve of what it's asking uh you to prove, like for example, that your age is over a certain um number or that you're not in the list, uh you can press uh prove and it generates a proof and it gets shipped uh on chain and you're good to go. Uh and it's super quick.

uh so quick that it went by uh really fast. Uh so apologies for that. Um and so what's going on under the hood here? This is a harder country. It's not Egypt, but you guys are warm.

Africa is not a country. I hate to break it to you. Oh, I'm blocking it. Um so what's going on over here? So um like before we're generating a ZKP and here what we're doing is we're generating a proof that you are in that Merkel tree that I showed before u and so you're effectively revealing that you know of that user generated secret and of your passport data um uh that's previously registered and if you can do that then it's you've proven that you've registered and then you can also do a ZKP to prove whatever statement you're interested in revealing like you're not on the OFAC list.

In the case of not being on the offax list, it's a Merkel exclusion proof that we do. Um and then uh since a lot of these DAPs uh typically don't want you to do this multiple times, there's a DAP specific um uh nullifier as well. Kenya is right. Um someone was looking in the map I think for a while but still that was not uh explicitly disallowed. I will give you the point.

Um 75. Okay. Um, and so one of the really nice things about uh this design is that once again uh when it comes to interacting with thirdparty DAPs, your passport data isn't used in this nullifier and it's not uh used at all in these proofs. And so you are fully um keeping your information private from any country or any person that scanned your passport. Uh which is really really really nice.

Um, and so how does all of this look like uh from an architecture um perspective? That is not Alaska. Alaska is also not a country. Um, cold. Very cold.

Not not just because Greenland is cold, but because you're far away. Think more east. Um, so everything starts with a passport. Then we have a mobile app that I would highly recommend you guys uh install and check out. Uh, I mentioned that, you know, there's this userenerated secret that's really important for preserving your privacy.

Uh, who likes writing down secrets and keeping them somewhere safe? Only one person. Uh, that is why we automatically back it up to the cloud using the iCloud key store. Uh and then if you're on Android to the app specific part of Google Drive that only your app can read. That is correct.

Uh the right side is continues to be on a roll. Uh I think that's um 85 now. Yeah. Um once you have that secret on the mobile app, you can construct these proofs. But generating these proofs on chain is uh or generating these proofs on a mobile app is difficult.

Uh these are quite expensive proofs to create. Uh they require a lot of memory. And so for now we accelerate the proving uh by offloading it to a TE service. And so the TE um of course um is is running securely uh in for example SGX. Uh we can't see what the TE is looking at.

Uh the mobile app connects um um securely uh directly to the TE and then once the proof is generated the TE deletes your passport data uh and so it's fully privacy preserving and then the TE communicates directly with um a chain and so all of the registrations happen on Cello. We're working to make all of the disclosure proofs uh be verifiable anywhere on any chain. Uh and of course you can also verify them offchain as well. And so just to quickly close, Brazil is right. Uh 68, you guys are still in the running.

Uh there's a few learnings. Um you know, for those you know who are interested in what it takes to to deploy one of these things. Um I think probably the biggest one for us was that picking a proving service um or uh proving system I should say uh is quite difficult when you really care about privacy. Um you know I think it's it's uh worthwhile being a little more conservative and so we um we ended up picking Roth 16 which is a more um well tested you know has a higher lindiness uh number uh certainly than a lot of the newer proving systems. Um and you know that made things a little harder because um Gro 16 requires proving keys uh which are things that you have to download to to generate these proofs.

Uh and it also requires ceremonies. And so that meant iterating every time we discovered a new passport that was doing something unexpected. And there's a lot of countries that are doing things that are unexpected. Every country seems to be doing their own thing. Um it meant that we had to quickly go and write new circuits, get them audited uh and then go uh and create new ceremonies.

Um and that really did suck. Uh especially the proven keys themselves. Our biggest proven key is 5 gigabytes. It's very very big. Um that's again why we're using a TE.

That's too much data to download onto your mobile phone. Um and so we're we're certainly excited by some of the recent advances where we can get rid of this. Um and then in the last uh ZK project that I did when we created a ZK Snarkbased like client for for Cello um we there was no ceremony tool that could create um um proving key for the size of circuit that we had. Uh and so we wrote our own one. Um this time around we're like okay let's just use something offtheshelf.

Uh all the off-the-shelf tools really struggled. um I have to say we had to do a lot of modifications to them to to get things to to to generate these keys. So that was quite quite an effort. So just a monumental effort just to go through all of the things that you need to do to bring one of these um you know ZKP circuits into production. And then finally, you know, we we've been onboarding new engineers who were kind of learning the codebase and trying to get um trying to understand what's going on.

And so, of course, everyone's talking about vibe coding now. And so, they tried cursor and they tried seeing if cursor can give them some insights into the circumc. It was just a complete failure. So, we certainly need uh more mcps. We certainly need more circum training data uh for um for all of these LLM models to be able to be more productive.

And then finally, anybody here participating at ETH global? Okay, lots of people participating in the hackathon. Amazing. Uh I think I heard it here first, right? Yeah, Vietnam.

Um so I think that's 96. Um if you are hacking and if you have a use case for defending against civil attacks, uh for preventing bad actors from using your protocol, uh maybe you want to verify that someone's an actual human uh maybe you want to recover a multi-IG wallet. uh you're building a um smart wallet uh protocol or you just want to reward uh people uh with meme coins based on their name, their hair color, their birthday. So you want to do a birthday coin. These are all fun things that you can do with self-protocol.

Anything you can think of uh you can do. So definitely definitely check us out. You can learn more at docs.self.xyz.

Uh and that's everything. Thank you so much. [Applause] [Music]

Automatic transcript — names and jargon may be misspelled.