How to Use Tornado.cash, Ethereum’s Privacy Solution
Learn how to preserve privacy when making transactions on the Ethereum network with Tornado.cash.
- Tornado.cash is Ethereum's leading privacy solution.
- The tool lets users make a deposit to a smart contract and withdraw the funds from a separate address.
- It works by using a hash and pooling groups of similar transactions in the same contract.
Share this article
Ethereum currently processes around 1 million transactions daily. Due to the blockchain’s open nature, however, every address associated with a transaction on the network gets recorded on a public ledger. That can present issues for users who want to prevent information such as their holdings or trading activity from appearing in the public domain. Tornado.cash aims to solve this problem.
It’s a tool that lets users preserve their privacy when making transactions on Ethereum by enabling deposits to a smart contract and withdrawals from a separate address.
As a deposit can be withdrawn from a brand new address, it is much harder to trace the sender.
Tornado.cash works by mixing senders’ and recipients’ addresses with multiple other transactions within one contract. This guide explains how it works with a step-by-step process for interacting with the software.
How to Use Tornado.cash
1. Connect Your Wallet
To send a transaction, you’ll need to start by heading to the app and connecting a wallet. Tornado.cash’s app interface currently supports Metamask, Portis, and Fortmatic.
2. Choose Your Token Deposit
Tornado.cash mixes transactions with others in a deposit contract to make it harder to trace the sender and recipient for each deposit. That’s why you can only send certain denominations of each currency – transactions would be too easy to trace if everyone was sending a slightly different amount.
To send ETH, for example, users can choose between 0.1, 1, 10, or 100.
3. Backup Your Note
When you make a deposit, you also generate a random key. This must be saved as you will not be able to withdraw funds from the smart contract without it.
Your browser will automatically prompt you to save a text copy of the key. It will also appear on the screen. Make sure that you’ve saved a copy before proceeding.
4. Send Deposit
Once you’ve noted your random key, highlight the box next to “I backed up the note” and hit “Send Deposit.”
This will initiate the transaction, enabling the deposited token and a hash of the note to be sent to the Tornado.cash smart contract. The transaction and gas fee will also need to be confirmed in your wallet, i.e., Metamask.
Tornado.cash recommends that users wait “some amount of time” before making a withdrawal. This is because it gets much harder to follow transactions to the deposit contract once many other similar transactions have been made.
If you make a deposit and then choose to withdraw immediately, the timestamps between the two transactions could give your footprints away. The below photo shows a series of transactions to the 0.1 ETH deposit contract.
Reconnect your wallet if you need to and select the “Withdraw” tab.
You can then enter the note you saved when you made the deposit, as well as your withdrawal address.
As with the contract’s deposit, the transaction and gas fee will also need to be confirmed in MetaMask or another wallet.
You may want to use a brand new address with no previous transactions. That way, it gets difficult for anyone to work out the address you sent it from when the deposit is mixed with several other similar transactions.
While it’s still difficult to achieve full anonymity on the blockchain, Tornado.cash might be the current best option for those who want to preserve privacy when processing Ethereum transactions. The team behind the project recently proposed the launch of a native token and governance measures.
In a blog post detailing the plans, they wrote:
“The fundamental principle behind Tornado.Cash is that privacy is a human right”
Disclosure: At the time of writing, the author of this feature owned ETH, among a number of other cryptocurrencies.