Push Price Oracles
Chaos push oracles enable smart contracts to access reliable and decentralized price data using an efficient push-based mechanism. With support for multi-signature verification and an upgradable architecture, this oracle adheres to industry-standard interfaces, making it easy for projects to integrate and access data securely.
Key Features
Here are some of the core features push oracles offers:
- Dedicated contract per feed: Each price feed has its own dedicated contract with a unique address for easy querying and integration.
- Trusted multi-signature verification: Ensures data integrity by requiring a majority approval from trusted oracle nodes.
- Upgradable architecture: Built using the UUPS proxy pattern for seamless updates.
- Industry standard interface: Implements standard oracle functions like
latestAnswerandgetRoundData, compatible with widely used oracle solutions.
Contract Overview
ChaosPushOracle is a smart contract that serves as an oracle for price updates. Rather than depending on a centralized authority, it leverages a decentralized network of node operators to manage and push price updates on-chain.
Price updates are triggered based on two key parameters configured per feed:
- Heartbeat: The maximum allowed time between updates (e.g., 1 hour).
- Deviation Threshold: The minimum price change required to trigger a new update (e.g., 1%).
For instance, a BTC/USD feed may be configured with: - Heartbeat: 1 hour - Deviation Threshold: 1%
This means the contract will push an on-chain update: - If the price changes by 1% or more from the previously recorded value (deviation met), or - If 1 hour has passed since the last update (heartbeat met) — even if price remains the same.
Feed: BTC/USD
Contract Address: 0xabc123...
Last Reported Price: 29,300.00
Current Update: 29,750.00 (deviation > 1%, so update is triggered)Functions
latestAnswer() → int256: Returns the most recent price posted to the oracle.
11973296778676 // This would be interpreted as 119,732.96778676 assuming 8 decimalslatestTimestamp() → uint256: Returns the UNIX timestamp of the most recent price update.
1752686835 // e.g., represents Sat, 20 Jul 2025 07:33:55 GMTlatestRoundData() → (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound): Returns detailed information about the latest round of price updates.
roundId: 5699
answer: 11973296778676
startedAt: 1752686833
updatedAt: 1752686835
answeredInRound: 5699decimals() → uint8: A read-only function that returns the number of decimal places used when interpreting the price.
8 // Means that the value 11973296778676 should be interpreted as 119,732.96778676.description() → string: A read-only function that returns the human-readable name of the feed.
"BTC / USD" // Indicates this feed provides the price of BTC in USD.For deeper integration details, refer to the EVM and SVM integration guide.
To explore a full list of available feeds, and associated contract addresses, visit the feeds dashboard.