This project is supported by a grant from the ZK Grants Round funded by Aztec, Ethereum Foundation, Polygon, Scroll, Taiko, and Zk Sync.
This repository comes with a blog post that provides more details about its content and the concepts.
The zk-KYC app implements a privacy-preserving KYC process using zero-knowledge proofs (ZKPs). The app comprises a set of zero-knowledge circuits and a front-end application that enables users to prove and verify the validity of KYC checks without revealing sensitive data.
The app demonstrates the following zk-KYC building blocks using Noir:
- Age Verification Circuit: Ensures that the user's age is above a specified threshold.
- Country Verification Circuit: Checks that the user's country is not part of a list of restricted countries.
- Salary Verification Circuit: Confirms that the user's recent salaries are above a specified threshold.
-
Proof Generation: The prover inputs private values into the app. The app uses NoirJS to generate zero-knowledge proofs that these values meet the KYC criteria.
-
Proof Verification: The prover copies the generated proof and shares it with the verifier. The verifier can independently verify the proof using their part of the app without accessing the prover's actual data.
-
Data Privacy: The verifier only receives the zero-knowledge proof, ensuring that the prover's personal data remains private.
make compile
make install
make start