This project can produce decentralized digital identity which helps in overcoming the issue of centralized identity . I have created a smart contract which can create and verify identity claims, the identity is created using ZK-proofs. I have used circoms to generate the zk circuits and it uses groth-16 and zk-snarks.
Anyone can integrate this idea into their project based on their need and here's a step-by-step guide to complete this project, from setting up the environment to deploying and testing the solution.
Install Solana CLI, RUST and ANCHOR framework for setting up the solana environment
Run the following command to initialize the Anchor project: anchor init identity_claims
Complete writing the program along with your logic, then complete writing the circuit and compile it using the following command: circuits/identity.r1cs, circuits/identity_js/identity.wasm, circuits/pot15_final.ptau, circuits/identity_0000.zkey, circuits/identity_final.zkey, circuits/verification_key.json These files will be generated by the following commands:
circom identity.circom --r1cs --wasm --sym snarkjs groth16 setup identity.r1cs pot15_final.ptau identity_0000.zkey snarkjs zkey contribute identity_0000.zkey identity_final.zkey --name="First contribution" snarkjs zkey export verificationkey identity_final.zkey verification_key.json
Complete writing the server program and start the server. Complete writing the client program and deploy the program.