> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stable.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Oracles

> Oracle price feed providers on Stable, including contract addresses, supported pairs, and integration examples.

Oracles provide smart contracts with off-chain data such as asset prices. Chaos Labs operates price feeds on Stable.

## Overview table

| **Provider**                             | **Category**       | **Supported Pairs**                                           | **Docs / Get Started**                                                             | **Notes**                   |
| :--------------------------------------- | :----------------- | :------------------------------------------------------------ | :--------------------------------------------------------------------------------- | :-------------------------- |
| [**Chaos Labs**](https://chaoslabs.xyz/) | Oracle Price Feeds | BTC/USD, ETH/USD, SOL/USD, FRXUSD/USD, SFRXUSD/USD, ezETH/ETH | [https://docs.chaoslabs.xyz/oracles/docs](https://docs.chaoslabs.xyz/oracles/docs) | Live on mainnet and testnet |

## Chaos Labs

Chaos Labs provides oracle price feeds on Stable. Feed contracts expose the `IEdgePushOracle` interface documented in the [Chaos Labs EVM integration guide](https://docs.chaoslabs.xyz/oracles/docs/integration-guides/evm).

**Capabilities**

* Push-based price feeds with configurable deviation thresholds and heartbeat intervals
* `IEdgePushOracle` interface with `latestRoundData()`, `decimals()`, and `description()`
* On-chain price data for DeFi protocols, lending, and liquidation engines

### Mainnet price feed addresses

Source: [Chaos Labs push feeds dashboard](https://docs.chaoslabs.xyz/oracles/docs/dashboard/push-feeds)

| **Price Feed**    | **Contract Address**                                                                                                    | **Deviation** | **Heartbeat** |
| :---------------- | :---------------------------------------------------------------------------------------------------------------------- | :------------ | :------------ |
| **FRXUSD / USD**  | [0xAe48F22903d43f13f66Cc650F57Bd4654ac222cb](https://stablescan.xyz/address/0xAe48F22903d43f13f66Cc650F57Bd4654ac222cb) | 0.05%         | 8m            |
| **ezETH / ETH**   | [0x45D531E6BB4eF640BF4bFc1DDE832e1EDFFea8a5](https://stablescan.xyz/address/0x45D531E6BB4eF640BF4bFc1DDE832e1EDFFea8a5) | 0.05%         | 8m            |
| **SFRXUSD / USD** | [0x955998975cFDAFD0e0dc60f5A92E14fA72384AaE](https://stablescan.xyz/address/0x955998975cFDAFD0e0dc60f5A92E14fA72384AaE) | 0.05%         | 8m            |
| **ETH / USD**     | [0x163131609562E578754aF12E998635BfCa56712C](https://stablescan.xyz/address/0x163131609562E578754aF12E998635BfCa56712C) | 0.5%          | 47m           |
| **BTC / USD**     | [0x9f6aA2aB14bFF53e4b79A81ce1554F1DFdbb6608](https://stablescan.xyz/address/0x9f6aA2aB14bFF53e4b79A81ce1554F1DFdbb6608) | 0.5%          | 45m           |

### Testnet price feed addresses

| **Price Feed** | **Contract Address**                                                                                                                                 |
| :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- |
| **BTC / USD**  | [0xECA49340544541957eC64B7635418D2159616826](https://testnet.stablescan.xyz/address/0xECA49340544541957eC64B7635418D2159616826?tab=read_write_proxy) |
| **ETH / USD**  | [0x176A9536feaC0340de9f9811f5272E39E80b424f](https://testnet.stablescan.xyz/address/0x176A9536feaC0340de9f9811f5272E39E80b424f?tab=read_write_proxy) |
| **SOL / USD**  | [0x7fa367967CE7903Fc5cE25a969cb7dB792a8f6b9](https://testnet.stablescan.xyz/address/0x7fa367967CE7903Fc5cE25a969cb7dB792a8f6b9?tab=read_write_proxy) |

## Reading a price feed

Feed contracts implement `IEdgePushOracle`. The following example is adapted from the [Chaos Labs documentation](https://docs.chaoslabs.xyz/oracles/docs/integration-guides/evm).

```solidity theme={"dark"}
pragma solidity ^0.8.25;

interface IEdgePushOracle {
    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
    function decimals() external view returns (uint8);
    function description() external view returns (string memory);
}

contract OracleConsumer {
    IEdgePushOracle public oracle;

    constructor(address oracleAddress) {
        oracle = IEdgePushOracle(oracleAddress);
    }

    function getLatestPriceData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 updatedAt
        )
    {
        (roundId, answer, , updatedAt, ) = oracle.latestRoundData();
        return (roundId, answer, updatedAt);
    }
}
```

<Note>This code is from the Chaos Labs documentation and is provided for illustrative purposes. Test thoroughly before production use.</Note>

### Deploying to Stable Testnet

This assumes you have Foundry installed and a funded wallet. See the [Deploy Smart Contract](/en/tutorial/smart-contract) tutorial for full setup instructions.

1. Save the contract above to `src/OracleConsumer.sol` in a Foundry project.

2. Deploy with the ETH/USD testnet feed address:

```bash theme={"dark"}
source .env ;
forge create src/OracleConsumer.sol:OracleConsumer --broadcast --rpc-url $STABLE_TESTNET_RPC_URL --private-key $PRIVATE_KEY --constructor-args 0x176A9536feaC0340de9f9811f5272E39E80b424f
```

3. Read the latest price from your deployed contract:

```bash theme={"dark"}
cast call <DEPLOYED_ADDRESS> "getLatestPriceData()(uint80,int256,uint256)" --rpc-url $STABLE_TESTNET_RPC_URL
```

## Have an oracle integrating Stable?

Reach the team at [bizdev@stable.xyz](mailto:bizdev@stable.xyz) to be listed on this page.
