VRC-20 Data Tokens
Powering the economic engine for DataDAOs and their communities.
The VRC-20 standard provides a framework for tokenizing datasets. VRC-20 tokens are ERC-20 tokens with additional DataFi functionalities for governing dataset access and economics.
Core Functions
VRC-20 tokens enable three core functions:
- Incentivize Contribution: Rewards users for providing verified data
- Govern Data Access: Manage permissions and usage policies onchain
- Enable Community Governance: Token holders vote on dataset policies
Disambiguation: VRC-20, DAT, and ERC-20
- VRC-20 is a standard, not an implementation. This standard defines rules around which criteria ERC-20 tokens should fulfill to effectively represent dataset value, provide data access permission governance utilities, and incentivize data contributors. Not all aspects are writable onchain, for example the existence of public documentation on the token's role in their data ecosystem.
- DAT (Data Access Tokens) are a minimally VRC-20 compliant ERC-20 template implementation. They are ERC-20 tokens that are capped, burnable, and include an address blocking feature controlled by the token admin. For more information on how this is implemented on the smart contract level, please visit the VRC-20 (DAT) developer reference page.
- ERC-20 tokens are the generic fungible-token interface defined by EIP-20, exposing only balance/transfer/allowance mechanics (
totalSupply
,balanceOf
,transfer
,approve
,transferFrom
,allowance
) and carrying no built-in rules about supply caps, governance, or dataset linkage.
How VRC-20 Tokens Work
A VRC-20 token is a fully ERC-20 compatible token that is verifiably linked to a specific Data Liquidity Pool (DLP), representing the economic value and governance rights over its underlying dataset. For DeFi integrations, you can treat a VRC-20 token just like any other ERC-20, but you can also query its underlying data metrics for more advanced use cases.
The Onchain Link: How a Token is Tied to a Dataset
A token officially becomes a VRC-20 when it is registered as the tokenAddress
within a DLP's entry in the DLPRegistry
contract. This creates a permanent, onchain link between the token and the dataset.
You can verify this link for any DLP on Vanascan by looking up the dlps(dlpId)
, dlpsByAddress(dlpAddress)
, or dlpsByName(dlpName)
function on the DLPRegistry
contract (0x4D5...). The tokenAddress
field will show the official VRC-20 for that DLP.
How to Query DLP Identifiers and Token via Subgraph
Vana SubgraphWe are preparing to open-source our subgraph. The repository link and access to deployed Subgraphs on "The Graph" will be available here soon. It is the canonical source of truth for all ecosystem analytics.
In the meantime, explore our hosted mainnet subgraph (not supported for use in production systems):
https://api.goldsky.com/api/public/project_cm168cz887zva010j39il7a6p/subgraphs/vana/main/gn
Tip: Look for the "Documentation Explorer" icon in the top left
The following example query outputs relevant onchain DLP identifiers (id, address, name), the current status, and token address (if set). These identifiers are commonly used as input parameters with various onchain smart contract methods.
# Find the DLP identifiers and token address required for onchain smart contract function calls
query GetAllDLPIdentifiers {
dlps {
id
address
name
status # 1 = Registered, 2 = Eligible for rewards, 3 = Deregistered
token
}
}
Measuring the Data Backing a VRC-20 Token
While the onchain link is simple, understanding the quality and activity of the data backing a token requires more context. The recommended method for querying data metrics is to use a subgraph instance that indexes the data lifecycle.
How to Query Key Metrics
1. How many unique contributors does a token have?
You can find the number of unique data contributors backing a token by querying for its parent DLP in the Vana Subgraph.
# Find the total unique contributors for the DLP linked to a token
query GetUniqueContributors {
# Query for the DLP using its ID (e.g., "9" for MindDAO)
dlp(id: "9") {
name
totals {
uniqueFileContributors
}
}
}
2. How much is a dataset being used?
You can measure data usage by summing the data access fees paid to a DLP's refiners in the Vana Subgraph.
# Get all data access payments for a specific DLP's refiners
query GetDataAccessFees {
# Query for payments where the refiner belongs to DLP "9"
paymentReceiveds(where: {refiner_: {dlp: "9"}}) {
amount # in VANA, with 18 decimals
receivedAt # Unix timestamp
}
}
3. Historical Performance Ratings (by Epoch)
The Vana Subgraph also tracks historical performance ratings by epoch for deeper analyses.
# Get all measured performances by Epoch
query GetHistoricalPerformances {
# For DLP id "10"
dlp(id:"10"){
# Query all performance metrics (total score, trading volume, ...) with Epoch id
performances{
totalScore
epoch {
id
}
tradingVolume
uniqueContributors
dataAccessFees
}
}
}
4. How Contributed Data is Verified
Each DLP specifies its own proof-of-contribution (PoC) process on-chain to ensure data integrity. You can verify the rules governing any dataset. There are two primary ways to do this.
A. Finding a DLP's Primary Proof-of-Contribution Script
Most DLPs created with the standard DLP template store their primary proof-of-contribution script URL directly in their main contract. This is the script used for most new contributions.
- Example: For the UNWRAPPED DataDAO, you can navigate to their
dlpAddress
contract on Vanascan (0xFb3...) and call theproofInstruction
read method to get the URL of their current proof-of-contribution script.
B. Verifying the Proof-of-Contribution for a Specific Contribution
The proof-of-contribution script used for each data contribution is recorded immutably. The most direct way to find the script for a specific piece of data is to query the DataRegistry
contract. To do this through Vanascan:
- Navigate to the
DataRegistry
contract on Vanascan (0x8C...). - Find and expand the
fileProofs
read method. - Enter the
fileId
of the contribution you want to inspect. For theindex
, enter0
to get the first proof for that file. - Click "Query." The result will be a
Proof
struct containing several fields. Theinstruction
field holds the URL of the Proof-of-Contribution script that was used to validate that specific file.
Data Access and VRC-20 Tokens
For data access, VRC-20 tokens may be used to pay for queries. Currently on mainnet, data access fees are paid in $VANA, and 80% of that fee goes to the DLP's treasury. Future versions will incorporate the VRC-20 token directly into this payment flow.
Integrating VRC-20 Tokens into DeFi
For any standard DeFi application (DEX, bridge, etc.), you can integrate a VRC-20 token just like any other ERC-20 token.
For more advanced DataFi applications (e.g., a lending protocol that accepts data as collateral), you can use the subgraph queries above to assess the fundamental value of the token. For example, your smart contract could use an oracle to check that a VRC-20 token is backed by a DLP with a minimum of 10,000 contributors and has processed at least one data access payment in the last month before accepting it as collateral.
Onchain Token Examples
Existing onchain VRC-20 examples include (but are not limited to):
Updated 14 days ago