Skip to content
@tornadocashorg

Tornado Cash Official - Secure, Decentralized, Private protocol

Leading Non-custodial Ethereum privacy solution. Achieve private, untraceable transactions and enhance your on-chain anonymity with our trustless protocol.

image

🌪️ Tornado Cash: The On-Chain Privacy Solution

Tornado Cash is a decentralized, non-custodial protocol designed to provide transaction privacy on Ethereum and other EVM-compatible chains. It offers a cryptographic mechanism to break the direct deterministic link between deposit and withdrawal addresses. This repository is the central place for the protocol specification, cryptographic design notes, audit-friendly documentation, and research resources to support community development, security review, and academic study.


🌟 Core Values & Mission

We build and maintain this project guided by three fundamental principles:

  • Financial Privacy Rights
    We affirm that individuals have a legitimate right to financial privacy on public ledgers. Privacy protects people against undue surveillance, profiling, and the potential exploitation of transaction history.

  • Open Source Transparency
    All protocol specifications, explanatory implementations (non-operational), and cryptographic descriptions are public and auditable. Transparency enables peer review, reproducible security analyses, and community trust.

  • Decentralization & Immutability
    The architecture is intended to avoid central points of control. Protocol guarantees such as censorship resistance and immutability are core design objectives.


🚀 How the Protocol Works (Technical Overview)

Tornado Cash-style privacy constructions use Zero-Knowledge Proofs (ZKPs) to unlink deposits from withdrawals while preventing double-withdrawals.

High-level flow (conceptual):

  1. Deposit (Commitment Registration)

    • A user generates two secret values (commonly called nullifier and secret), computes a commitment and submits it with a fixed denomination to a deposit registry.
    • The commitment is appended to a Merkle tree stored in the registry contract/state; the sender address is not recorded in a way that links to later withdrawals.
  2. Mixing (Anonymity Set Growth)

    • Funds corresponding to commitments are pooled in fixed denominations. As more participants deposit, the anonymity set increases, improving unlinkability between deposits and withdrawals.
  3. Withdrawal (Zero-Knowledge Proof)

    • The user proves, via a zk-SNARK, that they know a commitment present in the Merkle tree and that the corresponding nullifier has not been used before — without revealing which leaf belongs to them.
    • Upon successful verification, the registry marks the nullifier as used and releases the funds to a recipient address provided by the prover.

This conceptual model prioritizes privacy while ensuring soundness properties like no double withdrawal.


🛠️ Key Technical Stack (Conceptual)

Technology Role
Ethereum / EVM Chains Primary execution environment for smart contracts and on-chain registry.
Solidity (for smart contracts) Language used for illustrative/non-operational contract specifications and interface definitions.
zk-SNARKs / ZK Proof Systems Core cryptographic primitive enabling succinct proofs of set membership and nullifier uniqueness.
Merkle Trees Efficient data structure for managing deposit commitments and providing membership proofs.
IPFS / ENS Decentralized hosting and naming for front-end and documentation (research artifacts).

⚖️ Legal & Ethical Considerations

Privacy technologies sit at the intersection of ethical utility and regulatory scrutiny. They can protect vulnerable users and activists, but they may also be misused for illicit purposes. This repository is committed to responsible, lawful research and to encouraging users to comply with applicable laws.

  • We do not provide operational deployment code.
  • Contributors should understand relevant legal frameworks and consider the ethical implications of their work.
  • Use of privacy tools must adhere to local laws and regulations.

🤝 Contribution (Research & Documentation)

We welcome contributions focused on safety, correctness, and academic advancement:

  • Documentation & Specifications — Improve protocol descriptions, threat models, and formal definitions.
  • Security Audits & Reviews — Submit audit reports, formal verification notes, and responsible disclosure of vulnerabilities.
  • Research & Analysis — Publish analyses of anonymity sets, attack vectors, zk-proof optimizations, and privacy metrics.
  • Educational Content — Tutorials, diagrams, and worked examples that explain ZKPs, Merkle proofs, and privacy tradeoffs in approachable ways.

Process: For major proposals, open an Issue to discuss scope and security implications prior to substantial PRs.


📚 Resources & Further Reading


🔐 Security & Audit Guidelines (for researchers)

  • Provide threat model and attacker capabilities for every research artifact.
  • Include reproducible test vectors and verification scripts that do not enable a production mixing deployment.
  • Prefer formal proofs or clear definitions for security properties (soundness, completeness, unlinkability).
  • Document assumptions (trusted setup, CRS, trusted ceremony) explicitly.

🧾 License & Attribution

This repository uses an open, research-friendly license for documentation and non-operational artifacts. It explicitly prohibits use of repository materials to construct or deploy operational money-mixing services intended to obfuscate illicit activity.


🔗 Official Links


Pinned Loading

  1. tornado-core tornado-core Public

    Tornado cash. Non-custodial private transactions on Ethereum.

    JavaScript 1

  2. tornado-cli tornado-cli Public

    A command line interface to make transactions in Tornado Cash protocol

    JavaScript 1

  3. tornado-classic-ui tornado-classic-ui Public

    Tornado Cash Classic UI

    JavaScript 1

  4. ui-minified ui-minified Public

    A minified web UI for Tornado Cash protocol

    HTML 1

  5. tornado-relayer tornado-relayer Public

    Relayer for Tornado cash.

    JavaScript 1

  6. tornado-testnet-setup tornado-testnet-setup Public

    Tornado Cash improvement proposal to lower the vote quorum from 25k to 15k TORN

    TypeScript

Repositories

Showing 10 of 49 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…