TORNADO CASH

Tornado Cash Explained From Cryptography to Court Rulings

  • Custody: none
  • Proof system: Groth16
  • Tree depth: 20
  • Contracts: immutable since 2020
  • SDN list: removed 2025-03-21

Overview

Tornado Cash is a set of open-source, non-custodial smart contracts that let a user deposit a fixed amount of cryptocurrency into a shared pool and later withdraw the same amount to a different address, with no public link between the deposit and the withdrawal. It runs on Ethereum and on several other EVM-compatible networks. What separates Tornado Cash from an ordinary mixing service is that no operator ever holds the funds and no operator ever learns which deposit belongs to which withdrawal.

The mechanism is a zero-knowledge proof. Each deposit into a Tornado Cash pool inserts a cryptographic commitment into a Merkle tree stored inside the contract. Each withdrawal submits a proof that the sender knows the secret behind one of the commitments in that tree, without revealing which one. Because the contract verifies mathematics and nothing else, a withdrawal from a Tornado Cash pool looks, from the chain's point of view, exactly like a withdrawal by any other depositor in the same pool.

Tornado Cash was deployed in 2019 and is publicly associated with the developers Roman Storm, Roman Semenov, and Alexey Pertsev. In May 2020 the administrative keys to the Ether pools were destroyed. From that point on the deployed Tornado Cash contracts could not be paused, upgraded, or emptied by anyone, including the people who wrote them.

That one design decision is why Tornado Cash became a legal landmark rather than just another privacy tool. In August 2022 the U.S. Treasury's Office of Foreign Assets Control added Tornado Cash contract addresses to its sanctions list. In November 2024 a federal appeals court held that immutable smart contracts are not property that can be blocked under the statute the government relied on. In March 2025 Treasury removed the addresses. Criminal prosecutions of individual developers ran on a separate track and produced separate outcomes.

This page covers both halves. The first sections describe how Tornado Cash actually works, from commitments and nullifiers through relayers and anonymity sets. The later sections set out the regulatory and criminal record with dates attached, because most public confusion about Tornado Cash comes from treating the protocol and the prosecutions as if they were the same thing.

Abstract illustration representing the Tornado Cash privacy protocol on Ethereum
Fig. 01 / Tornado Cash pool as a shared anonymity set
KEY TAKEAWAY // Tornado Cash breaks the on-chain link between two addresses. It does not encrypt balances, hide amounts, or conceal the fact that a pool was used. Anyone watching the chain can see that an address deposited into Tornado Cash and that some address later withdrew. What they cannot see is which is which.

Protocol Architecture

Each Tornado Cash pool is a separate smart contract that accepts exactly one asset in exactly one denomination. There is no shared vault, no accounting ledger of users, and no admin function. A pool holds a balance, a Merkle tree of commitments, and a list of spent nullifier hashes. That is essentially the whole state.

Deposits and commitments

Before a deposit, the client generates two random values on the user's own machine: a nullifier and a secret. It hashes them together with a Pedersen hash to produce a commitment. The commitment is the only user-specific data that reaches the Tornado Cash contract, and it reveals nothing about either input.

The contract appends that commitment as the next leaf of an incremental Merkle tree twenty levels deep, which gives each Tornado Cash pool room for 1,048,576 deposits. The tree is built with the MiMC sponge hash, chosen because it is cheap to prove inside a zero-knowledge circuit. The contract also keeps a rolling history of recent roots, so a proof built against a slightly stale root still verifies.

The nullifier and the secret never touch the chain. They live in a local string called the note, and that note is the only thing that can unlock the deposit. Because Tornado Cash has no operator, no account, and no recovery path, losing the note means losing the funds permanently.

Fixed denominations are a privacy requirement rather than a limitation. If Tornado Cash accepted arbitrary amounts, an observer could match a deposit of 3.7182 ETH to a withdrawal of roughly the same size and defeat the whole construction. Uniform amounts force every note in a pool to look identical.

DEPOSIT_CALL
function deposit(bytes32 _commitment) external payable

