Skip to main content

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 provide smart contracts with off-chain data such as asset prices. RedStone operates price feeds on Stable.

Overview table

ProviderCategorySupported PairsDocs / Get StartedNotes
RedStoneOracle Price FeedsBTC, ETH, USDT, USDC, PYUSD, XAUt, frxUSD, FXS, LBTC, sfrxETH/ETH, sfrxUSD, SolvBTC, sthUSD, thBILL, weETHhttps://docs.redstone.finance/docs/dapps/redstone-push/Live on mainnet

RedStone

RedStone provides oracle price feeds on Stable through its Push model. Feed contracts expose the Chainlink-compatible AggregatorV3Interface. Capabilities
  • Push-based price feeds with configurable deviation thresholds and heartbeat intervals
  • Chainlink-compatible AggregatorV3Interface with latestRoundData(), decimals(), and description()
  • Coverage for blue-chip assets, stablecoins, LSTs, LRTs, and yield-bearing / fundamental-priced assets

Mainnet price feed addresses

Source: RedStone push feeds dashboard

Reading a price feed

Feed contracts implement the Chainlink-compatible AggregatorV3Interface. The same consumer pattern used for any Chainlink-style price feed applies.
pragma solidity ^0.8.25;

interface AggregatorV3Interface {
    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 {
    AggregatorV3Interface public oracle;

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

    function getLatestPriceData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 updatedAt
        )
    {
        (roundId, answer, , updatedAt, ) = oracle.latestRoundData();
        return (roundId, answer, updatedAt);
    }
}
RedStone push feeds on Stable are currently available on mainnet only. Always verify on-chain updatedAt against your application’s freshness tolerance before consuming a price.

Reading a feed directly

You can read any RedStone feed without deploying a consumer contract. The following call reads the ETH/USD feed:
cast call 0x457BE3C697c644bF329C2C3ea79EbF1D254d603a "latestRoundData()(uint80,int256,uint256,uint256,uint80)" --rpc-url https://rpc.stable.xyz

Deploying a consumer to Stable mainnet

This assumes you have Foundry installed and a funded wallet. See the Deploy Smart Contract tutorial for full setup instructions.
  1. Save the contract above to src/OracleConsumer.sol in a Foundry project.
  2. Deploy with the BTC/USD mainnet feed address:
source .env ;
forge create src/OracleConsumer.sol:OracleConsumer --broadcast --rpc-url $STABLE_MAINNET_RPC_URL --private-key $PRIVATE_KEY --constructor-args 0x687103bA8CC2f66C94696182Ef410400Da45fb24
  1. Read the latest price from your deployed contract:
cast call <DEPLOYED_ADDRESS> "getLatestPriceData()(uint80,int256,uint256)" --rpc-url $STABLE_MAINNET_RPC_URL

Have an oracle integrating Stable?

Reach the team at bizdev@stable.xyz to be listed on this page.
Last modified on May 27, 2026