> For the complete documentation index, see [llms.txt](https://void-protocol-2.gitbook.io/void-protocol-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://void-protocol-2.gitbook.io/void-protocol-docs/developers/protocol-components.md).

# Protocol Components

## Architecture

VOID is built from a small set of on-chain contracts and supporting services that work together to manage private notes, proofs, trades and application activity.

The protocol uses:

* **Noir circuits**
* **Barretenberg UltraHonk proofs**
* **on-chain verifier contracts**
* **encrypted notes**
* **Merkle commitments**
* **nullifiers**
* **relayer infrastructure**
* **indexing services**

### Core Components

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Private Pool Contracts</strong></td><td>Manage deposits, private-note state, nullifiers and withdrawals.</td></tr><tr><td><strong>Noir Circuits</strong></td><td>Define the rules for Shield, Transfer, Unshield and Trade proofs. Private Buy, Sell and Swap use the Trade circuit. The legacy Swap verifier is still deployed, but its fixed-rate entry point is permanently disabled.</td></tr><tr><td><strong>Verifier Contracts</strong></td><td>Verify UltraHonk proofs on-chain before private state changes are accepted.</td></tr><tr><td><strong>Merkle Tree</strong></td><td>Tracks note commitments and provides the roots referenced by zero-knowledge proofs.</td></tr><tr><td><strong>Nullifiers</strong></td><td>Mark notes as spent and prevent double spending.</td></tr><tr><td><strong>Encrypted Notes</strong></td><td>Represent private balances and are encrypted so only the intended owner can read them.</td></tr><tr><td><strong>Hosted Proof Service</strong></td><td>Generates proofs for private actions on the current testnet deployment.</td></tr><tr><td><strong>VOID Relayer</strong></td><td>Submits private trades from private balance, Private Send, Withdraw and Gasless Swaps, and pays their gas. It appears as the on-chain sender. The user's wallet only submits if they choose the fallback to submit from their own wallet.</td></tr><tr><td><strong>Indexer</strong></td><td>Tracks protocol activity and helps the app discover encrypted notes and transaction state.</td></tr><tr><td><strong>Asset Registry</strong></td><td>Controls which assets are supported by the protocol.</td></tr><tr><td><strong>Association Set Registry</strong></td><td>Publishes and manages association-set roots for the planned association-set system.</td></tr></tbody></table>

### Trading Architecture

VOID can route private trades through supported underlying liquidity pools.

The current testnet includes routing through:

* Uniswap V2 pools
* WETH routes
* the testnet **ETH / VOID Uniswap v4 pool** with the launch-tax hook

{% hint style="warning" %}
The testnet **ETH / VOID v4 pool is not the mainnet VOID launch pool**.

The mainnet launch pool will be a new production deployment.
{% endhint %}

The underlying DEX trade remains public on-chain even when the transaction is submitted through the VOID relayer.

### Governance

A **2-of-3 Safe** controls key protocol settings on testnet.

The Safe:

* controls pool settings
* receives the **0.5% testnet trade fee**
* owns the **AssociationSetRegistry**
* can publish and revoke association-set roots
* can pause deposits, Private Sends and trades

{% hint style="success" %}
The pause mechanism does **not block withdrawals**.

Withdrawals cannot be paused. Users retain the ability to exit the private pool even if deposits, Private Sends and trades are paused.
{% endhint %}

### Testnet Trust Assumptions

{% hint style="warning" %}
The current testnet architecture still includes trusted infrastructure components.

The hosted proof service receives prover inputs, and the relayer can delay transaction submission, although neither can independently spend user funds.
{% endhint %}

Local browser proving and further production hardening are planned before mainnet.


---

# 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 by asking a question.

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

```
GET https://void-protocol-2.gitbook.io/void-protocol-docs/developers/protocol-components.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 `automate deployments from our CI pipeline` 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.
