Tornado Cash is a popular protocol running on Ethereum that allows users to perform confidential transactions by breaking the on-chain connection between recipient and destination addresses. However, there may be situations where a user wants to show that their use of Tornado Cash is not illegal and that their transaction is not associated with any illegal activity. This is where Proof of Innocence comes into play. Proof of Innocence is a tool that allows users to prove that the money they withdraw from Tornado Cash is not from a particular deposit list. The user selects these addresses to prove that it is not one of the addresses in the specified deposit list and proves that the money withdrawn is not one of the addresses in the list. This process allows users to clear themselves and prove their innocence without revealing their identity. To see Proof of Innocence in action poi.chainway.xyz You can view the demo application at
Tornado Cash is a popular privacy protection protocol serving the Ethereum network that allows users to make anonymous transactions. In August, the Office of Foreign Assets Control (OFAC) imposed sanctions on wallet and smart contract addresses associated with Tornado Cash, citing concerns that the service was being used to launder billions of dollars. While this raised concerns about the security and trustworthiness of the system, it also highlighted the need for additional safeguards to prevent malicious individuals from using the system for illegal purposes.
This is where the Proof of Innocence protocol comes into play. This innovative tool is based on the existing technology of Tornado Cash and makes it possible for the user to prove that the deposit address is not from sanctioned or blacklisted addresses. In addition, it allows you to separate yourself from any address that deposits money in Tornado Cash for other reasons. By providing this proof, users can show that they are not hackers or misusing the system and can safely withdraw money from Tornado Cash. Thus, not only does it increase the security and trust of the system, Proof of Innocence also helps protect innocent users by proving that they are not involved in illegal activities without compromising their privacy.
How does the protocol work?
When withdrawing funds from Tornado Cash, users provide zero-knowledge proof to show that their commitments (i.e. the funds they deposit) are held securely in the Tornado Cash system and are not withdrawn. This proof is based on using the Merkle Tree data structure. Thanks to this data structure, users can verify the existence and status of their deposited funds without revealing any identifying information about themselves or their transaction history. This is why zero knowledge proof ensures the privacy and security of the user’s funds while also allowing them to access and withdraw their funds when needed.
The Proof of Innocence protocol adds an additional layer to this process by allowing users to prove that their deposited funds are not on a particular commitment list. Thus, it is ensured that the user is not a hacker or other malicious user who has been sanctioned or flagged for illegal activities.
To build this proof, the user selects the blacklisted commits and creates a Sparse Merkle Tree of that blacklist. In this way, the user has the opportunity to easily and efficiently prove that their commitment is not blacklisted. This proof can then be verified by anyone.
The “Proof of Innocence” protocol is open source and GithubAvailable in .
Last word
Please note that the use of Proof of Innocence is at your own risk. Chainway finds open source projects very important and values any feedback on Proof of Innocence. We recommend that you evaluate Proof of Innocence thoroughly before using it, and encourage users to use their private keys and Tornado Cash notes carefully.
*Prepared with the contributions of the Chainway team.