# Nullmask

Nullmask enables shielded deposits, transfers, withdrawals, and swaps on EVM chains. Users interact with a standard wallet — the protocol intercepts transactions, generates zero-knowledge proofs client-side, and submits them through a relayer to hide the sender's identity.

Funds are held in a UTXO-based privacy pool secured by Poseidon2 commitments and Merkle membership proofs.

## Quick Links

| Section                                                            | Description                                     |
| ------------------------------------------------------------------ | ----------------------------------------------- |
| [What is Nullmask?](/introduction/introduction.md)                 | High-level introduction to the protocol         |
| [How It Works](/introduction/how-it-works.md)                      | End-to-end architecture walkthrough             |
| [Protocol Specification](/protocol-specification/protocol.md)      | Cryptographic details, algorithms, and proofs   |
| [Smart Contract Reference](/smart-contract-reference/contracts.md) | Solidity API for deposits, transfers, and swaps |
| [RPC API Reference](/rpc-api-reference/rpc.md)                     | JSON-RPC methods exposed by the proxy           |
| [Developer Guide](/developer-guide/developer.md)                   | Build and run locally                           |
| [User Guide](/user-guide/guide.md)                                 | Step-by-step instructions for end users         |

## Key Features

* **Shielded Transfers** — Send tokens privately without revealing sender, recipient, or amount on-chain
* **Shielded Swaps** — Execute Uniswap V2 swaps without exposing user identity
* **Private Deposits & Withdrawals** — Move funds in and out of the shielded pool with ZK-verified proofs
* **Multi-Chain** — Deployed on Ethereum, Arbitrum, MegaETH, Base, and BSC
* **Standard Wallet UX** — No special wallet needed; works with MetaMask and any EIP-1559 compatible wallet
* **Hardware Wallet Support** — Full security without extracting spending authority from the device
* **ERC-20 Support** — Shield any supported ERC-20 token alongside native ETH
* **Built-in Compliance** — Deposit screening with retrospective taint recovery via revocation keys

## Tech Stack

| Layer            | Technology                                                                                     |
| ---------------- | ---------------------------------------------------------------------------------------------- |
| ZK Circuits      | [Noir](https://noir-lang.org/) + [Barretenberg](https://github.com/AztecProtocol/barretenberg) |
| Smart Contracts  | Solidity 0.8.28, Hardhat v3, OpenZeppelin v5                                                   |
| Frontend         | Next.js 15, React 19, TailwindCSS 4                                                            |
| Backend Services | Fastify 5, Node.js 24                                                                          |
| Web3             | Viem, Wagmi                                                                                    |
| Monorepo         | Turborepo, pnpm                                                                                |
| Storage          | LMDB (persistent state)                                                                        |
| Code Quality     | Biome, TypeScript 5.9, knip                                                                    |


---

# Agent Instructions: 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 current page URL with the `ask` query parameter:

```
GET https://docs.nullmask.io/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