commitment = PedersenHash(nullifier ‖ secret)
note = "tornado-<asset>-<amount>-<chainId>-0x<nullifier><secret>"

Withdrawals and nullifiers

To withdraw, the client rebuilds the Merkle path to its own leaf and produces a proof. Along with the proof it publishes a nullifier hash derived from the nullifier alone. Tornado Cash records every spent nullifier hash and rejects any repeat, which prevents a note from being withdrawn twice while still telling observers nothing about which leaf was consumed.

The withdrawal call carries a small set of public parameters. The recipient, relayer, fee, and refund fields are bound into the proof itself, so a transaction cannot be rewritten in flight to send the money somewhere else. This is what allows a stranger to broadcast a Tornado Cash withdrawal on someone else's behalf without being able to steal it.

Three checks decide the outcome. The submitted root must appear in the contract's root history, the nullifier hash must be unused, and the proof must verify against the pool's verifying key. If all three pass, Tornado Cash pays the fixed denomination to the recipient, minus any fee, and marks the nullifier as spent.

WITHDRAW_CALL
function withdraw(
  bytes _proof,
  bytes32 _root,
  bytes32 _nullifierHash,
  address payable _recipient,
  address payable _relayer,
  uint256 _fee,
  uint256 _refund
) external payable
INVARIANT // The pool can only ever pay out one denomination per unspent nullifier. No parameter, vote, or key changes that.

The Zero-Knowledge Layer

The proving system behind Tornado Cash is Groth16, a succinct non-interactive argument that produces very small proofs and verifies them cheaply on-chain. The circuits are written in Circom, and the proof is generated in the user's browser or local client, never on a server. If you want a general primer on the underlying idea, the Wikipedia entry on zero-knowledge proofs is a reasonable starting point.

The withdrawal circuit used by Tornado Cash asserts a short list of statements at once: that the prover knows a nullifier and a secret, that their Pedersen hash is a leaf in a tree whose root matches the public input, and that the published nullifier hash is derived from that same nullifier. Everything else in the transaction is dragged into the proof as a constraint purely so that it cannot be tampered with.

Groth16 requires a structured reference string produced in advance, which is the well-known trusted setup problem. Tornado Cash addressed it with a multi-party ceremony in 2020 in which more than a thousand contributors each added randomness and then discarded it. The construction is secure as long as at least one participant honestly destroyed their share.

It is worth being precise about what a compromised setup would mean. An attacker holding the discarded randomness could forge withdrawal proofs and drain a pool. They could not retroactively deanonymize past Tornado Cash users, because privacy comes from the fact that the contract never receives the linking data in the first place, not from the soundness of the proof.

The hash choices follow from the same economics. Standard hashes such as SHA-256 are expensive to express as arithmetic constraints, so Tornado Cash uses Pedersen hashing for commitments and MiMC for the Merkle tree. Both are algebraically friendly to the proving field, which keeps proof generation fast enough to run on a laptop.

Circuit signals

PRIVATE_INPUTS
  nullifier
  secret
  pathElements[20]
  pathIndices[20]

PUBLIC_INPUTS
  root
  nullifierHash
  recipient
  relayer
  fee
  refund
NOTE // Proof generation is local. A Tornado Cash withdrawal never sends the nullifier or the secret anywhere, including to a relayer.

Relayers and the Gas Problem

There is an obvious hole in the design as described so far. A withdrawal is an ordinary Ethereum transaction and someone has to pay gas for it. If the fresh recipient address pays its own gas, it needs Ether from somewhere, and funding it from the depositor's old address reconnects the two ends immediately.

Relayers solve this. A relayer is a third party that submits the Tornado Cash withdrawal transaction, pays the gas, and takes a fee out of the withdrawn amount. Because the recipient, relayer, and fee are all committed inside the proof, the relayer cannot change the destination or inflate its cut. It is a paid courier with no discretion.

