Recent

↑ ↓ to move ↵ to open esc to close

Tornado Cash OFAC Sanctions, Fifth Circuit Van Loon Reversal & Immutable ZK Law

Technical and statutory post-mortem of OFAC's August 2022 SDN smart-contract designation, the November 2024 Fifth Circuit IEEPA property ruling, March 2025 delisting, and Privacy Pools evolution.

Forensic Incident Dossier DT-INC-2025-003
Timestamp (UTC) 2025-03-21T15:00:00Z
Exploit Volume Statutory / Protocol Precedent ($0 Direct Pool Drain)
Root Cause CWE CWE-285
Attribution OFAC SDN Designation and Fifth Circuit Judicial Reversal
Affected Chains Ethereum, BNB Smart Chain, Polygon, Arbitrum, Optimism, Avalanche
Mutated Storage Immutable Pool Contracts: owner == 0x0000000000000000000000000000000000000000 (Zero Admin Mutability)
Forensic Root-Cause Capsule
On November 26, 2024, the U.S. Court of Appeals for the Fifth Circuit ruled unanimously in Van Loon v. Department of the Treasury that Tornado Cash's immutable Groth16 zero-knowledge pool smart contracts cannot be owned, controlled, or altered by any person and therefore exceed Treasury's statutory property-sanctioning authority under IEEPA, prompting OFAC's formal SDN delisting on March 21, 2025.
Forensic reconstruction plate for DT-INC-2025-003
FORENSIC RECONSTRUCTION // DT-INC-2025-003 (regulatory-sanctions)

Incident Executive Summary: Autonomous Cryptographic Code Meets IEEPA

Unlike traditional entries in DT.gl's Crypto & Privacy Incident Ledger involving stolen private keys or Solidity logic bugs, DT-INC-2025-003 documents the defining constitutional, statutory, and cryptographic confrontation of modern Web3 privacy: the August 8, 2022 designation of autonomous Tornado Cash smart-contract addresses on the U.S. Treasury Office of Foreign Assets Control (OFAC) Specially Designated Nationals (SDN) list, its cascading censorship across GitHub, USDC, Infura, Alchemy, and Ethereum MEV-Boost relays, and its historic reversal by the U.S. Court of Appeals for the Fifth Circuit in Van Loon v. Department of the Treasury (No. 23-50669, Nov 26, 2024), culminating in OFAC's formal SDN delisting on March 21, 2025.

For protocol architects, hardware-wallet builders, and open-source cryptographers, Van Loon established that architectural immutability is not merely a marketing slogan; it is a decisive legal and technical fact. Whether a smart contract retains an onlyOwner proxy upgrade key (CWE-285 administrative control), mutable fee-recipient state, or centralized off-chain relayer coordination determines both its vulnerability to technical supply-chain capture and its statutory classification as controllable "property" or an ongoing "service."


Bytecode Forensics: Why the Core Groth16 Pool Contracts Were Provably Ownerless

To grasp why the Fifth Circuit panel unanimously overturned the district court's summary judgment, engineers must separate the two completely distinct smart-contract subsystems often conflated under the label "Tornado Cash":

  1. The Immutable Core Groth16 Privacy Pool Contracts (ETH 0.1, 1, 10, 100 Pools):
    • Deployed in 2019 and permanently locked in May 2020 when the operator address executed changeOperator(0x0000000000000000000000000000000000000000).
    • Contain zero DELEGATECALL proxy pointers, zero SELFDESTRUCT opcodes, zero pause() switches, and zero administrative fee levers.
    • At deposit, any Ethereum user submits fixed ETH plus a Pedersen(nullifier || secret) commitment leaf inserted into an append-only 20-level MiMC Merkle tree.
    • At withdrawal, the user submits a Groth16 zk-SNARK proof (pi_A, pi_B, pi_C) verified autonomously on-chain by an immutable pairing-check contract (BN254 elliptic curve ecPairing precompile 0x08) proving knowledge of (nullifier, secret) corresponding to some historical Merkle root in the pool without revealing which leaf, while publishing Pedersen(nullifier) to an on-chain mapping so the note can never be withdrawn twice.
  2. The Mutable Auxiliary Ecosystem (TORN Governance DAO, Relayer Registry & Hosted Web UI):
    • Deployed later to govern TORN token staking fees charged to third-party gas-paying relayers.
    • Because TORN governance proposals executed arbitrary logic via DELEGATECALL, a malicious proposer famously exploited CREATE2 + SELFDESTRUCT proposal bytecode replacement in May 2023 to grant themselves 1.2 million fake TORN governance votes; yet even with 100% control of the TORN DAO, that attacker could not touch, freeze, or alter a single wei inside the immutable 0.1 / 1 / 10 / 100 ETH privacy pools! That unintentional real-world stress test empirically proved the pools' total autonomy in federal court.

