Please describe your proposed solution
Introduction
Proof of Innocence allows users to demonstrate anonymously that their funds did not originate from a blacklisted set of transactions. By leveraging zero-knowledge cryptography, users can construct statements about private information that can be verified by third parties. In this case, we want to prove that users' funds are not part of a specified set of transactions, without revealing the specific transaction in which the user was involved. In an increasingly scrutinized and compliant financial landscape, such a mechanism will facilitate safer participation for users who wish to uphold their privacy rights.
How it works
Proof of Innocence is designed to be an extension that can be integrated into any protocol operating over a private pool of transactions. Examples of such protocols include Tornado Cash, Railgun, and Encoins. When users interact with these protocols, they typically make commitments with their deposits, allowing them to withdraw their funds later. In this context, malicious activity can be tracked at the moment of deposit, or, in other words, when there is a commitment to the private pool of transactions.
By using zero-knowledge proofs, we can create a proof that demonstrates a withdrawal is not linked to commitments identified as malicious, without specifying the exact transaction involved. This generated proof serves as a privacy-preserving resource to show that funds are not related to the set of transactions deemed malicious. As a result, projects can differentiate between licit and illicit transactions while maintaining privacy.
It is important to note that Proof of Innocence relies on oracles to provide information about the nature of transactions. Different actors can take the roles of oracles, allowing projects to choose trusted data sources according to their criteria.
The scope of the proposal
Our proposal aims to develop and adapt key parts of the protocol, focusing on the on-chain components and the circuits used to create zero-knowledge proofs. This will serve as the first iteration and a proof of concept for a future product.
As a first step, we will research how to adapt Proof of Innocence (PoI) for Cardano. This includes a thorough review of existing implementations of the protocol. Since these protocols originate from the Ethereum ecosystem, we will redesign them to function within a EUTxO context. We will also evaluate different zk-SNARK schemes and their technical trade-offs for Cardano, while adapting the circuits used to generate the ZKPs to ensure compatibility with the BLS12-381 curve supported by Cardano. Lastly, we will try to determine to what extent PoI can be used as a protocol-agnostic solution and strategies to easily integrate PoI to privacy protocols.
In the second and third steps, we will implement the smart contracts and circuits. Our goal is to complete the on-chain components and proof generation processes during this phase. The components developed in this phase will include:
- An arithmetic circuit for Proof of Innocence (PoI) used to generate the proof.
- A smart contract that validates the PoI.
- A smart contract that manages the logic of the oracles.
After that, we will test them and aim to develop a working prototype that meets the basic requirements of PoI and can be further enhanced later.
Conclusion
Proof of Innocence (PoI) not only facilitates compliance with regulatory standards but also promotes a more privacy-preserving ecosystem by enabling legitimate users to demonstrate the innocence of their funds. By providing a mechanism to verify the source of funds without exposing personal information, PoI offers a practical alternative to traditional KYC policies. This approach is an interesting balance between accountability and the protection of privacy of users.