Governance later formalized this with a relayer registry, where operators stake TORN to be listed and a portion of their fees flows back to the protocol. The registry made relayer selection more legible to users, but it never made relaying exclusive. Anyone can still construct and broadcast a Tornado Cash withdrawal themselves.

Relayers do introduce a soft trust boundary. They see the withdrawal request before it is public, along with the recipient address and whatever network metadata the connection leaks. They cannot steal funds and they cannot see the note, but a careless connection to a logging relayer can undo the privacy that the rest of Tornado Cash provides.

The refund field exists for token pools. When someone withdraws a stablecoin to a brand-new address, that address has no Ether at all and cannot transact afterward. The refund lets the relayer forward a small amount of the native asset alongside the tokens so the recipient is not stranded.

Withdrawal paths

Path Gas paid by Main risk
Self-submitted Recipient address Funding source links the addresses
Registered relayer Relayer Relayer logs request metadata
Own relayer Operator Operator identity is on-chain

Pools, Denominations, and Deployments

The classic Tornado Cash deployment on Ethereum consists of separate contracts per asset and per size. Liquidity was never evenly distributed across them: the Ether pools attracted by far the most deposits, while several token pools stayed thin enough that their anonymity sets offered limited protection.

Ethereum pool denominations

Asset Denominations
ETH 0.1 / 1 / 10 / 100
DAI 100 / 1,000 / 10,000 / 100,000
cDAI 5,000 / 50,000 / 500,000 / 5,000,000
USDC 100 / 1,000
USDT 100 / 1,000
WBTC 0.1 / 1 / 10

Beyond Ethereum mainnet, Tornado Cash contracts were deployed on other EVM networks including BNB Chain, Polygon, Optimism, Arbitrum, Avalanche, and Gnosis Chain. Each deployment maintains its own pools and its own anonymity sets. A deposit on one chain has no cryptographic relationship to a withdrawal on another, which is why cross-chain comparisons of pool size are meaningless.

A second-generation design, Tornado Cash Nova, launched on Gnosis Chain in late 2021. Nova moved away from fixed denominations toward a shielded account model where balances can be split, merged, and transferred internally in arbitrary amounts, closer to a private UTXO ledger than to a mixer. It ran alongside the classic pools rather than replacing them.

Because every one of these deployments is a plain smart contract, the practical availability of Tornado Cash has always depended more on tooling than on the contracts themselves. The chain code kept running through the sanctions period without interruption. What changed was which interfaces, node providers, and wallets were willing to touch it.

Anonymity Sets and Their Limits

The privacy of any Tornado Cash withdrawal is measured by its anonymity set: the number of deposits sitting in the same pool that the withdrawal could plausibly correspond to. If a pool holds four hundred unspent deposits, an observer's best guess about the origin of a withdrawal is one in four hundred, and no better.

This makes pool population the dominant variable. A busy Tornado Cash pool with thousands of deposits gives strong protection. A quiet pool with nine deposits gives almost none, and in the degenerate case where a pool holds exactly one deposit, the link is trivially obvious to anyone who bothers to look.

Timing is the second variable and the one users most often get wrong. Depositing and withdrawing within the same hour narrows the candidate set dramatically, because analysts can discard every deposit that was already spent or made long before. Waiting is free, and it is the single most effective thing a Tornado Cash user can do.

Amount patterns leak too. Depositing seven notes of 10 ETH and withdrawing seven notes of 10 ETH to seven fresh addresses that then consolidate into one wallet reconstructs the entire flow without breaking any cryptography. Chain analysis firms treat these round-trip signatures as routine work, and they are the main reason Tornado Cash usage is often traceable in practice despite being untraceable in theory.

The failure modes that recur in analyses of Tornado Cash usage are almost all behavioral rather than cryptographic:

  • > withdrawing immediately after depositing
  • > reusing the same recipient address across many notes
  • > withdrawing to an address funded by the depositing address
  • > depositing and withdrawing an unusual, distinctive quantity of notes
  • > using a small or newly created pool
  • > paying gas from a known exchange account at either end