Chronological Statutory, Infrastructure & Cryptographic Timeline (2019 - 2026)

DateMilestoneTechnical / Legal MechanismEcosystem Consequence
2020-05-21Trusted-Setup Ceremony & Admin Burn1,114 independent contributors complete Groth16 Phase-2 ceremony; operator set to 0x0Core ETH/ERC-20 mixer pools become mathematically unupgradeable and unstoppable on Ethereum L1.
2022-03 to 07Lazarus Bridge Laundering SurgeDPRK Lazarus routes ~$455M+ from Ronin ($624M) & Harmony ($100M) hacks through poolsTriggers intense national-security scrutiny despite legitimate retail privacy volume in the same pools.
2022-08-08OFAC SDN Smart-Contract DesignationTreasury adds 40+ 0x smart-contract addresses directly to the SDN sanctions list; Alexey Pertsev arrested in NLCircle freezes USDC in pools; GitHub deletes repos; Infura/Alchemy & >70% of Ethereum MEV relays censor tx inclusion!
2022-09-08Van Loon v. Treasury FiledSix lawful Ethereum users (backed by Coinbase) challenge OFAC's statutory IEEPA authority; Coin Center files parallel suitPlaintiffs include security engineers & donors subjected to "dusting" attacks (0.1 ETH sent unsolicited to celeb ENS wallets).
2023-09-06Privacy Pools Paper PublishedButerin, Illum, Nadler, Schar & Soleimani formalize ZK Association Set Proofs (ASP)Demonstrates how immutable ZK pools can let honest users prove exclusion of Lazarus deposits without backdoors.
2024-11-26Fifth Circuit Unanimous ReversalVan Loon v. Dept. of the Treasury (No. 23-50669, Judge Don Willett writing for 3-0 panel)Holds immutable smart contracts are neither ownable "property" nor mutable "contracts/services" under IEEPA.
2025-03-21OFAC Formal SDN DelistingTreasury removes Tornado Cash smart-contract addresses from the SDN list following remandRestores lawful U.S. interaction with immutable privacy contracts while maintaining DPRK sanctions.
2025-03-31Mainnet 0xbow Privacy Pools Launch0xbow deploys immutable L1/L2 ZK pools paired with non-custodial Association Set ProvidersEstablishes the 2025-2026 standard for compliant, dissociative EVM financial privacy.

Statutory Anatomy of Van Loon v. Department of the Treasury (No. 23-50669)

