Skip to main content

Token Price Feeds

Oracle details

ChainAddress
Mainnet0x33df80cdf0c9ff686261b11263d9f4a3ccc3d07f
Testnet0x859e221ada7cebdf5d4040bf6a2b8959c05a4233

Oracle configuration

Pricing MethodologyVWAPIR
Deviation (%) & Refresh Frequency0.5% and 120 seconds
Heartbeat24h

Asset feeds

Mainnet

Asset TickergetValue(key)Asset Markets
USDTUSDT/USDUSDT markets
USDCUSDC/USDUSDC Markets
XFIXFI/USDXFI Markets

Testnet

Asset TickergetValue(key)Asset Markets
WETHWETH/USDWETH Markets
WBTCWBTC/USDWBTC Markets
USDTUSDT/USDUSDT markets
DAIDAI/USDDAI Markets
USDCUSDC/USDUSDC Markets
FRAXFRAX/USDFRAX Markets
LINKLINK/USDLINK Markets
WBNBWBNB/USDWBNB Markets
EUREUR/USDEUR Markets
XFIXFI/USDXFI Markets

How to access data

getValue Method

To consume price data, you’ll need to invoke the getValue method on the oracle contract which you can access through the DIA Oracle library or the interface. Below is an example of a contract consuming data from our oracle on CrossFi Testnet. If you pass WBTC/USD as the key, it will return the most recent price of BTC in USD with 8 decimal places (e.g. 9601458065403 is $96,014.58065403) along with the Unix timestamp of the last price update.

pragma solidity ^0.8.13;

interface IDIAOracleV2 {
    function getValue(string memory) external view returns (uint128, uint128);
}

contract DIAOracleV2Consumer{

    address immutable ORACLE = 0x859e221ada7cebdf5d4040bf6a2b8959c05a4233;

    function getPrice(string memory key)
    external
    view
    returns (
        uint128 latestPrice,
        uint128 timestampOflatestPrice
    ) {
        (latestPrice, timestampOflatestPrice) =
                 IDIAOracleV2(ORACLE).getValue(key);
    }
}

Verifiable Randomness

Oracle details

ChainAddress
Testnet0xad19b5b3a0bf2bacf028ed6cc9e3fc153cb405b6

Oracle configuration

The oracle uses drand randomness from quicknet to provide randomness on CrossFi.

How to access data

To consume randomness data, you’ll need to invoke the getLastRound method on the oracle contract. It will return the round ID of the latest update. Using this round ID, you can call getRandomValue and will receive a return value of that randomness, the round ID and the BLS signature from the drand API. Note that round IDs are used round-robin and will repeat after 1000 iterations. Refer to the Solidity guide for detailed steps on fetching random values from the oracle in your contract. You can learn more about the randomness protocol here.

Request a Custom Oracle

DIA offers highly customizable oracles that are individually tailored to each dApp’s needs. Each oracle can be customized in the following ways, including:
  • Data Sources & Asset Feeds
  • Pricing Methodologies
  • Update Triggers (Frequency, Deviation, Heartbeat, …etc)
Get a tailored oracle for your dApp, request one below:

Support

For developer assistance, connect with the DIA team directly on Discord or Telegram.
I