Most people asking about tornado cash are really asking whether a withdrawal can still be connected to its deposit. The answer is conditional: the protocol can hide a direct on-chain relationship, but it cannot erase timing, wallet, browser, exchange, or network evidence. The distinction matters even more now that Tornado Cash has both Classic fixed-denomination pools and Nova shielded transfers. Neither makes every surrounding transaction private.
When the question is whether the withdrawal can be traced
Tornado Cash is a privacy protocol that separates a deposit from a later withdrawal by using shared pools and cryptographic proofs. The deposit creates a commitment, while the withdrawal proves that a valid deposit exists without publicly identifying which one. A zero-knowledge proof is a method of proving that a statement is true without revealing the statement itself.
The result is not an invisible transaction. The blockchain still records the deposit, the pool, the withdrawal, the amount, and the recipient address. What becomes difficult is proving, from the chain alone, which deposit belongs to which withdrawal.
The protocol’s contracts are smart contracts, meaning programs stored on a blockchain that execute according to their coded rules. That explains both sides of the system: the contract can verify a withdrawal without an operator matching users manually, but every contract interaction remains public and permanent.
For a practical description of the deposit, note, Merkle tree, nullifier, and withdrawal flow, the tornado cash overview is the useful reference. It explains what the protocol proves and what it leaves visible. That distinction is the part many quick summaries miss.
When the user is choosing between the available models
| Option | Amount model | What it separates | Main traceability weakness |
|---|---|---|---|
| Classic | Fixed denominations | Deposit address from withdrawal address | Timing, denomination, repeated addresses, and thin pools can create correlations |
| Nova | Arbitrary amounts | Shielded balances and transfers within its account model | Wallet, browser, RPC, recipient, and network metadata still exist |
| Ordinary wallet transfer | Any supported amount | Nothing by default | The sender and recipient path is directly visible on-chain |
Classic fits someone comparing equal-value deposits and withdrawals. Nova fits someone who needs a shielded balance model rather than a one-deposit, one-withdrawal workflow. An ordinary transfer fits someone who values simplicity and transparent provenance over transaction privacy.
When someone says “untraceable”
That word is too strong. A chain analyst may not be able to prove the deposit-to-withdrawal match, yet outside evidence can narrow the possibilities. A withdrawal made soon after a deposit, sent to an address later linked to an exchange account, is easier to associate than one surrounded by unrelated activity. Reusing addresses, exposing the same browser or RPC pattern, or publicly identifying the wallet can also defeat the privacy goal.
The private note is another failure point. It is needed to create the withdrawal proof and should be treated like sensitive key material. Losing it can prevent recovery; exposing it can reveal the deposit relationship and allow someone else to attempt the withdrawal.
When the real concern is what changed
The core idea has not changed: a public blockchain records events, while the protocol tries to prevent a simple deposit-to-recipient mapping. What changed is the available interface and the distinction between Classic and Nova. The privacy result still depends on the pool, the user’s transaction pattern, the surrounding metadata, and the assumptions of the specific deployment.
The accurate conclusion is therefore narrow: Tornado Cash can make a direct on-chain connection harder to establish, but it does not make a person, wallet, transaction history, or legal exposure disappear.