Enacted in 1977 to curtail open-ended executive wartime seizures under the Trading with the Enemy Act, the International Emergency Economic Powers Act (50 U.S.C. 1702(a)(1)(B)) authorizes the President (delegated to OFAC) to block "any property in which any foreign country or a national thereof has any interest." Writing for a unanimous Fifth Circuit three-judge panel on November 26, 2024 (in an era following the Supreme Court's Loper Bright termination of Chevron agency deference), Judge Don Willett analyzed the ordinary statutory meaning of "property":

  1. Incapability of Exclusion or Control: Across centuries of property jurisprudence, the irreducible core of "property" is the right to exclude others and exercise dominion or control. Unlike a corporate bank account, intellectual-property copyright, or upgradeable AdminUpgradeabilityProxy smart contract (where a multisig keyholder can call upgradeTo() or pause()), the immutable Tornado Cash pool contracts execute deterministically on global validator nodes. Not even the original authors, TORN token holders, or DPRK hackers could prevent an American citizen from calling deposit() or withdraw(), nor alter a single opcode of the Groth16 verifier.
  2. Autonomous Code Is Neither a Bilateral "Contract" Nor a "Service": Treasury argued in the alternative that under OFAC regulatory definitions (31 C.F.R. 510.323), smart contracts qualify as "contracts" or "services." The Fifth Circuit rejected this conflation of computer-science terminology with legal contract doctrine: a bilateral contract requires mutual assent between two or more parties capable of revoking or modifying terms, whereas an immutable smart contract is an unowned, self-executing cryptographic tool (analogous to an open mathematical vending protocol that charges zero protocol fees to its creators).
  3. Civil IEEPA Delisting vs Criminal 18 U.S.C. 1960 / Conspiracy Boundaries: Crucially for open-source developers, Van Loon resolved civil smart-contract sanctions under IEEPA, compelling OFAC on March 21, 2025 to delist the immutable pool addresses from the SDN list. However, separate criminal prosecutions in the Netherlands (Alexey Pertsev) and the Southern District of New York (United States v. Roman Storm, 23-cr-430, where an August 2025 jury returned a split verdict convicting on unlicensed money-transmitting conspiracy under 18 U.S.C. 1960 while deadlocking on money-laundering and sanctions counts) turned heavily on off-chain operational entanglement: operating centralized hosted web UIs, curating relayer registries, and maintaining TORN token revenue structures while illicit flows surged. For FinCEN and DOJ compliance analysis, pure publication of non-custodial open-source cryptographic code (First Amendment protected speech under Bernstein v. USDOJ and FinCEN's 2019 Non-Custodial Software Guidance) diverges sharply from operating centralized web relays or fee-collecting coordinators.

Architectural Evolution: Legacy Tornado Pools vs 0xbow Association Set Proofs

The core vulnerability exposed during 2022-2024 was mandatory anonymity-set co-mingling: when DPRK Lazarus deposited 100 ETH from the Ronin bridge exploit into the exact same Merkle tree used by an honest protocol developer shielding their payroll, the honest developer had zero cryptographic mechanism at withdrawal to prove "My 100 ETH withdrawal came from an honest deposit, not from Lazarus leaf #48,219" without revealing their exact deposit transaction (which destroys privacy completely!).

Legacy Immutable ZK Pool Co-Mingling vs 0xbow Privacy Pools Association Set ProofsSide-by-side cryptographic diagram comparing Tornado Cash Classic single-root Merkle proofs (which cannot distinguish honest vs exploit deposits) against Privacy Pools dual-root ZK proofs verifying membership in both the global state tree and an honest Association Set tree.1. TORNADO CLASSIC (SINGLE MERKLE ROOT PROOF)Immutable Global Deposit Merkle Tree (R_global)Leaf #101: Honest Salary Deposit (10 ETH)Leaf #102: DPRK Bridge Exploit (10 ETH)Leaf #103: Honest DAO Grant (10 ETH)Groth16 Withdrawal StatementProve: leaf in [101, 102, 103] (R_global)Compliance DilemmaCannot exclude Leaf #102 without doxxing Leaf #1012. 0XBOW PRIVACY POOLS (DUAL-ROOT ASP ZK PROOF)Immutable R_global + Curated ASP Root (R_honest)R_global: [Leaf #101, Leaf #102, Leaf #103]R_honest: [Leaf #101, Leaf #103] (Excludes #102!)Zero admin custody; ragequit exit always liveDual-Tree ZK Withdrawal StatementProve: (leaf in R_global) AND (leaf in R_honest)Dissociative EquilibriumFull privacy among honest set + clean exchange ingress
Figure 1: How dual-root Association Set Proofs preserve immutable non-custodial smart-contract architecture (satisfying Van Loon) while enabling mathematical dissociation from illicit exploit funds.

Cryptographic Guarantees of Non-Custodial Ragequit in Privacy Pools

A common concern among cypherpunk engineers reviewing compliant ZK architectures is whether an Association Set Provider (ASP) introduces a subtle censorship backdoor. In 0xbow's production circuit design:

  • Zero Custody or Freeze Capability: Deposits enter an immutable StatePool contract whose ragequit() function allows the original depositor EOA to reclaim their exact principal back to their originating address at any time, unconditionally, without ASP approval. Thus, an ASP can never confiscate or lock user funds (preserving Van Loon's non-property immutability standard).
  • Delayed Inclusion & Retroactive Exploit Pruning: Honest deposits enter the ASP Merkle root after a brief heuristic screening window (e.g., 1-6 hours verifying the funding source was not a live bridge hack in progress). If a depositor is later revealed to be an exploit address before withdrawing, the ASP simply omits that leaf commitment from updated R_honest roots without affecting any honest user's zero-knowledge proof generation!

Infrastructure Resilience Lessons for Privacy & Self-Custody Engineers

Even though the core Tornado Cash smart contracts never stopped executing on Ethereum Layer 1 for a single block between August 2022 and March 2025, the 31-month sanctions period exposed four severe centralization choke points surrounding "unstoppable" protocols:

  1. Centralized Wallet RPC Censorship (Infura & Alchemy): Within hours of OFAC's 2022 notice, default wallet RPC providers returned JSON-RPC 403 / contract-blocked errors even for passive read calls or users attempting to withdraw trapped lawful funds, reinforcing why serious self-custody requires personal execution nodes (Reth, Helios) or Tor-routed sovereign RPCs.
  2. Code-Hosting Single Points of Failure (GitHub Deletion): Deleting contributor accounts and static frontend repositories overnight proved that cryptographic specifications, ZK circuit circom/Noir files, and verification UIs must be mirrored across content-addressed storage (IPFS / Arweave Permaweb / Radicle P2P Git; see Decentralized & Self-Hosted Protocols) with deterministic reproducible build hashes.
  3. MEV-Boost Builder & Relay Filtering: At peak post-Merge censorship in late 2022, > 75% of Ethereum blocks produced via OFAC-filtering MEV-Boost relays delayed transactions touching sanctioned pools until non-censoring solo validators or neutral relays (Ultrasound, Agnostic) proposed a slot, motivating protocol-level Fork-Choice Enforced Inclusion Lists (FOCIL, EIP-7805) and encrypted mempools.
  4. Unsolicited "Dusting" & Taint Weaponization: Immediately after August 8, 2022, pranksters sent 0.1 ETH Tornado withdrawals to hundreds of public ENS addresses (including celebrity and executive wallets), triggering automated centralized-exchange compliance freezes against innocent recipients, proving why reusable public ENS addresses must be replaced by ERC-5564 Stealth Addresses or BIP-352 Silent Payments paired with manual UTXO/token isolation.

Architectural Checklist for Lawful, Unstoppable Privacy Protocols

Synthesizing the Fifth Circuit's statutory holding in Van Loon alongside technical lessons from three years of infrastructure censorship yields five concrete engineering design rules for modern cryptographic privacy protocols:

  1. True Deployment Immutability (Zero Admin Keys at Genesis): Deploy core zero-knowledge state and verifier contracts without DELEGATECALL upgrade proxies, pause() modifiers, or fee-extraction setters (owner == address(0)). Separating immutable base-layer cryptographic primitives from optional auxiliary interfaces ensures the protocol itself remains an unowned public mathematical utility rather than controllable corporate property.
  2. Eliminate Trusted-Setup Toxic Waste Where Feasible: Prefer transparent or universal accumulation proof systems (Halo 2 polynomial commitments, STARK hash-based proofs, or Curve Trees used in Monero FCMP++) or large-scale verified multi-party Powers-of-Tau ceremonies (1,000+ independent entropy contributors) with publicly reproducible circuit constraints (circom / Noir).
  3. Decouple State Inclusion from Compliance Attestation (ASP Architecture): Allow permissionless deposit and ragequit principal recovery in the base contract while enabling withdrawing users to attach modular zero-knowledge Association Set Proofs (0xbow) or Private Proofs of Innocence (PPOI) demonstrating non-overlap with attributed exploit addresses.
  4. Ship Local CLI & Self-Hostable Prover Workbenches: Never make a single centrally hosted .com domain or single relayer registry the sole path to generate zero-knowledge withdrawal proofs; distribute deterministic, offline-capable WebAssembly/Rust prover binaries verifiable via SHA-256 and PGP/Sigstore signatures over content-addressed networks and encrypted DNS / Tor transport.

Frequently Verified Technical Questions

Why did the Fifth Circuit rule that immutable Tornado Cash pool contracts are not 'property' under IEEPA?

Under the International Emergency Economic Powers Act (50 U.S.C. 1702), OFAC may block property in which a foreign national has an interest. After the 2020 trusted-setup ceremony and operator key burn, the core Tornado Cash ETH and ERC-20 pool contracts became unupgradeable autonomous bytecode incapable of excluding anyone or being altered by Tornado Cash developers, failing the statutory definition of ownable property or a Bilateral service contract.

Primary Reference: Fifth Circuit Opinion in Van Loon v. Treasury

Did OFAC's March 21, 2025 SDN delisting legalize laundering hacked funds or drop DPRK sanctions?

No. Removing immutable Tornado Cash smart contract addresses from the SDN list restored lawful financial-privacy access for ordinary U.S. persons (such as Coinbase employees shielding salary wallets or Vitalik Buterin donating privately to Ukraine), while DPRK Lazarus Group entities remain strictly sanctioned and knowing transmission of stolen exploit proceeds remains prosecutable under money-laundering statutes.

Primary Reference: U.S. Treasury OFAC March 21, 2025 Notice

What was the technical difference between Tornado Cash's immutable pools and its compromised 2023 governance DAO?

The core Tornado Cash Classic fixed-denomination mixer pools (0.1, 1, 10, and 100 ETH) had their admin keys permanently burned to 0x0000...0000 in May 2020 and contain zero upgrade proxies. By contrast, the separate TORN token governance system permitted proposals via CREATE2/SELFDESTRUCT bytecode mutation, which an attacker exploited in May 2023 to seize TORN governance votes without ever touching user funds inside the immutable ZK pools.

Primary Reference: DT.gl Incident Forensics Ledger

How did RPC providers and Ethereum MEV relays react during the 2022-2025 SDN designation period?

Immediately after August 8, 2022, Infura, Alchemy, GitHub, Circle (freezing USDC inside pool contracts), and OFAC-compliant Ethereum MEV-Boost relays censored Tornado Cash addresses and repository code. That infrastructure choke point proved that even unstoppable L1 smart contracts suffer severe UX and censorship friction if users rely on centralized RPC endpoints or permissioned block builders.

Primary Reference: On-Chain Privacy Protocols Engineering Guide

Cryptographic & Editorial Revision Ledger

Published: | Last Verified:

  • 2026-11-11: Updated post-delisting compliance boundaries distinguishing civil IEEPA SDN smart-contract status from criminal 18 U.S.C. 1960 / conspiracy standards and 0xbow Privacy Pools mainnet adoption.
  • 2026-07-08: Initial DT.gl publication of technical and statutory post-mortem DT-INC-2025-003 analyzing Van Loon v. Treasury (No. 23-50669) and OFAC's March 21, 2025 SDN removal.