The network layer sits outside the protocol entirely. IP addresses seen by an RPC endpoint or relayer, browser fingerprints, and wallet telemetry can all correlate a deposit with a withdrawal even when the on-chain data is perfectly clean. Tornado Cash makes no claim to defend against any of this.

It is worth restating the boundary plainly. Tornado Cash hides one specific relationship, the one between a deposit and a withdrawal of equal size in the same pool. Everything else about a transaction, including its timing, its size, its gas payer, and its downstream destination, remains fully public.

Anonymity set intuition

Best-case probability that an observer correctly identifies the source deposit, assuming no timing or behavioral leaks.

SET = 1010%
SET = 1001%
SET = 1,0000.1%
SET = 10,0000.01%

Arithmetic illustration, not measured pool data

WARNING // The theoretical anonymity set is an upper bound on privacy. Real-world linkability is determined by user behavior, and it is usually much worse than the pool size suggests.

Immutability, TORN, and Governance

In May 2020 the team behind Tornado Cash performed what they described as a key-burning ceremony, removing the ability to modify or upgrade the Ether pool contracts. This was presented as a credibility step: users were being asked to lock funds in a contract, and the strongest guarantee available was to prove that nobody retained a lever to pull.

A governance layer arrived later in the form of TORN, a fixed-supply token distributed in part to early users and used to vote on proposals. The DAO built around it could fund development, manage the relayer registry, and adjust protocol-level parameters that sat outside the frozen core contracts.

The scope of that governance is narrower than the word suggests. TORN holders never had the power to freeze a Tornado Cash pool, censor a withdrawal, seize deposits, or reverse a transaction. The pools were already immutable when the DAO came into existence, which is exactly the fact the later litigation turned on.

In May 2023 an attacker demonstrated the limits of the governance layer by smuggling malicious logic into a proposal and seizing control of the governance contract, along with staked TORN and voting power. Control was subsequently restored through a further proposal. The core Tornado Cash pools were untouched throughout, since there was no mechanism by which governance could have reached them.

The user-facing interface has always been a separate concern from the contracts. It was published as a static site distributed over IPFS and could be downloaded and run locally. After the 2022 sanctions, code repositories and hosted front ends were taken down and several infrastructure providers blocked access, yet the deployed Tornado Cash contracts continued to accept deposits and honor withdrawals exactly as before.

Control surface

Capability Who holds it
Pause a pool Nobody
Upgrade pool logic Nobody
Block an address Nobody
Withdraw others' funds Nobody
Relayer registry rules TORN governance
Treasury spending TORN governance
LEGAL RELEVANCE // The fact that no party can control the core Tornado Cash pools became the central argument in the challenge to the 2022 sanctions.

Selective Disclosure and the Compliance Tool

Privacy that cannot be waived is a problem for anyone with legitimate funds. A user who withdraws from Tornado Cash and then tries to deposit at an exchange may be asked where the money came from, and pointing at an anonymous pool is not an answer that compliance departments accept.

To address this, Tornado Cash shipped a compliance tool that takes a user's note and generates a report tying a specific deposit transaction to a specific withdrawal transaction. Because only the note holder can produce it, the report acts as a voluntary, cryptographically grounded proof of origin that a user can hand to a bank, an exchange, or an auditor.

The limits are real. Disclosure is optional and one-directional, so nothing compels a bad actor to produce a report, and a recipient still has to decide whether to trust the counterparty presenting it. The compliance tool made Tornado Cash usable for people with ordinary privacy needs, but it was never a substitute for the kind of continuous monitoring that regulated intermediaries are expected to perform.

Disclosure report contents

INPUT  : note string (held by user)
OUTPUT :
  deposit_tx_hash
  deposit_block / timestamp
  pool_asset + denomination
  commitment
  nullifier_hash
  withdrawal_tx_hash
  recipient_address

Comparison With Other Privacy Approaches

Tornado Cash is often lumped together with custodial tumblers and with privacy coins, but the three work in structurally different ways and fail in different places. The table below sets out the properties that matter most when comparing them.

