* Update nav DevSettingsScreen * Initial topheader component for mockpassport * Initial draft of HeroBanner * Initial FormSection component * Initial implementation with encryption and nationality sections * Initial Passport Expires * Initial OPAC section * font sizes and color adjustments * Initial Age section * Functionality for birthdate via age * Add age range events * Remove birthdate section * Remove advancedMode set encryption section * Adds new select doc type section * Update list and mapping for docTypes * Commit missing icons * Add select doctype event * Adds docType to idType form object * Text adjustments and adds initial caution block * Add mono font to android and ios * Reset button and style changes * Fix plexMono for iOS * Use dev card and adjust spacing * Initial Parameter Section componentn * Initial Buttons for manage documents * Add scroll view * Complete migration of select screen section * Normalize icons rendered in parameter section * Initial Dangerzone area * Remove old danger zone and add some spacing * Add missing closing * Make mockpassport header black * Initial private key screen * Nav to private screen * Adjust colors, add new screen * Initial draft of privatekeyscreen * Ads bug icon * Return initial route back to original * Adds key for mapping * feat: add ScreenSelector component to DevSettingsScreen for enhanced debugging options * Consolidate date changes * Remove unneeded import * Revert deployment_target * yarn nice for formatting * Remove unused items * Fix up types * yarn nice * fix typing and tests * fix import * remove warning message * yarn nice --------- Co-authored-by: seshanthS <seshanth@protonmail.com> Co-authored-by: Justin Hernandez <transphorm@gmail.com>
Monorepo for Self.
Self is an identity wallet that lets users generate privacy-preserving proofs from government-issued IDs such as passports and ID cards. By scanning the NFC chip in their ID document, users can prove their validity while only revealing specific attributes such as age, nationality or simply humanity. Under the hood, Self uses zk-SNARKs to make sure personal data is redacted, but the document is verified.
Use cases unlocked include:
- Airdrop protection: Protect a token distribution from bots
- Social media: Add humanity checks to user's profiles
- Quadratic funding: Prevent farmers from skewing rewards
- Wallet recovery: Safeguard assets using IDs as recovery sources
- Compliance: Check a user is not part of a sanctioned entity list
Currently, Self supports electronic passports and biometric ID cards following the ICAO standards. Support for new identity documents is on the way!
Checkout the docs to add Self to your project.
FAQ
Is my passport supported?
Biometric passports have the biometric passport logo on their front cover. Checkout our coverage map here.
What can I request/prove with Self?
When a country issues a passport or a compliant ID document, they sign datagroups that include at least:
- First and last name
- Nationality
- Date of birth
- Gender
- Expiration date
- Passport number
- Photo
Applications are able to request each of those data points.
What is the signature algorithm ?
Countries use different signature algorithms to sign ID documents. Check out our coverage map to see which.
Where can I find the countries' public keys ?
The main list of public keys can be downloaded from the ICAO website. We use multiple lists published by different ICAO members.
What's the ICAO ?
The International Civil Aviation Organization (ICAO) is a specialized agency of the United Nations. Among other things, they establish the specifications for passports, that have to be followed by all countries. The full passport specs are available here.
Project Ideas
- Combine Self with other identification mechanisms as in Vitalik's pluralistic identity regime.
- Help adding support for other identity documents to Self, such as Aadhaar, Japan's my number cards or Taiwan DID.
- Build a social network/anonymous message board for people from one specific country.
- Create a sybil-resistance tool to protect social networks against spambots.
- Build an airdrop farming protection tool.
- Allow DeFi protocols to check if the nationality of a user is included in a set of forbidden states.
- Gate an adult content website to a specific age.
- Create a petition system or a survey portal.
- Passport Wallet: use active authentication to build a wallet, a multisig or a recovery module using passport signatures
We provide bounties for new and interesting applications using Self.
Development Setup
Run yarn install to bootstrap dependencies and husky hooks.
Gitleaks will scan staged changes on each commit via yarn gitleaks.
Contributing
We are actively looking for contributors. Please check the open issues if you don't know were to start! We offer bounties for significant contributions.
Contact us
Contact us on telegram for feedback or questions.
Thanks Rémi, Florent, Ayman, Justin, Seshanth, Nico and all other contributors for building Self.
Thanks Aayush, Vivek, Andy and Vitalik for contributing ideas and inspiring us to build this technology, and PSE for supporting the initial work through grants!