> For the complete documentation index, see [llms.txt](https://docs.riverai.inc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.riverai.inc/outro/satusd-oracle/dia-oracle.md).

# DIA Oracle

DIA is a decentralized oracle platform supporting thousands of assets across 50+ blockchains. For satUSD, DIA delivers high-frequency, deviation-based price updates using their battle-tested **PushOracleReceiverV2** and AggregatorV3Interface-compatible adapters, ensuring compatibility with most DeFi protocols and aggregators.

## Oracle Configuration

The satUSD price feed uses the following configuration across all chains:

<table><thead><tr><th width="272.80078125">Parameter</th><th>Value</th><th data-hidden></th></tr></thead><tbody><tr><td>Pricing Method</td><td><a href="https://www.diadata.org/docs/guides/methodologies/data-processing/price-aggregation">Median</a></td><td></td></tr><tr><td>Deviation Trigger</td><td>0.1%</td><td></td></tr><tr><td>Heartbeat</td><td>24 hours</td><td></td></tr></tbody></table>

## How to Access On-Chain

### 1. **PushOracleReceiverV2**

#### Contract Addresses

These are the main contracts to call for direct access to price data.

<table><thead><tr><th width="200.45703125">Chain</th><th>Contract Address</th><th data-hidden></th></tr></thead><tbody><tr><td>Ethereum</td><td><a href="https://etherscan.io/address/0x5e182977b8753b25C807cb0D2AE6019D3cCCC65E"><code>0x5e182977b8753b25C807cb0D2AE6019D3cCCC65E</code></a></td><td></td></tr><tr><td>BNB Chain</td><td><a href="https://bscscan.com/address/0x5612599CF48032d7428399d5Fcb99eDcc75c06A7"><code>0x5612599CF48032d7428399d5Fcb99eDcc75c06A7</code></a></td><td></td></tr><tr><td>Base</td><td><a href="https://basescan.org/address/0xbdc148d32da286e0542E23f4eD769Ee30a30eDA9"><code>0xbdc148d32da286e0542E23f4eD769Ee30a30eDA9</code></a></td><td></td></tr><tr><td>Arbitrum</td><td><a href="https://arbiscan.io/address/0x8b247C9d088755A211d73b2C70f87FE9Bf8bf34d"><code>0x8b247C9d088755A211d73b2C70f87FE9Bf8bf34d</code></a></td><td></td></tr></tbody></table>

#### Solidity:&#x20;

```solidity
pragma solidity 0.8.29;

interface IPushOracleReceiverV2 {
    function latestAnswer() external view returns (int256);
}

contract OracleConsumer {

    address immutable ORACLE = 0x5e182977b8753b25C807cb0D2AE6019D3cCCC65E;

    function getSatUSDPrice() external view returns (uint128 price) {
        price = IPushOracleReceiverV2(ORACLE).latestAnswer();
        // Note: `price` has 8 decimals (e.g., 99882732 = $0.99882732)
    }
}
```

### 2. Adapter Contracts (Chainlink-Compatible)

For protocols expecting a Chainlink-style interface via AggregatorV3Interface.

#### Contract Addresses

<table><thead><tr><th width="200.45703125">Chain</th><th>Contract Address</th><th data-hidden></th></tr></thead><tbody><tr><td>Ethereum</td><td><a href="https://etherscan.io/address/0x02eabd9c59fca5b38e5a415e6172f93bf30fb2af"><code>0x02eaBD9c59fCa5B38E5A415e6172F93BF30fB2af</code></a></td><td></td></tr><tr><td>BNB Chain</td><td><a href="https://bscscan.com/address/0x1082679a55fB34B967a006080204b597CfA0605C"><code>0x1082679a55fB34B967a006080204b597CfA0605C</code></a></td><td></td></tr><tr><td>Base</td><td><a href="https://basescan.org/address/0x4ae9a0a4c02ec4ffb7f231717df85d755192884a"><code>0x4aE9A0a4c02Ec4ffb7F231717DF85D755192884A</code></a></td><td></td></tr><tr><td>Arbitrum</td><td><a href="https://arbiscan.io/address/0x6f076AddEf5e393F23988B0f61b02d0297022fa4"><code>0x6f076AddEf5e393F23988B0f61b02d0297022fa4</code></a></td><td></td></tr></tbody></table>

#### Solidity: Use DIA’s adapter contracts via the `AggregatorV3Interface` interface:

```solidity
interface AggregatorV3Interface {
    function latestRoundData() external view returns (
        uint80 roundID,
        int256 answer,
        uint256 startedAt,
        uint256 updatedAt,
        uint80 answeredInRound
    );
}
```
