## 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?

[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

----
### π 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?

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.

(mirroring the printed page)
----

----
### Specifically...

----
### Coverage of Self

https://map.self.xyz/
----
### So What can Self do?

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

----
#### Add to merkle root

[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))
----

----
### 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)
----

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

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)

----
### [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}]"}