> For the complete documentation index, see [llms.txt](https://docs.nullmask.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nullmask.pro/introduction/comparison.md).

# Comparison

### Detailed Comparison <a href="#detailed-comparison" id="detailed-comparison"></a>

#### Tornado Cash <a href="#tornado-cash" id="tornado-cash"></a>

Tornado Cash uses a web app for deposits and withdrawals. For each deposit, the app generates a note plaintext that users must store securely in order to withdraw later. Tornado Cash supports only fixed denominations and does not support shielded transfers between users.

#### Privacy Pools <a href="#privacy-pools" id="privacy-pools"></a>

Privacy Pools also uses a web app as its front end. Users must generate a new account backed up by a seed phrase. The seed phrase must be re-entered at every visit to the web app. Privacy Pools allows a single deposit to be withdrawn in multiple transactions to different addresses.

As of March 2026, Privacy Pools supports key derivation from a wallet signature, accompanied by a prominent phishing warning disclaimer.

#### Railgun <a href="#railgun" id="railgun"></a>

Using Railgun requires the installation of a dedicated wallet backed up by a new seed phrase. Railgun users can transact privately among each other using a new address type prefixed with `0zk`. Railgun provides a terminal interface and a web app for 0x-to-0zk transfers.

Railgun supports hardware wallets but with a fundamental design flaw: the spending authority must still be extracted from the device, violating the core security principle of hardware wallets.

#### Nullmask <a href="#nullmask" id="nullmask"></a>

Nullmask requires no new wallet, no seed phrase, and no backup. Users add a virtual network to their existing wallet and transact as usual. The protocol works with any EIP-1559 compatible wallet including hardware wallets, with spending authority never leaving the device.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.nullmask.pro/introduction/comparison.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
