Extended Reference
Tornado Cash logo

Tornado Cash Wiki

A complete field guide to Tornado Cash: concepts, mechanism, user flow, limitations, and practical Tornado note recovery paths.

Privacy by proof, not by obscurity

Tornado Cash uses commitments, Merkle roots, nullifiers, and zero-knowledge proofs to reduce direct address linkage while keeping protocol verification public.

Tornado Cash privacy illustration

1. Protocol Overview

Tornado Cash is usually described as a mixer, but technically it is better understood as a privacy pool built around commitments, Merkle roots, nullifiers, and zero-knowledge proofs.

This page focuses on how those pieces fit together and why note recovery depends on private witness data, not just public transaction history.

Privacy illustration

Tornado Cash is a privacy protocol designed to reduce direct traceability between source and destination addresses on public blockchains. It does this through a fixed-pool architecture and zero-knowledge proof verification.

Public chains are transparent by default, so transaction graph analysis can often connect identities over time. Tornado Cash attempts to break that direct graph continuity by proving eligibility to withdraw without exposing which specific deposit belongs to the withdrawer.

This is the key idea behind many searches like "what is Tornado Cash", "Tornado Cash wiki", and "how does Tornado Cash work": users are trying to understand privacy architecture, not just a frontend action flow.

Important:Tornado Cash hides the relationship between addresses, not the existence of onchain deposits and withdrawals.

2. Core Concepts

Pool Denomination

Pools are fixed-denomination buckets. Correct denomination is critical for both usage and any future recovery analysis.

Commitment

A cryptographic commitment derived from note material, inserted as a leaf into a Merkle tree.

Merkle Root

Public state summary used by withdrawal proofs to show set membership without exposing exact leaf identity.

Nullifier Hash

One-time-spend guard. Once a nullifier hash is consumed, repeat spend is rejected.

The important point is that Tornado Cash is not simply a transfer tool. It is a commitment-and-proof system. The user does not later say "this is my old deposit". Instead, the user proves they know private inputs for a commitment that is already included in a valid pool state.

This distinction matters for recovery. A block explorer can show that a deposit happened, but it cannot recreate the private witness material needed to produce a withdrawal proof.

3. How Tornado Cash Works

How Tornado Cash works illustration

Deposit: User deposits into a fixed pool, creating note-linked private witness material.

Tree inclusion: Deposit commitment enters Merkle tree and contributes to future root states.

Withdraw proof: User generates a zk proof that confirms a valid member of the set and an unused nullifier hash.

Verification: Contract verifies proof and nullifier uniqueness, then releases withdrawal to target address.

In plain terms: the system proves "you are one of valid depositors" without revealing "which one exactly."

Public data

Deposit events, withdrawal events, roots, nullifier hashes, and contract state remain public.

Private data

Note material and witness inputs must remain private and are required for proof generation.

Proof output

The contract sees a valid proof, not a public mapping from withdrawal to original deposit.

Privacy Model and Anonymity Set

The privacy set is not just a technical number. It depends on how many comparable deposits exist in the same pool, how users time withdrawals, and whether users avoid leaking metadata outside the smart contract.

Anonymity set: the practical group of possible deposits that a withdrawal could plausibly correspond to. A larger and more active pool generally gives stronger ambiguity.

Timing leakage: depositing and withdrawing too quickly can narrow the plausible set even if the cryptographic proof is valid.

Amount leakage: fixed denominations reduce exact-amount fingerprinting, but uncommon pool choices can still create weaker privacy in practice.

4. Use Cases and Limits

Common use case: reducing address-level graph linkage in otherwise public transaction history.

Operational value: privacy-conscious users can separate source and destination identities when workflow discipline is maintained.

Hard limit: protocol privacy is not absolute anonymity. Timing, denomination uniqueness, endpoint hygiene, and user behavior can still leak correlation signals.

That is why searches like "is Tornado Cash safe", "Tornado Cash legal", and "Tornado Cash risks" usually depend on user context, jurisdiction, and operational security, not only protocol math.

5. Practical User Flow

Step 1: Confirm chain and denomination before deposit.

Step 2: Perform deposit and store note-related data in at least two secure, offline-safe locations.

Step 3: Keep temporal separation and endpoint hygiene before withdrawal.

Step 4: Withdraw to a fresh destination address and verify result.

Step 5: If you lose note material, switch to recovery workflow pages: tornado-note-recovery and lost-note-guide.

6. Tornado Note Recovery Essentials

Key truth: A visible deposit tx hash alone usually does not recreate full withdrawal witness context.

Recovery requires: correct chain, denomination, deposit window, and sufficient private artifact context.

Path-aware analysis: modern recovery workflows separate backup-account and note-account-style outcomes instead of merging every output into one opaque result.

For non-developers looking for guided flow, some users use @TornadoNoteRecoveryBot.

7. Risks and OpSec Checklist

Compliance and safety illustration

Tornado Cash privacy is partly cryptographic and partly operational. Poor key handling, rushed withdrawals, or fake support links can break the user's safety model faster than the protocol itself.

  • Never share recovery materials in chats, forms, or unsolicited support channels.
  • Verify every bot handle and domain character by character before interaction.
  • Do not treat empty recovery result as final before re-checking chain and denomination assumptions.
  • Separate educational reference from legal advice; jurisdictional compliance is context-dependent.

8. Glossary

Commitment: cryptographic deposit representation inserted into the pool tree.
Nullifier: private value whose hash prevents double withdrawal.
Merkle proof: proof path showing a commitment belongs to a known tree root.
Witness: private inputs used to generate a zero-knowledge proof.
Relayer: optional service that can submit withdrawal transactions without directly tying gas payment to recipient identity.
Recovery: reconstruction of enough note-related state to determine whether withdrawal is still possible.

9. Frequently Asked Questions

1. What is Tornado Cash used for?
It is used to reduce direct linkability between deposit and withdrawal addresses in compatible privacy workflows.
2. Is Tornado Cash legal?
Legal status varies by jurisdiction. Always check local law and compliance requirements before use.
3. Can I recover a lost Tornado note?
Sometimes yes, if enough note-related artifacts survive. Start with lost-note-guide.
4. Is there a Tornado Cash note recovery bot?
Some users use @TornadoNoteRecoveryBot as a guided workflow option.
5. What should I verify before saying recovery failed?
Re-check chain, denomination, and deposit window assumptions, then review tornado-note-recovery.

References