This project demonstrates a secure single-click identity verification system using zk-SNARKs and MPC. The system utilizes JavaScript, Solidity, and Circom to provide a seamless and private identity verification experience.
Circom: A circuit compiler that generates zk-SNARKs proofs. Solidity: A programming language for writing smart contracts on the Ethereum blockchain. JavaScript: A programming language for client-side interactions and proof generation.
The traditional way of using KYC takes 1-2 days for verification and is centralized, raising privacy concerns due to data duplication and potential identity theft.
We use SBT (Soul-Bound Tokens) for identity issuance. SBTs are non-transferable NFTs that represent an individual's identity, ensuring it cannot be stolen or lost.
For identity verification, we utilize zk-proofs, which enable the verification of data without revealing the actual data. This ensures that the organizer can verify the identity without accessing the underlying data, thereby maintaining privacy.
We introduce Multi-Party Computation (MPC) as a second layer for KYC verification. MPC allows for the sharing of data with multiple parties without revealing the actual data. In our project, MPC is used to request acknowledgments from multiple parties about a user's relevant data, such as insurance policies.
For example, if a user has insurance policies with BOB, SBI, and ICICI, and purchases another policy from HDFC, during KYC verification, the system checks the user's age and existence. Additionally, it obtains acknowledgments from the parties involved to prevent fake insurance claims and fraud.
This concept can be applied to other domains as well.
We utilize the smart rollup of Tezos and Etherlink Chain, which offers:
- Low block confirmation times
- L2 Blockchain
- This tech stack enables fast and secure identity verification while maintaining user privacy.