Skip to main content

Oracle details

WBTC, DOT, USDT and USDC oracle

ChainAddress
Mainnet0xdee629af973ebf5bf261ace12ffd1900ac715f5e
Testnet0xc756bd338a97c1d2faab4f13b5444a08a1566917

tBTC, Aave, ETH, wstETH, sUSDs, & sUSDe oracle

ChainAddress
Mainnet0x48ae7803cd09c48434e3fc5629f15fb76f0b5ce5
Testnet0x5d8320f3ced9575d8e25b6f437e610fc6a03bf52

Oracle configuration

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

Asset feeds

Mainnet

Asset TickerAdapter AddressAsset Markets
WBTC0xeDD9A7C47A9F91a0F2db93978A88844167B4a04fWBTC markets
DOT0xFBCa0A6dC5B74C042DF23025D99ef0F1fcAC6702DOT markets
USDT0x8b0DDfB8F56690eAde9ECa23a7d90E153C268d5BUSDT markets
USDC0x17711BE5D63B2Fe8A2C379725DE720773158b954USDC markets
tBTC0xe5AcDfB0d5EC5cE34F7448B41ef4a97c4e83D9c1tBTC markets
Aave0x9E85d33FD87342762710FB4a1471df1Dc7bb5f8CAave markets
ETH0x1AF549Fe19A9B73D094173C41e18BF7F357F594bETH markets
wstETH0x52bBB0BC38C42D60b24EBF0C617E8218D2aB6d36wstETH markets
sUSDs0x4b32bfFC6aCD751446E79e8687ef3815fD7924FDsUSDs markets
sUSDe0x22CDEa305Cee63D082E79F8C5Db939EEcD0265D0sUSDe markets

Testnet

Asset TickerAdapter AddressAsset Markets
WBTC0xC9cCBe99bdD9538871f9756Ca5Ea64C2267cb0a7WBTC markets
DOT0x422E745797EC0Ef399c17cE3E2348394F2944727DOT markets
USDT0xb4aC9f0E6E207D5d81B756F8aF6efe3fe7B0E72cUSDT markets
USDC0xEE7aFb45c094DC9fA404D6A86A7d795d4aA33D28USDC markets
tBTC0x9f7abE73e656DB45F56B1d3755940CB3fc82FcaatBTC markets
Aave0xC9E1415Eb64281aD449f50C454873d92F312d6fEAave 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 the oracle on Hydration testnet using the IDIAOracleV2 interface. If you pass BTC/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 = 0xc756bd338a97c1d2faab4f13b5444a08a1566917;

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

Adapter contracts

To consume price data from our oracle, you can use the adapter smart contract located at the adapter address for each asset. This will allow you to access the same methods on the AggregatorV3Interface such as getRoundData & latestRoundData. You can learn more here. This is a sample contract for consuming the WBTC/USD price feed on Hydration mainnet:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

interface DiaAssetSpecificCallingConvention {
    function latestRoundData() external view returns (
        uint80 roundId,
        int256 answer,
        uint256 startedAt,
        uint256 updatedAt,
        uint80 answeredInRound
    );
}

contract DIAOracleSample {
    address wbtcAdapter = 0xeDD9A7C47A9F91a0F2db93978A88844167B4a04f;

    function getWBTCLatestPrice() external view returns (
        uint128 latestPrice,
        uint128 timestampOflatestPrice
    ) {
        // Call the Chainlink adapter's latestRoundData function
        (, int256 answer, , uint256 updatedAt, ) =
            DiaAssetSpecificCallingConvention(wbtcAdapter).latestRoundData();

        latestPrice = uint128(uint256(answer));
        timestampOflatestPrice = uint128(updatedAt);

        return (latestPrice, timestampOflatestPrice);
    }
}

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.