summary: Tornado Cash is a non-custodial Ethereum and ERC-20 privacy solution based on zkSNARKs.
content: Tornado Cash is a non-custodial Ethereum and ERC-20 privacy solution based on zkSNARKs. It improves transaction privacy by breaking the on-chain link between recipient and destination addresses. It uses a smart contract that accepts ETH deposits that can be withdrawn by a different address. Whenever Ethereum (ETH) is withdrawn by the new address, there is no way to link the withdrawal to the deposit, ensuring complete privacy. On December 18, 2020, Tornado Cash launched its governance token $TORN. "The fundamental principle behind Tornado.Cash is that privacy is a human right." Protocol Introduction The goal of Tornado Cash is to bring Zcash functionality on top of Ethereum. The initial developers of the project wanted to build a solution that allows anyone to put Ether in and then make transfers, splits, joins, and atomic swaps inside. Tornado Cash deposits user funds into a smart contract in a “black box environment” that’s not visible on-chain. The protocol aims to be completely trustless and permissionless. No centralized third party controls, take custody, or controls users' funds at any point. Private Transactions Tornado Cash uses zero knowledge proofs (zk-SNARKs) to achieve privacy. When a user decides to make a withdrawal, the user must provide proof that he or she possesses a secret corresponding to one of the smart contract’s list of deposits. zk-SNARK technology allows this proof to be verified without the user needing to reveal which exact deposit corresponds to their secret. The smart contract then checks the proof, and transfers deposited funds to the address specified by the withdrawal transaction. Any external observer is unable to determine which deposit this withdrawal is linked to. TORN Governance Token TORN is Tornado Cash’s native governance token. It is a fixed-supply ERC-20 token that is used for voting on protocol upgrades and fixes. The TORN governance token has a fixed total supply of 10,000,000. 5% of the supply is allocated to previous protocol users via an airdrop, 10% to liquidity mining rewards (distributed linearly over 1 year), 30% to founding developers and early supporters (unlocked over 3 years with a 1 year cliff), and 55% to the protocol treasury (unlocked linearly over 5 years). To create a proposal, a user needs to have at least 1,000 TORN. All proposals must be smart contracts with verified code that are executed from the governance contract. This allows for an way to audit and test any governance changes. The voting period for a proposal is three days. A proposal will succeed if it receives a simple majority of votes and there are at least 25,000 TORN total votes (if turnout is too low, the proposal automatically fails). After a proposal succeeds, it is subject for a timelock of two days. After the timelock, any user is able to execute the proposal which will initiate the changes. If proposal is not executed for three days after that, it is considered expired and can no longer be Executed.