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’screateToken(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:
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).
Grant data access
To let a developer or researcher query your dataset, grant two on-chain permissions:- Data permission — On QueryEngine, call
addPermission(grantee, refinerId, tableName, columnName, price). Use the consumer’s wallet asgrantee, your dataset’srefinerId, and leavetableNameandcolumnNameblank for full-dataset access. Setpricein $VANA per query. - Compute permission — On ComputeInstructionRegistry, call
updateComputeInstruction(instructionId, dlpId, true)with the consumer’scomputeInstructionIdand your DataDAO’sdlpId. You approve each instruction once per DataDAO; after that, any user with data permission can use it. The default instruction (e.g. mainnet3, Moksha40) must also be approved once.
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
computeInstructionIdvalues differ by chain (e.g. mainnet3, Moksha40). For full query and compute flows, see Proof of Contribution.