ZK-Identity (Semaphore): Private Identity Claim System by minting a NFT
Proposal Overview
Authenticating one’s identity through a public Ethereum Address severely restricts privacy. Thus, crypto users might want to prove that they are eligible to join or partake in specific activities without revealing one’s public address or public keys. Protocols are motivated to support the actions from the user side since they might want to distribute an airdrop through off-chain activities.
Imagine you request to get an airdrop, but it immediately leaks your previous financial history since it is associated with your public identity. You want to join DAO voting but someone prevents to do that since you had voted against the administrator of the DAO. Sounds crazy, right?
Let us solve this problem by enabling users to claim airdrops anonymously while proving one’s identity (i.e. one has an NFT) without revealing their public keys or address.
Only the pre-arranged, registered address sets can mint an NFT, which is designated by the manager when deploying the contract. The pre-registered address can mint an NFT to prove the identity. We provide the features for both sides, the manager to deploy the contract with a set of pre-registered addresses. Managers can also register/unregister users by manipulating the contract’s Merkle tree. The user who has a pre-registered address, to mint an NFT to another account using a private key.
Use Cases
- Minting an NFT for anonymous-based crypto games like DarkForest
- To hide your account when you cast a vote for the argument or against it.
Competitive Landscape
We have a similar project done by Koh Wei Jie called OneOfUs that gives private voting project on Ethereum using zero-knowledge proof. However, it seems defunct. There is a hackathon project for helping users to claim their status in-game by minting an NFT, done by jefflau. However, when cloning the project, it seems not to work though.
Proposal Ask
zk-Identity will be established to be community-driven and self-funded by its DAO. To bootstrap its primary features, two developers are now being involved.
- Sigrid Jin - Backend, Smart Contract Developer (https://www.linkedin.com/in/jinhyungp1/)
- Snoop So - Frontend Developer, UI/UX Designer (https://www.linkedin.com/in/snoop-so-528116b8/)
To get this up and running, we will be requesting the $15k/year stable basic income to take care of initial development, welfare, and operation costs.
This ask will be in line with the laid down milestones as detailed below:
- launching a feature-complete product on our testnet
- forming a DAO with 5-out-of-9 multisig
- launching on mainnet with audit (with full features till August 2022)
- attracting 1k daily active users (with launch video, full PR promotion to Korea landscape)
- attracting 10k daily active users (with a detailed roadmap, and governance process, to Asia landscape)
Roadmap
We are a bit slow in progress, however, are motivated and dedicated to successfully launching the project.
Currently deployed version 2 has a set of whitelisted addresses. In version 3, we will provide a manager page to deploy address by just clicking a button with delivering a set of approved addresses. Managers can also add a new address or delete an existing address from the contract’s Merkle tree. Final Version 3 will be deployed to Harmony Mainnet.
Objective | Date | Status |
---|---|---|
Testnet Launch | 30 April 2022 | Done |
Beta Testing and Fixes | 5 May 2022 | Done |
Mainnet Launch v1 (built with Circom, Polygon ) | 10 May 2022 | Done |
Mainnet Launch v2 (built with Semaphore, Polygon) | 23 May 2022 | Done |
Mainnet Launch v3 (Manager Options to be added, Harmony) | 31 July 2022 | Pending |
Final Smart Contract Audit | 30 Aug 2022 | Pending |
External Links
-
Deployed Address: Hardhat + React App = Dapp
-
Demo Video: ZK Identity Mainnet Launch version 1) - YouTube
-
Contract Address which is on Polygon Network
- Verifier address: 0xe162f60a32130596D56D31b1d2A562E3a8161be9
- AttestationMinter address: 0x16BA61441Ae1345Dbb17d476f8295b0d6517CDbB