## Self Protocol Co-learning #### Prove your Self Kevin Lin --- ## Agenda 1. Background Intro 2. Why Self & How Self works? 3. Demo & Coding Time 4. Future of Self 5. QA ---- ## Before starting Self Protocol App [iOS](https://apps.apple.com/us/app/self-zk/id6478563710) or [Android](https://play.google.com/store/apps/details?id=com.proofofpassportapp&pli=1) installed on your mobile device <div style="display: flex; justify-content: center; gap: 40px; margin-top: 20px;"> <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/rkELKmDZxe.png" alt="iOS QR Code" width="160"/> <p>iOS</p> </div> <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/BJxr_7wWgg.png" alt="Android QR Code" width="160"/> <p>Android</p> </div> </div> --- ## Background Intro ---- ## πŸ‘‹ Welcome to 2027 AGI is here. Jobs? Automated. Now what? Everyone's bored. So what do humans do best? **ζ‰ΎδΊΊι εŒ—γ€ε΅ζžΆγ€ζŠ¬ζ§“γ€‚** But now it’s hard β€” bots are everywhere. You don’t even know if the person arguing with you is… real. ---- ### So we ask: 🧠 **How can you prove you're human β€” without sacrificing privacy or usability β€” in a world dominated by AI?** ---- ### What is the existing proof of personhood solution looks like? ![image](https://hackmd.io/_uploads/Syx-XQv-gl.png) [What do I think about biometric proof of personhood? - Vitalik](https://vitalik.eth.limo/general/2023/07/24/biometric.html) --- ## Why Self & How Self works? ---- ### The paradigm of Self is different Instead of rebuilding identity from scratch… - βœ… Tap into existing identity systems - πŸ” Use ZK to selectively prove what matters - πŸ₯· Hijack traditional Web2 identities and turn them into privacy-preserving credential ---- ### e-Passport as starting point ![image](https://hackmd.io/_uploads/ByBfH7wbeg.png) ---- ### πŸ›‚ What’s a Biometric Passport? Looks like a regular passport, but with a chip inside. - πŸ“„ Personal info (name, DOB, passport ...) - πŸ™‹β€β™‚οΈ Biometric data (photo, sometimes fingerprints/iris) - πŸ” Signature (digitally signed to prevent tampering) ---- ### ✈️ Real-World Example: E-Gate at the Airport 1. πŸ“‘ The gate scans your chip (via RFID/NFC) 2. πŸ” Verifies digital signature β€” is this passport real? 3. 🧠 Extracts your biometric data (e.g. facial template) 4. πŸ“· Takes a live scan and compares it βœ… Match? You're through / ❌ No match? Manual inspection ---- ## What's inside the chip? ![image](https://hackmd.io/_uploads/ByOV0Xv-el.png) DG1 and DG2 are mandatory, the rest is optional. ---- DG1 has the same content as the MRZ (machine readable zone), and is the source of all the information we care to verify. ![image](https://hackmd.io/_uploads/rkHwAQvZee.png) (mirroring the printed page) ---- ![image](https://hackmd.io/_uploads/SJoOJED-el.png) ---- ### Specifically... ![image](https://hackmd.io/_uploads/HJc91Vvbgg.png) ---- ### Coverage of Self ![image](https://hackmd.io/_uploads/rkhVxVvbll.png) https://map.self.xyz/ ---- ### So What can Self do? ![image](https://hackmd.io/_uploads/BkkVqQw-gx.png) --- ## Registration [video](https://app.pitch.com/app/player/2349cfee-cb26-4bb4-9342-ff44c8616c6d/eeb1dd86-1e8a-46e6-b07e-97e1d145ff91/66f6f38d-ebd8-4705-89d0-a41456a77fbe) ---- ### Verify the Validity of the Passport ![image](https://hackmd.io/_uploads/HyS-Z4w-xe.png) ---- #### Add to merkle root ![image](https://hackmd.io/_uploads/SJXMZ4vZgx.png) [IdentityVerificationHub::registerPassportCommitment](https://github.com/selfxyz/self/blob/b841f2859352941de932d102e49c5206997e2ac9/contracts/contracts/IdentityVerificationHubImplV1.sol#L418) β†’ [IdentityRegistry::registerDscKeyCommitment](https://github.com/selfxyz/self/blob/b841f2859352941de932d102e49c5206997e2ac9/contracts/contracts/registry/IdentityRegistryImplV1.sol#L475) ##### based on registerCircuitVerifierId to decide which verifier should we use ([check verifiers](https://github.com/selfxyz/self/tree/main/contracts/contracts/verifiers/register)) ---- ![image](https://hackmd.io/_uploads/SyweMEPZxg.png) ---- ### for performance issue, the proof is generate in TEE server not client side device --- ### Verification & Disclosure [link](https://app.pitch.com/app/player/2349cfee-cb26-4bb4-9342-ff44c8616c6d/eeb1dd86-1e8a-46e6-b07e-97e1d145ff91/d8fa51c0-d42a-4ccf-86a8-60505df18729) - User will see that this app wants you to reveal what attribute (e.g. above X age, nationality, not OFAC country) ---- ![image](https://hackmd.io/_uploads/rkhtM4vWxg.png) - not verify signature of the passport β†’ cuz verify signature takes a lot of time in ZK β†’ so what we actually do is verify your commitment is present in the registry (the merkle tree) ---- - using groth16 (zkSNARK) calling [IdentityVerificationHub::verifyVcAndDisclose](https://github.com/selfxyz/self/blob/b841f2859352941de932d102e49c5206997e2ac9/contracts/contracts/IdentityVerificationHubImplV1.sol#L382) ---- ![image](https://hackmd.io/_uploads/ryRG7ED-le.png) See [how SelfBackendVerifier verify the proof](https://github.com/selfxyz/self/blob/b841f2859352941de932d102e49c5206997e2ac9/sdk/core/src/SelfBackendVerifier.ts#L77) β†’ [VerifyAll::verifyAll()](https://github.com/selfxyz/self/blob/b841f2859352941de932d102e49c5206997e2ac9/contracts/contracts/sdk/VerifyAll.sol) β†’ in the end also calling [IdentityVerificationHub::verifyVcAndDisclose](https://github.com/selfxyz/self/blob/b841f2859352941de932d102e49c5206997e2ac9/contracts/contracts/IdentityVerificationHubImplV1.sol#L382) --- ## Demo & Coding Time ---- ### [SelfSphere Demo](https://ethglobal.com/showcase/selfsphere-k3ap3) ![image](https://hackmd.io/_uploads/SJRFwEsege.png) ---- ### [Workshop Repo](https://github.com/selfxyz/workshop) --- ## Future of Self 1. ICAO is the central authority for trust β†’ decentralized it 2. client-side proving β†’ IMO, it’s decrease the dependency from external services ### My own view in discussion 1. two step verification possibility 2. upgradeable pattern for multi-version co-existing --- ## QA❓ --- ### Recommended <div style="display: flex; justify-content: center; gap: 40px; margin-top: 20px;"> <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/SySNLVvWxg.png" alt="iOS QR Code" width="160"/> <p>Self Builder Group</p> </div> <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/HygKL4PWee.png" alt="Android QR Code" width="160"/> <p>ETH Taipei ZK Workshop</p> </div> </div> --- ## Thank You! :sheep: :tada: **Connect with me:** - Twitter: [@Slutsky___](https://twitter.com/Slutsky___) - Telegram: [@kevinsslin](https://t.me/kevinsslin) - GitHub: [kevinsslin](https://github.com/kevinsslin) - Email: kk123750964@gmail.com
{"title":"250518 Self Protocol Co-learning","slideOptions":"{\"transition\":\"slide\"}","description":"Prove your Self","contributors":"[{\"id\":\"8e46bbd7-7e79-43c1-87c0-479212ddb7ba\",\"add\":7582,\"del\":734}]"}
    185 views