Oracles provide smart contracts with off-chain data such as asset prices. RedStone operates price feeds on Stable.
Overview table
| Provider | Category | Supported Pairs | Docs / Get Started | Notes |
|---|
| RedStone | Oracle Price Feeds | BTC, ETH, USDT, USDC, PYUSD, XAUt, frxUSD, FXS, LBTC, sfrxETH/ETH, sfrxUSD, SolvBTC, sthUSD, thBILL, weETH | https://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.
-
Save the contract above to
src/OracleConsumer.sol in a Foundry project.
-
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
- 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.