The starknet-zkproof-verifier project demonstrates how to verify zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge) on StarkNet, a layer-2 scalability solution for Ethereum. The project involves two main parts:
- General ZK Verification Example: This section shows the process of generating, verifying, and using zk-SNARKs proofs on StarkNet using the Circom framework for generating zk-SNARK circuits and the Garaga tool for StarkNet integration.
Starknado-Cash: This section shows an attempt to implement Tornado Cash functionality (a privacy-preserving protocol) on StarkNet, enabling private transactions. The Starknado-Cash system leverages zk-SNARKs to ensure anonymity.
I made the project using:
- StarkNet: A layer-2 scalability solution on Ethereum using validity proofs (zk-rollups) for scalability, where the zk-SNARK verifier contracts are deployed and proofs are validated.
- Garaga: A tool designed to generate and deploy zk-SNARK verifiers on StarkNet, and facilitate the process of verifying proofs on-chain.
- snarkjs: A toolkit for generating zk-SNARK proofs, handling trusted setups, and interacting with Circom circuits.
- Circom: A programming language and toolchain for designing zero-knowledge circuits.