Tornado Cash Introduces Arbitrary Amounts & Shielded Transfers

Tornado Cash
5 min readDec 15, 2021

What if we told you that fixed amounts pools may no longer be your sole option on Tornado Cash? Tornado Cash Nova, the beta version of a new ETH pool allowing both arbitrary amounts & shielded transfers, was recently deployed and is ready for you to dive in.

© This article was written by ayefda & bt11baWUTornado team (@WUTornado)

We are glad to introduce Tornado Cash Nova, an upgraded Tornado Cash pool presenting unique features focused on improving user experience & expanding the protocol functionalities.

This pool will allow users to deposit & withdraw arbitrary amounts of ETH. Up to now, all Tornado Cash pools had one thing in common: users could only deposit and withdraw a fixed amount of a given token within each pool. With the arrival of the Nova pool, this statement will no longer be true.

This new version will also provide the possibility to make shielded transfers of deposited tokens while staying within the pool. So far, to transfer the custody of deposited funds, tokens needed to be withdrawn first. That is about to change! Users will be able to transfer a chosen amount of their deposited tokens (not necessarily all of them) to another address without needing to withdraw them from the pool.

Speed & cost being the cornerstone of user experience, Tornado Cash Nova uses the Gnosis Chain as a Layer2 (former xDAI). Thanks to this, users can benefit from cheaper fees, while still having fast transactions.
Indeed, this sidechain was specifically chosen as an L2 for being the only one that supports fast withdrawals to Mainnet (a few minutes vs. ~3hours on Polygon &~7 days on Optimism or Arbitrum).

⚙️ Let us take a peek at how Tornado Cash Nova functions.

First step: Diving into the pool 💰

A “Fund” section will allow you to deposit ETH within this new pool.

The great novelty is that deposited amounts will no longer be predefined. You can choose the customized amount that you want to deposit. Therefore, if you want to put 0.4 ETH in the pool, you can do it all at once rather than making four separate transactions in the 0.1 ETH pool.

⚠️ Since it is a beta version, deposits will be limited at 1 ETH/transaction. However, if the community wishes to increase this limit, the 1 ETH cap amount can always be changed through a governance proposal.

As soon as your wallet is connected to the DApp, the wallet address will be considered the default “Shielded address” of the funds. The shielded address is the one that will allow you to log into the app later, check your Tornado shielded balance or receive shielded transfers. Each new address will be registered to the pool alongside its first deposit.

However, the shielded address doesn’t necessarily need to be your connected wallet address. You can use your wallet address to deposit tokens to any shielded address of your choice (yours or anyone else’s) as long as this address is registered to Tornado Cash Nova.

Indeed, depositing funds isn’t the sole option to register a shielded address to the pool. Users can also add new shielded addresses as a separate action through the DApp.

Intermediary step: Sending your tokens away 💸

A “Transfer” section will allow shielded transactions within the pool.

As announced above, tokens can be transferred from one address to another within Tornado Cash Nova. The transferred amount can be completely customized. Those shielded transfers can be sent to any chosen address as long as this address is also registered in Tornado Cash Nova.

As a reminder, a shielded address is registered either completely ad hoc through the DApp or alongside an initial deposit from a wallet address.

⚠️ Two transfer methods are available to provide ETH in order to pay the gas fee for a transaction. You can either connect your wallet or use a Relayer.
Going through your wallet for this gas fee can compromise the anonymity of the transfer if used ETH is linkable to your identity. Therefore, it is recommended to use a Relayer to preserve privacy.

Last step: Leaving the pool anonymously 👋

The last but not least — a “Withdraw” section to pull your funds out of the pool.

To withdraw your funds from the Tornado pool, you can either choose from a set of four predetermined amounts (0.1, 0.3, 0.5 & 1 ETH) or a completely customized amount.

Choosing one of these four amounts is strongly recommended as it will allow your withdrawal to blend with the crowd and remain anonymous. With a custom amount, a link might be deduced between your initial fund transaction and your withdrawal, which might compromise your privacy.

Besides, a connection between deposits & withdrawals might also be made if the initially funded amount & the withdrawn amount are exactly the same or easily calculated through a sum. Indeed, a deposit of 0.42 ETH can be linked to a withdrawal of exactly 0.42 ETH or two times 0.21 ETH, which might compromise anonymity. However, with a withdrawal of 0.391 ETH, privacy is better preserved as there is no obvious link between the 0.42 & 0.391 amounts.

Therefore, the custom option should only be chosen with full knowledge of these facts and in complete confidence in your actions.

To obtain full privacy, the same good practices that were recommended for traditional Tornado Cash pools are still required. You can find a few tips to remain anonymous in the protocol’s documentation.

For cheaper transactions, Gnosis Chain (xDAI) is used as a Layer-2. To this end, a bridge is used between ETH from the Mainnet & WETH from Gnosis Chain.
Therefore, to prevent spam attacks that will overload the bridge, the withdrawal amount has to be larger than 0.05 ETH.

⚠️ As for shielded transfers, two withdrawal methods are available to pay for the gas fee. You can either connect your wallet or use a Relayer.
To preserve privacy, the use of a Relayer is also recommended for withdrawal. Paying the gas fee from your wallet might compromise your anonymity by linking your withdrawal to the used wallet address.

Few other facts

  • As mentioned in the withdrawal section, Tornado Cash Nova will be using Gnosis chain (former xDAI) as a Layer-2 so that all related transactions are cheaper. The use of this L2 is possible thanks to the ETH <> WETH bridge available on xDAI.
  • Once deployed, all those contracts can be upgraded by the Tornado Cash governance. Indeed, the xDAI bridge supports the transfer of messages between the L1 & the L2.
  • As privacy still rhymes with accountability, a compliance tool will soon be available for all transactions made within this pool.
  • The code was audited by Zeropool. The audit report is available on Github.

Future Plans

An improved V3 of Tornado Cash is being currently prepared. This incoming version mainly focuses on enhancing users’ experience. Some handy new features are planned to bring more flexibility & possibilities to the use of the protocol.

With its customized amounts & shielded transfers, Tornado Cash Nova is the first step towards this new & improved version of Tornado Cash. Future plans for the protocol include the possibility of making atomic swaps within a shielded pool, as well as a pool that will be able to support ERC20 tokens & NFT.

Try it now at https://nova.tornadocash.eth.link/

This article was written by ayefda & bt11baWUTornado team (@WUTornado)

--

--