> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vana.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Contract addresses

> Contract addresses for DLP and data application contracts.

This page lists contract addresses for DLP and data application contracts. The same addresses apply on **Moksha** (testnet) and **Mainnet**. For data portability, staking, chain utilities (e.g. Multicall3), ABIs, and chain details, see [Core contracts](/network/smart-contracts-addresses).

## DLP template contracts (DAT)

Use these templates to deploy VRC-20–compatible data tokens (DATs). **DATFactory** deploys new token instances from the **DAT** implementation. Optional extensions (**DATPausable**, **DATVotes**) exist as separate templates.

| Contract        | Purpose                                                                | Address                                      |
| --------------- | ---------------------------------------------------------------------- | -------------------------------------------- |
| **DAT**         | Base Data Access Token implementation (ERC-20 compatible, upgradeable) | `0xA706b93ccED89f13340673889e29F0a5cd84212d` |
| **DATFactory**  | Deploys new DAT instances (and optional DATVotes/DATPausable)          | `0x40f8bccF35a75ecef63BC3B1B3E06ffEB9220644` |
| **DATPausable** | Template for pausable DAT extensions                                   | `0xe69FE86f0B95cC2f8416Fe22815c85DC8887e76e` |
| **DATVotes**    | Template for vote-delegation (governance) extensions                   | `0xaE04c8A77E9B27869eb563720524A9aE0baf1831` |

## Registries and data access

| Contract            | Address                                      |
| ------------------- | -------------------------------------------- |
| DataRegistry        | `0x8C8788f98385F6ba1adD4234e551ABba0f82Cb7C` |
| DataRefinerRegistry | `0x93c3EF89369fDcf08Be159D9DeF0F18AB6Be008c` |
| QueryEngine         | `0xd25Eb66EA2452cf3238A2eC6C1FD1B7F5B320490` |
| VanaTreasury        | `0x94a1E56e555ac48d092f490fB10CDFaB434915eD` |

## Compute and Proof of Contribution

| Contract                      | Address                                      |
| ----------------------------- | -------------------------------------------- |
| ComputeInstructionRegistry    | `0x5786B12b4c6Ba2bFAF0e77Ed30Bf6d32805563A5` |
| ComputeEngine                 | `0xb2BFe33FA420c45F1Cf1287542ad81ae935447bd` |
| TeePool (deprecated)          | `0x3c92fD91639b41f13338CE62f19131e7d19eaa0D` |
| TeePoolPhala                  | `0xE8EC6BD73b23Ad40E6B9a6f4bD343FAc411bD99A` |
| TeePool (ephemeral-standard)  | `0xe124bae846D5ec157f75Bd9e68ca87C4d2AB835A` |
| TeePool (persistent-standard) | `0xe8bB8d0629651Cf33e0845d743976Dc1f0971d76` |
| TeePool (persistent-gpu)      | `0x1c346Cd74f8551f8fa13f3F4b6b8dAE22338E6a9` |
| TeePool (dedicated-standard)  | `0xf024b7ac5E8417416f53B41ecfa58C8e9396687d` |
| TeePool (dedicated-gpu)       | `0xB1686FA9620bBf851714d1cB47b8a4Bf4664644E` |

## Using these contracts

### Deploy a token via DATFactory

Deploy a new VRC-20 token for your DataDAO by calling **DATFactory**’s `createToken(params)` from the block explorer—no local setup required. One transaction deploys the token, creates vesting wallets for each schedule, and mints tokens.

**Parameters:** `datType` (0 = default with blocklisting, 1 = governance/Votes, 2 = Pausable; use 1 for DataDAOs), `name`, `symbol`, `owner`, `cap` (max supply, 18 decimals), `schedules` (array of vesting params), `salt` (use `0x00...00` unless you need a specific address).

**Per vesting schedule:** `beneficiary` (address), `start` (Unix timestamp), `cliff` and `duration` (seconds), `amount` (tokens, 18 decimals).

Example `schedules`:

```json theme={null}
[
  { "beneficiary": "0x...", "start": 1717977600, "cliff": 15778463, "duration": 31556926, "amount": "500000000000000000000000" },
  { "beneficiary": "0x...", "start": 1717977600, "cliff": 15778463, "duration": 63113852, "amount": "250000000000000000000000" }
]
```

**Steps:** In the block explorer, open **DATFactory** at the address above, go to **Write as Proxy**, connect your wallet, and call `createToken` with your params. In the transaction logs, find `DATCreated` for the new token address and `VestingWalletCreated` for each vesting contract. Then associate the token with your DataDAO ([DLP quickstart](/data-applications/dlp-quickstart)).

### Grant data access

To let a developer or researcher query your dataset, grant two on-chain permissions:

1. **Data permission** — On **QueryEngine**, call `addPermission(grantee, refinerId, tableName, columnName, price)`. Use the consumer’s wallet as `grantee`, your dataset’s `refinerId`, and leave `tableName` and `columnName` blank for full-dataset access. Set `price` in \$VANA per query.
2. **Compute permission** — On **ComputeInstructionRegistry**, call `updateComputeInstruction(instructionId, dlpId, true)` with the consumer’s `computeInstructionId` and your DataDAO’s `dlpId`. You approve each instruction once per DataDAO; after that, any user with data permission can use it. The default instruction (e.g. mainnet `3`, Moksha `40`) must also be approved once.

Under the current model, 80% of the query fee goes to your DataDAO treasury.

### Notes

* Only the **DLP template contracts (DAT)** section above uses shared templates and a factory; those addresses are not individual pool tokens. For a specific DataDAO’s token address, use that DataDAO’s configuration or the block explorer. The registries, QueryEngine, ComputeEngine, TeePools, and other addresses are live contract deployments.
* Fetch current ABIs from the block explorer or the official Vana deployment repository.
* Default `computeInstructionId` values differ by chain (e.g. mainnet `3`, Moksha `40`). For full query and compute flows, see [Proof of Contribution](/data-applications/proof-of-contribution).
