/zk-KYC

Primary LanguageJupyter Notebook

zkKYC platform

Powered by Aleo blockchain

Video:

zkKYC Youtube Video

Description:

zkKYC - KYC platform using zkML (Zero-knowledge Machine Learning) algorithms on Aleo blockchain.

zkKYC privacy and usability motivation:

Due to AML/CTF regulations, customer’s privacy is typically traded off for the mandated transparency requirements. In addition, this privacy erosion also reduces the security and safety of the customer as shared personal information can be passed on or stolen and used against the best interest of the customer. Recent innovations in self-sovereign identity and zero-knowledge cryptography, along with proper ecosystem design, allow for a novel approach to KYC that protects the customer’s privacy without reducing transparency. The proposed solution concept, zkKYC, removes the need for the customer to share any personal information with a regulated business for the purpose of KYC, and yet provides the transparency to allow for a customer to be identified.

Overview:

Decision Tree using Leo Language

Code main.leo was auto generated from trained model(DecisionTreeClassifier) using our DT-translator: dt_to_leo_code.py

To compile this Aleo program, run:

cd leo-smart-contracts
leo build

Test input from dt.in:

leo run

The result will be 0u32 if KYC failed, or 1u32 which means KYC was passed successfully.

Build synthetic dataset, train Decision Tree model

Given the limits and sensitivity of the data, it was decided to make a synthetic dataset for demonstration purposes. This zkML-DT-research.ipynb contains dataset creation, model training and converting it to Leo Language.

Testnet interaction

Program was deployed to Testnet3: dt.aleo

It's possible to interact with deployed program using our local frontend and development server. Prepare Development Server:

cargo install aleo-development-server
aleo account encrypt -k <PRIVATE_KEY> -p "12345"
aleo-develop start --key-ciphertext <ENCRYPTED_PRIVATE_KEY>

Topup account with that private_key using Aleo faucet and start frontend:

cd zkkyc-frontend
yarn
yarn start