Property Tornado Cash Custodial mixer CoinJoin Privacy chain
Custody of funds None, contract-held Operator holds funds None, users co-sign None, own keys
Privacy mechanism zk-SNARK + Merkle tree Operator shuffling Joint transaction, equal outputs Protocol-level shielding
Trust assumption Trusted setup only Full trust in operator Coordinator sees inputs Protocol cryptography
Amounts Fixed denominations Flexible Equal-value outputs Arbitrary, often hidden
Exit scam risk None High None None
Selective disclosure Note-based report Operator records Limited Viewing keys where supported
Scope EVM chains, per-pool Varies Bitcoin and similar Its own chain only

The clearest distinction is the trust axis. A custodial mixer can steal, log, or be compelled to hand over records, while Tornado Cash can do none of those things because it never possesses the information in the first place. The trade-off is rigidity: a privacy chain shields every transaction by default, whereas Tornado Cash only shields the one relationship it was built to shield and demands careful user behavior around everything else.

Figures Cited by Regulators

There is no audited public statistic for how much value has passed through Tornado Cash or what share of it was illicit. The most widely repeated numbers come from the U.S. Treasury's designation announcement of August 8, 2022, and they should be read as government allegations rather than as neutral measurements.

Fig. 02 / Specific incidents cited in the August 2022 designation, in millions of USD
Lazarus Group / Ronin$455M
Harmony Horizon Bridge$96M
Nomad Bridge$7.8M

Source: U.S. Department of the Treasury designation announcement, 2022-08-08

Aggregate figure cited

> $7,000,000,000

Treasury stated that more than seven billion dollars in virtual currency had been laundered through Tornado Cash since its creation in 2019. The figure describes total flows attributed to the protocol in that announcement, not a determination that every dollar of it was criminal.

Independent analysts have consistently pushed back on how such totals are read. Blockchain analytics firms and researchers have published lower estimates for the share of Tornado Cash volume traceable to hacks and thefts, and critics noted that a gross throughput number counts ordinary privacy-seeking users, arbitrage flows, and repeated round trips alongside stolen funds.

Measurement is genuinely hard here, and that difficulty is inherent to the design. Because Tornado Cash severs the deposit-to-withdrawal link, any attribution of outflows depends on heuristics such as timing correlation and address clustering. Different firms use different heuristics, which is why published estimates about Tornado Cash diverge and why precise-sounding percentages deserve scrutiny.

Sanctions, Litigation, and Delisting

On August 8, 2022, the Office of Foreign Assets Control designated Tornado Cash under its cyber-related sanctions authority and added a long list of associated Ethereum addresses, including the pool contracts themselves, to the Specially Designated Nationals list. It was the first time a set of autonomous smart contracts, rather than a person or a company, had been placed on that list.

On November 8, 2022, OFAC revisited the action, delisting and immediately re-designating Tornado Cash on a broader basis that expressly cited support to North Korea. The practical effect on users was unchanged, but the second designation rested on an additional national-security authority.

The knock-on effects arrived within days. A stablecoin issuer froze tokens held at the sanctioned addresses, code repositories and developer accounts were taken offline, major node providers began blocking related requests, and some front ends started screening any wallet that had ever touched Tornado Cash. Someone then sent small unsolicited amounts from the pools to well-known public addresses, an act of dusting that briefly locked those users out of services that screened automatically.

Uncertainty about ordinary users was severe enough that OFAC issued guidance in September 2022 clarifying that U.S. persons whose funds were already sitting in Tornado Cash could apply for a specific license to withdraw them. Guidance also confirmed that merely interacting with the open-source code, as distinct from transacting with sanctioned addresses, was not itself prohibited.

Two legal challenges followed in September 2022, brought by users and advocacy organizations. The central argument was statutory rather than constitutional: the sanctions law lets the government block property in which a foreign national has an interest, and an immutable contract that nobody owns or controls does not fit that definition. A district court initially sided with Treasury.

