> For the complete documentation index, see [llms.txt](https://docs.chiliz.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chiliz.com/develop/advanced/get-asset-and-fan-token-prices.md).

# Get on-chain price feeds

Chiliz Chain provides an on-chain, institutional-grade price feed system that delivers reliable, tamper-resistant asset prices directly to smart contracts. It implements the **Chainlink AggregatorV3Interface**: any dApp already integrated with Chainlink data feeds can connect with minimal changes.

Price data is sourced from multiple major centralised exchanges, aggregated via VWAP (Volume Weighted Average Price), filtered for outliers, and pushed on-chain by a permissioned signer in a fully automated, high-frequency pipeline.

## How It Works

The oracle system is built as a three-stage off-chain pipeline that continuously pushes validated prices into on-chain contracts.

```mermaid
flowchart LR
    subgraph pipeline["Off-chain Pipeline"]
        direction LR
        FETCHER --> AGGREGATOR --> SIGNER
    end
    SIGNER --> pricefeed["Chiliz Chain\nPriceFeed Contracts"]
```

**Stage 1: Fetcher**\
Pulls real-time market data from centralised exchanges via WebSocket streams (Binance, Bybit, Bitget, Mexc, OKX, BingX) and REST polling (Binance, Bybit, Bitget, Gate, Coinex), plus subgraph queries (FanX). All fetched prices are stored in an internal cache, ready for the Aggregator.

**Stage 2: Aggregator**\
Applies VWAP calculation, ensuring higher-liquidity venues are given more weight, then filters for outliers. Decides whether to submit an update on-chain based on two rules:

* **Deviation threshold**: an update is submitted if the aggregated price has moved beyond a configured percentage (e.g. 0.5%) from the last on-chain value.
* **Heartbeat**: even if the price hasn't moved beyond the deviation threshold, an update is forced once the maximum time interval has elapsed. This guarantees the feed is never stale.

**Stage 3: Signer**\
Receives validated price jobs from the Aggregator and submits them on-chain via Fireblocks, an institutional-grade signing solution. The Signer only acts when the Aggregator says a price is ready.

## Contract System

| Contract                | Role                                                                                                                                                  |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| **PriceFeed**           | One contract per trading pair. This is the contract your dApp reads from. Implements Chainlink AggregatorV3Interface.                                 |
| **OracleFactory**       | Registry and manager. Holds the authoritative mapping from pair symbol (e.g. `"PSG/USDT"`) to oracle address.                                         |
| **OracleFactoryReader** | Read-only convenience contract. Fetch all active oracle addresses, resolve multiple pairs, or check health status across the system in a single call. |

The oracle contracts have been audited by [Halborn](https://www.halborn.com/audits/chiliz/oracle-contracts-40e905) (January 2026).

## Contract Addresses

Network parameters for both Mainnet and Testnet are available in the [Developer Toolbox](/quick-start/developer-toolbox.md).

{% tabs %}
{% tab title="Chiliz Chain Mainnet" %}

<table><thead><tr><th width="253">Contract</th><th>Address</th></tr></thead><tbody><tr><td>OracleFactory</td><td><code>Coming soon...</code></td></tr><tr><td>OracleFactoryReader</td><td><code>Coming soon...</code></td></tr></tbody></table>
{% endtab %}

{% tab title="Spicy Testnet" %}

<table><thead><tr><th width="253">Contract</th><th>Address</th></tr></thead><tbody><tr><td>OracleFactory</td><td><code>0x824A1C121DD4baeA7f074f829294Af7DD10D9723</code></td></tr><tr><td>OracleFactoryReader</td><td><code>0x8908cd1586e90b399Dbc160Be98396172ef2F378</code></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

The [Price Oracle Tracker](https://price-oracle-tracker.vercel.app/?network=mainnet) shows all available pairs with live prices, decimals, heartbeat parameters, and individual contract addresses.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.chiliz.com/develop/advanced/get-asset-and-fan-token-prices.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
