Tornado Cash (TORN) was created following an issue that arose in the transparency of crypto transaction history that allows anyone to track an individual's spending habits through their public address even though their personal information is still secured.
Tornado Cash is a decentralized privacy solution built on the Ethereum network. Although Tornado Cash was developed based on open source research by the Zcash (privacy coin) team, the protocol allows users to send ETH and ERC-20 deposits through a smart contract service.
After sending an ETH or ERC-20 deposit to Tornado Cash, users can withdraw their cryptocurrency through a new address. The founders do not have any control over Tornado Cash, and this is considered a fully decentralized protocol.
Transactions in the use of Tornado Cash are mixed using zero-knowledge proofs that hide transaction information. Tornado Cash is also a decentralized service run through smart contracts.
Therefore, no centralized third party can take custody of the funds throughout the mixing process. The use of Tornado Cash is to deposit funds into Tornado Cash, after which it will generate a random key and deposit ERC-20 tokens.
In order to make withdrawals in the future, the user must submit proof of having a valid key. Start by making a deposit and choosing an ERC-20 token and deposit amount. Once done click on "Deposit" and confirm.
In the meantime, Tornado Cash acts as a proxy that ensures anonymous transactions with zk-SNARK proof (abbreviation for zero-knowledge succinct non-interactive argument of knowledge).
In addition, Tornado Cash has increased the privacy of transactions by breaking the chain of communication between source and destination addresses. Tornado Cash also uses smart contracts that accept ETH deposits, which can then be withdrawn with multiple different addresses.
With the zero-knowledge protocol, there are two parties involved, namely the prover and the verifier. When users withdraw ETH to the Tornado smart contract, they will generate a secret and send the hash along with the deposit amount into the smart contract.
Accordingly, the smart contract will add funds to its deposit list, and when the user wants to make a withdrawal, the user needs to provide the corresponding secret that matches the unspent deposit from the Tornado Cash deposit list.