In November 2024 the U.S. Court of Appeals for the Fifth Circuit reversed. It held that the immutable Tornado Cash smart contracts are not property under the relevant statute, because they cannot be owned, controlled, or contracted over, and concluded that OFAC had exceeded its authority in blocking them. The court was explicit that any expansion of the law to cover such code was a matter for Congress.

On March 21, 2025, Treasury removed Tornado Cash from the SDN list, delisting the associated addresses. The department framed the move in light of the litigation and the novel legal questions the case raised, while reiterating its concern about North Korean laundering activity.

Delisting is not a blanket clearance, and this is the point most often misread. Removing the addresses ended one specific prohibition. It did not legalize laundering proceeds through Tornado Cash, did not bind other jurisdictions, and did not stop exchanges and other intermediaries from applying their own risk policies to funds that have passed through the pools.

DISTINCTION // Sanctions on the Tornado Cash contracts and criminal charges against named developers are separate proceedings with separate standards. The end of one does not resolve the other.

Designation status

Date Action
2022-08-08 Contracts added to SDN list
2022-11-08 Re-designated citing DPRK
2024-11 Appeals court rules against OFAC
2025-03-21 Addresses removed from SDN list

Reference coverage of the designation and its aftermath is collected in the Wikipedia article on Tornado Cash, which cites the primary Treasury and court documents.

Criminal Cases Against Developers

Dutch authorities arrested Alexey Pertsev, a developer associated with Tornado Cash, in August 2022, two days after the OFAC designation. In May 2024 a court in the Netherlands convicted him of money laundering and sentenced him to 64 months in prison, reasoning that the tool as built and operated served to conceal criminal proceeds.

Pertsev was released from custody in February 2025 under electronic monitoring while preparing his appeal. His case drew heavy attention from software developers because it was the first time a European court had convicted someone for writing and deploying privacy code rather than for handling funds directly.

In the United States, prosecutors unsealed an indictment in August 2023 charging Roman Storm and Roman Semenov, both connected to Tornado Cash, with conspiracy to commit money laundering, conspiracy to violate sanctions, and conspiracy to operate an unlicensed money transmitting business. Storm was arrested in Washington state; Semenov was not in custody and was separately added to the SDN list.

Storm's trial took place in a federal court in Manhattan in mid-2025. In August 2025 the jury convicted him on the single count of conspiring to operate an unlicensed money transmitting business and deadlocked on the money laundering and sanctions counts, and the judge declared a mistrial on those charges. The split verdict left the hardest questions about Tornado Cash unresolved.

These proceedings are why the delisting of Tornado Cash did not end the story for developers. The sanctions litigation asked whether unowned code can be blocked property; the prosecutions ask what obligations attach to the people who write, publish, promote, and profit from such code. Those are different questions, and the answers to date point in different directions.

Case matrix

Person Jurisdiction Status
Alexey Pertsev Netherlands Convicted 2024, released Feb 2025 pending appeal
Roman Storm United States Convicted on one count 2025, mistrial on two
Roman Semenov United States Charged, not in custody

Timeline of Key Events

The chronology below tracks the protocol and the legal record side by side. Reading them in order makes it clear that the technical design of Tornado Cash was essentially finished years before the legal questions about it began.

  1. 2019The first Tornado Cash Ether pools are deployed on Ethereum.
  2. 2020-05Admin keys are destroyed and the Ether pools become immutable.
  3. 2020A multi-party trusted setup ceremony with more than a thousand contributors produces the proving parameters.
  4. 2021The TORN token and DAO governance launch around the protocol.
  5. 2021-12Tornado Cash Nova launches on Gnosis Chain with shielded accounts and arbitrary amounts.
  6. 2022-08-08OFAC designates Tornado Cash and adds its contract addresses to the SDN list.
  7. 2022-08-10Developer Alexey Pertsev is arrested in the Netherlands.
  8. 2022-09Users and advocacy groups file suit challenging the designation; OFAC publishes clarifying guidance.
  9. 2022-11-08OFAC re-designates Tornado Cash citing support to North Korea.
  10. 2023-05An attacker seizes the governance contract through a malicious proposal; control is later restored.
  11. 2023-08-23U.S. prosecutors unseal charges against Roman Storm and Roman Semenov.
  12. 2024-05-14A Dutch court convicts Pertsev of money laundering and imposes a 64-month sentence.
  13. 2024-11The Fifth Circuit holds that immutable Tornado Cash contracts are not blockable property.
  14. 2025-02Pertsev is released from custody under electronic monitoring pending appeal.
  15. 2025-03-21Treasury removes Tornado Cash addresses from the SDN list.
  16. 2025-08Storm is convicted on one count; the jury deadlocks on the remaining two.

