Skip to main content
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 latestAnswer and getRoundData, 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.
Solidity
11973296778676 // This would be interpreted as 119,732.96778676 assuming 8 decimals
  • latestTimestamp() → uint256 : Returns the UNIX timestamp of the most recent price update.
Solidity
1752686835  // e.g., represents Sat, 20 Jul 2025 07:33:55 GMT
  • latestRoundData() → (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound): Returns detailed information about the latest round of price updates.
Solidity
roundId:           5699
answer:            11973296778676
startedAt:         1752686833
updatedAt:         1752686835
answeredInRound:   5699
  • decimals() → uint8: A read-only function that returns the number of decimal places used when interpreting the price.
Solidity
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.
Solidity
"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.
I