Please describe your proposed solution.
We plan to enable a type of ZKPs known as ZK-SNARKs (“zero-knowlege succinct non-interactive argument of knowledge”) to Cardano users by leveraging existing open-source solutions, particularly CIRCOM and SNARKJS. We will develop off-chain tooling that will generate ZK-proofs whose verification will be executed on-chain by smart contracts running on a Hydra head. We will also develop said smart contracts, which will implement an "Optimal Ate" pairing adapted to the BN128 Elliptic Curve.
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
Zero-Knowledge-Proofs enable verification of information without revealing the information itself. By creating tools that enable native ZKPs on Cardano, we open the door for developers to create solutions where privacy is an important component. Furthermore, it is worth mentioning that ZKPs also have applications in scalability solutions and cross-chain protocols. Making sure that these tools exist in Cardano is of paramount importance given that ZKPs utilization in the Web3 space will increase significantly. This will allow novel applications, where a combination of transparency and privacy is required, to be brought to the Cardano ecosystem.
How do you intend to measure the success of your project?
A successful completion of the project will mean having a Github repo offering:
- Off-chain tooling that facilitates the deployment of ZK-SNARKs on a Hydra head, leveraging open source projects like CIRCOM and SNARKJS.
- On-chain tooling written in Plutus/Plutarch that implements the BN128 Elliptic Curve pairing in order to execute the verification of ZK-proofs produced by the off-chain code.
- Roll-up code to integrate the result of verification in the Cardano mainnet.
- Documentation and application examples to guide the Cardano community in the incorporation of Zero Knowledge Proofs in their projects.
- If the need is found justified, we will have written a CIP to improve the adaptability of low-level UPLC to the computation of the SNARK algorithms involved in ZK-proof verification.
Beyond the Github repo itself, an important measure of success is utilization of our tooling by the Cardano developers community.
Please describe your plans to share the outputs and results of your project?
We plan to make all the code fully open. This is just fair since we are leveraging existing open-source resources.
A very important “open” aspect of our project is the technical documentation that will be generated. ZKPs are very heavy on Mathematical sophistication, and having a clear documentation of how the Elliptic Curve implementation is executed will be very valuable to the community.