Risks and Practical Considerations

Legal exposure

Legal treatment of Tornado Cash varies by jurisdiction and continues to move. The 2025 delisting removed a specific U.S. prohibition tied to the contract addresses, but nothing about it changes the law on laundering criminal proceeds, and other countries have taken their own positions. Anyone weighing the question should look at current local rules rather than at headlines from any single year.

Technical risk

Immutability cuts both ways. Because no one can modify the Tornado Cash pools, no one can patch them either. A latent bug in a verifier, a flaw in the trusted setup, or a mistake in a peripheral contract cannot be fixed after the fact, and there is no support desk, no insurance fund, and no rollback.

User error

The most common way people lose money with Tornado Cash is losing the note. It is the sole key to a deposit, and there is no derivation from a wallet seed and no recovery path. The most common way people lose privacy is withdrawing too quickly, to too few addresses, in too distinctive a pattern.

Downstream screening

Even where use is lawful, funds that have passed through Tornado Cash are frequently flagged by exchange compliance systems, and accounts can be frozen while the origin is reviewed. Screening policies are set by private firms and are stricter than the law in many cases, which is precisely the gap the compliance report was designed to fill.

Frequently Asked Questions

Is Tornado Cash still sanctioned?

No. The U.S. Treasury removed the Tornado Cash addresses from the SDN list on March 21, 2025, following the Fifth Circuit ruling of November 2024. That removal is specific to U.S. sanctions designations and does not represent a global legal clearance or an endorsement.

Can anyone shut it down?

Not the core pools. The Ether pool contracts of Tornado Cash lost their admin keys in 2020 and cannot be paused, upgraded, or drained by any party. Websites, repositories, and node providers can be blocked, and they were, but the contracts kept operating throughout the sanctions period.

Does it make transactions untraceable?

Only in a narrow sense. Tornado Cash hides which deposit corresponds to which withdrawal, and nothing else. Timing, amounts, gas funding, address reuse, and network metadata all remain visible, and analysts routinely reconstruct flows through Tornado Cash from those signals alone.

What happens if I lose my note?

The deposit becomes permanently unwithdrawable. The note holds the nullifier and secret required to build a valid proof, and no copy exists anywhere else. Tornado Cash has no operator who could restore access even in principle.

Do relayers see who I am?

A relayer never sees your note or your original deposit, and it cannot redirect the funds, because the recipient and fee are bound inside the proof. It does see the withdrawal request, the recipient address, and your connection metadata, so relayer choice matters to the privacy Tornado Cash actually delivers.

Why fixed denominations?

Uniform amounts are what make notes interchangeable. If Tornado Cash accepted arbitrary values, an observer could match deposits to withdrawals by size and the anonymity set would collapse to one. Nova explored a different approach with shielded accounts, but the classic pools rely on strict denomination equality.

Can I prove where my funds came from?

Yes, voluntarily. The compliance report generated from your note links the deposit transaction to the withdrawal transaction and can be shared with an exchange or auditor. Only the note holder can produce it, so it works as a selective disclosure mechanism on top of Tornado Cash rather than a hole in it.

What did the court rulings actually decide?

The appellate ruling was about statutory definitions: immutable smart contracts are not property that OFAC can block. It did not hold that Tornado Cash is beneficial, nor did it protect the developers from criminal liability, which is being litigated separately and has already produced convictions on other theories.