> 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/contracts.md).

# Contracts

## Testnet Contracts & Limits

### Robinhood Chain Testnet

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Network</strong></td><td>Robinhood Chain Testnet</td></tr><tr><td><strong>Chain ID</strong></td><td><code>46630</code></td></tr><tr><td><strong>Deployment Period</strong></td><td>13–15 October 2026 (VOID token and launch pool: 26 October 2026)</td></tr><tr><td><strong>Security Status</strong></td><td>Not audited</td></tr></tbody></table>

{% hint style="danger" %}
These are **testnet deployments only**.

They have not been audited. Do not use real funds with these contracts.

Mainnet addresses will differ and will be published only after final production deployment and verification.
{% endhint %}

### Proof Verifiers

Each proof verifier wraps a generated **UltraHonk verifier**.

The current verifier addresses are listed under **Contract Addresses** below.

### Contract Addresses

#### Current Contracts

These are the current contracts used by the VOID Robinhood Chain Testnet deployment.

{% hint style="info" %}
Some testnet contracts, such as **VeilPool** and **VeilRouteAdapter**, still use the **VEIL** name because they were deployed before the VOID rebrand.
{% endhint %}

The testnet **ETH / VOID Uniswap v4 pool is not the mainnet VOID launch pool**.

| Contract                                                            | Address                                                                                                                                         | Explorer source |
| ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------------- |
| **VeilTradePoolV3** (private pool, current since 15 Oct, round 2)   | [`0xD10Ab5Dc9920F21BCFEAd56B07F1b0d8F3707c31`](https://explorer.testnet.chain.robinhood.com/address/0xD10Ab5Dc9920F21BCFEAd56B07F1b0d8F3707c31) | Not published   |
| **VeilRouteAdapter** (V2 + Uniswap v4 routing, last-hop minimum)    | [`0xBD5f9AE3f49aD63717671E0db57250b77d038Ebf`](https://explorer.testnet.chain.robinhood.com/address/0xBD5f9AE3f49aD63717671E0db57250b77d038Ebf) | Not published   |
| **VeilGaslessSwapRouter** (relayer-bound intents, deadline horizon) | [`0xCd6cEe0cEDF9c18Bac0F0Ee1C6E04c71674Ef444`](https://explorer.testnet.chain.robinhood.com/address/0xCd6cEe0cEDF9c18Bac0F0Ee1C6E04c71674Ef444) | Not published   |
| **AssetRegistry** (trade assets)                                    | [`0x9CB93882b2f9C1aF74a36E1be6a3ce142445Dbd8`](https://explorer.testnet.chain.robinhood.com/address/0x9CB93882b2f9C1aF74a36E1be6a3ce142445Dbd8) | Not published   |
| **AssociationSetRegistry**                                          | [`0xC8FfAa04Bb9f2dA4783c5951D6D43332006D2Ff3`](https://explorer.testnet.chain.robinhood.com/address/0xC8FfAa04Bb9f2dA4783c5951D6D43332006D2Ff3) | Not published   |
| **SwapQuotePolicy**                                                 | [`0xf55c51498fe55FD4F8c5F84113DE437ef522A3cE`](https://explorer.testnet.chain.robinhood.com/address/0xf55c51498fe55FD4F8c5F84113DE437ef522A3cE) | Not published   |
| **FieldHasher**                                                     | [`0x1b9b942627f5801938E02784CCb750b414A33ccB`](https://explorer.testnet.chain.robinhood.com/address/0x1b9b942627f5801938E02784CCb750b414A33ccB) | Not published   |
| **TestV4LiquiditySeeder** (owned by the Safe)                       | [`0xbfB881fD4d9Ff203c94bBF9919482723C96b368f`](https://explorer.testnet.chain.robinhood.com/address/0xbfB881fD4d9Ff203c94bBF9919482723C96b368f) | Not published   |
| **VoidToken** (testnet $VOID, 6 decimals)                           | [`0xD68E089a7bc95783dB1C883ed40Bc3E61d368fb6`](https://explorer.testnet.chain.robinhood.com/address/0xD68E089a7bc95783dB1C883ed40Bc3E61d368fb6) | **Verified**    |
| **LaunchTaxHook** (Uniswap v4 hook)                                 | [`0xE1A3C1a937510dDCCB3618584e32cDaB5266e0cc`](https://explorer.testnet.chain.robinhood.com/address/0xE1A3C1a937510dDCCB3618584e32cDaB5266e0cc) | **Verified**    |
| **LpLocker**, 365 days (ETH / VOID LP)                              | [`0xD405EE638fC2257C41bB8dB103CcC2F1c687B5a3`](https://explorer.testnet.chain.robinhood.com/address/0xD405EE638fC2257C41bB8dB103CcC2F1c687B5a3) | **Verified**    |
| **LpLocker**, 180 days (tUSDG LP, unused)                           | [`0x251c72bA1EA3a62132195374699B532cCDcfc684`](https://explorer.testnet.chain.robinhood.com/address/0x251c72bA1EA3a62132195374699B532cCDcfc684) | **Verified**    |

{% hint style="info" %}
**VoidToken**, **LaunchTaxHook** and both **LpLocker** contracts are source-verified on the [Robinhood Chain Testnet explorer](https://explorer.testnet.chain.robinhood.com) and on Sourcify.

The core private pool, routing and verifier contracts are not source-published on the explorer yet. Their addresses are listed so you can check them on-chain.
{% endhint %}

**Proof verifiers** (each wrapper calls a generated UltraHonk verifier):

| Proof                                                      | Verifier (used by the pool)                                                                                                                     | UltraHonk verifier                                                                                                                              |
| ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| Shield                                                     | [`0x4E361cF08b4249C15730B73C3383ed5e2309D6E1`](https://explorer.testnet.chain.robinhood.com/address/0x4E361cF08b4249C15730B73C3383ed5e2309D6E1) | [`0x475e89FeaF086967da734E7E30365452Dbb16dF9`](https://explorer.testnet.chain.robinhood.com/address/0x475e89FeaF086967da734E7E30365452Dbb16dF9) |
| Transfer (Private Send)                                    | [`0x556B7e0F36C58797ab54A134D37dEFaF7A9ca110`](https://explorer.testnet.chain.robinhood.com/address/0x556B7e0F36C58797ab54A134D37dEFaF7A9ca110) | [`0x4747D9E8645632c35465E2990215957c74A490EB`](https://explorer.testnet.chain.robinhood.com/address/0x4747D9E8645632c35465E2990215957c74A490EB) |
| Unshield (Withdraw)                                        | [`0xb393fc73Ac43BA86caB0B4e635F748508D010D1b`](https://explorer.testnet.chain.robinhood.com/address/0xb393fc73Ac43BA86caB0B4e635F748508D010D1b) | [`0xde3D0f3A058B2B1C5129Fb573D8A2a55D3B267aB`](https://explorer.testnet.chain.robinhood.com/address/0xde3D0f3A058B2B1C5129Fb573D8A2a55D3B267aB) |
| Swap (legacy, fixed-rate entry point permanently disabled) | [`0x79f0fEc94509e04d8143aEcBdd4c613e27c7F5AF`](https://explorer.testnet.chain.robinhood.com/address/0x79f0fEc94509e04d8143aEcBdd4c613e27c7F5AF) | [`0xE9C7238CE4937F56A94c5A19dA5E4A7F2bfF3A23`](https://explorer.testnet.chain.robinhood.com/address/0xE9C7238CE4937F56A94c5A19dA5E4A7F2bfF3A23) |
| Trade (Private Buy, Sell and Swap)                         | [`0x321085cbE83342f64c6b227056ea83dd8246DC4D`](https://explorer.testnet.chain.robinhood.com/address/0x321085cbE83342f64c6b227056ea83dd8246DC4D) | [`0x54a46Bef83f5D390B3ee1CB81897CBC462f16b72`](https://explorer.testnet.chain.robinhood.com/address/0x54a46Bef83f5D390B3ee1CB81897CBC462f16b72) |

**Test assets and accounts:**

| Asset / account                                                       | Address                                                                                                                                         |
| --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **tUSDG** (test USD, 6 decimals)                                      | [`0x20A48c5acDdA346051f0Df55389bD40ba92DE30d`](https://explorer.testnet.chain.robinhood.com/address/0x20A48c5acDdA346051f0Df55389bD40ba92DE30d) |
| **WETH** (test WETH)                                                  | [`0x7943e237c7F95DA44E0301572D358911207852Fa`](https://explorer.testnet.chain.robinhood.com/address/0x7943e237c7F95DA44E0301572D358911207852Fa) |
| **Admin Safe** (2-of-3; trade governor, fee recipient, tax recipient) | [`0xABfd8d8Cc4D4df1C822FcC28b3c989f2f19C7B22`](https://explorer.testnet.chain.robinhood.com/address/0xABfd8d8Cc4D4df1C822FcC28b3c989f2f19C7B22) |
| **VOID relayer** (submits private trades, including Private Swap)     | [`0x5B957f41CCd8224e314623cD15C644b8f8497E2F`](https://explorer.testnet.chain.robinhood.com/address/0x5B957f41CCd8224e314623cD15C644b8f8497E2F) |

The test assets have no value. The relayer is an ordinary account (not a contract) that the VOID team operates on testnet.

#### Earlier and Superseded Contracts

Do not use superseded contracts for new deposits or trades.

Notes created in an earlier pool remain in the pool that originally issued them.

| Contract                             | Address                                                                                                                                         | Status                                                             |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| **VeilTradePoolV3** (round 1 fixes)  | [`0x6DE2568F9A2572F0ce904446f63A555C5dE74E69`](https://explorer.testnet.chain.robinhood.com/address/0x6DE2568F9A2572F0ce904446f63A555C5dE74E69) | Paused for deposits and trades. Withdraw only. Contains old notes. |
| **VeilTradePoolV3** (earlier 15 Oct) | [`0xB25316Db8D5c5700e170C384f801F71DC9BCCEE0`](https://explorer.testnet.chain.robinhood.com/address/0xB25316Db8D5c5700e170C384f801F71DC9BCCEE0) | Superseded, contains old notes                                     |
| **VeilRouteAdapter**                 | [`0xEaCb44AC70C49e8a4631738100048FF84E011657`](https://explorer.testnet.chain.robinhood.com/address/0xEaCb44AC70C49e8a4631738100048FF84E011657) | Superseded                                                         |
| **VeilGaslessSwapRouter** (round 1)  | [`0xD62272FE3e99C351Fe8eF72E974617D7b41648ce`](https://explorer.testnet.chain.robinhood.com/address/0xD62272FE3e99C351Fe8eF72E974617D7b41648ce) | Superseded                                                         |
| **VeilGaslessSwapRouter**            | [`0x663A63cE4e69716e77804b204764258b34bFE1bA`](https://explorer.testnet.chain.robinhood.com/address/0x663A63cE4e69716e77804b204764258b34bFE1bA) | Superseded                                                         |
| **TestV4LiquiditySeeder**            | [`0x5fda7b51aB2e64bE2f5D3f037e1316C75Be922d8`](https://explorer.testnet.chain.robinhood.com/address/0x5fda7b51aB2e64bE2f5D3f037e1316C75Be922d8) | Superseded, deployer-owned, now empty                              |

{% hint style="warning" %}
Replacing a pool does not migrate existing private notes into the new pool automatically.
{% endhint %}

### Pool Settings

Current testnet trading protections include:

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Maximum Price Impact</strong></td><td>3%</td></tr><tr><td><strong>Default Slippage</strong></td><td>1%</td></tr><tr><td><strong>Quote Lifetime</strong></td><td>120 seconds</td></tr><tr><td><strong>VOID Trade Fee</strong></td><td>0.5%, charged once on the final output</td></tr></tbody></table>

### Routing

The private pool and gasless router route swaps through **VeilRouteAdapter**, the legacy-named testnet routing contract.

VeilRouteAdapter quotes every configured route, including:

* Uniswap V2 pairs
* the **ETH / VOID** Uniswap v4 launch-tax hook pool (VOID / WETH directly, VOID / tUSDG through WETH)
* routes of up to **3 pool hops**

The best available route is executed inside a **single trade**.

Within a single trade step, the **0.5% VOID trade fee** is charged once, on the final output, regardless of how many pools the route uses.

A **Private Swap** that runs through an intermediate asset is two separate trade steps, and each step pays the 0.5% fee (about 1% in total). See **Private Swap Fees**.

{% hint style="warning" %}
VOID routes go through the testnet **ETH / VOID** pool, which uses the launch-tax hook. It is not the mainnet launch pool.
{% endhint %}

The testnet VOID token, launch-tax hook and LP lockers were deployed on 26 October 2026 to test the planned launch mechanics.

They must pass the required external security review before equivalent production contracts are used on mainnet.

The earlier **VeilPool** testnet deployment is retired.

Mainnet contract addresses will be published after deployment and verification.

### Launch-Tax Contracts

The testnet launch deployment includes:

| Contract                          | Address                                      |
| --------------------------------- | -------------------------------------------- |
| **VOID token** (6 decimals)       | `0xD68E089a7bc95783dB1C883ed40Bc3E61d368fb6` |
| **LaunchTaxHook** (Uniswap v4)    | `0xE1A3C1a937510dDCCB3618584e32cDaB5266e0cc` |
| **LpLocker** — 365 days (ETH)     | `0xD405EE638fC2257C41bB8dB103CcC2F1c687B5a3` |
| **LpLocker** — 180 days (tUSDG)   | `0x251c72bA1EA3a62132195374699B532cCDcfc684` |
| **Treasury Safe** (tax recipient) | `0xABfd8d8Cc4D4df1C822FcC28b3c989f2f19C7B22` |

These are **testnet contracts** and are not the future mainnet VOID deployment.

The testnet launch pool uses:

| Setting                | Testnet Configuration                                                |
| ---------------------- | -------------------------------------------------------------------- |
| **Pair**               | Native ETH / VOID                                                    |
| **Pool ID**            | `0x9f7d07b9ea35f6daf95c3e2c4f4d18fad0983eba0cd465fb02c29d79a13a0e6d` |
| **Uniswap Version**    | v4, with the launch-tax hook                                         |
| **Pool Fee**           | 1%                                                                   |
| **Initial Price**      | 1 ETH = 1,000,000 VOID                                               |
| **Initial Liquidity**  | 0.2 ETH + 200,000 VOID, full range                                   |
| **LP Lock**            | 365-day locker, until 27 October 2027 11:48 UTC                      |
| **Trading Opened**     | 26 October 2026, 11:48:16 UTC                                        |
| **Current Launch Tax** | 0%                                                                   |

The launch tax applied to every buy and sell through the pool, from all wallets, measured from when trading opened:

| Time Since Open  | Launch Tax |
| ---------------- | ---------- |
| 0–5 minutes      | 50%        |
| 5–15 minutes     | 25%        |
| 15–30 minutes    | 10%        |
| After 30 minutes | 0%         |

The tax was taken in ETH and sent to the treasury Safe.

The temporary tax windows ended at **12:18 UTC on 26 October 2026**.

Swaps through this pool now pay **0% launch tax**.

{% hint style="info" %}
A fresh test deployment is required to reproduce the 50%, 25% and 10% temporary launch-tax windows.
{% endhint %}

### On-Chain Limits

These limits were added during the second round of review fixes.

#### Transaction Deadlines

Every signed deadline for:

* private trades
* public buys
* transfers
* withdrawals
* gasless intents

must be no more than **20 minutes into the future**.

```
MAX_DEADLINE_HORIZON = 1200 seconds
```


---

# 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/contracts.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.
