> For the complete documentation index, see [llms.txt](https://docs.pharos.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pharos.xyz/tooling-and-infrastructure/oracles/chainlink-pe.md).

# Chainlink Push Engine Feeds

## Overview

Pharos has deployed Chainlink self-managed price feeds using the Chainlink Runtime Environment (CRE). A CRE workflow periodically fetches price data from the Chainlink Data Streams API, checks deviation and heartbeat thresholds, and pushes updates on-chain to a central cache contract.

Each price pair has a dedicated proxy contract that exposes the standard Chainlink Data Feeds interface, allowing any on-chain consumer to read the latest price via `latestAnswer()`.

## Version Update Notes

| Version | Time       | Note                                                                                                              |
| ------- | ---------- | ----------------------------------------------------------------------------------------------------------------- |
| V3      | 2026-06-24 | - Add `WSRUSD/RUSD` pair (Only under PriceFeed 2.0)                                                               |
| V2      | 2026-05-28 | <p>- <code>latestRoundData()</code> interface support<br>- PriceFeed contracts' addresses are updated</p>         |
| V1      | -          | - Supports 10 feed contracts and provides the `latestAnswer()`, `latestTimestamp()`, and `getFeedId()` interfaces |

## Common Settings

| Parameter                    | Value        |
| ---------------------------- | ------------ |
| Decimals                     | 18           |
| PriceFeed DeviationThreshold | 0.5          |
| PriceFeed Heartbeat          | 3600 seconds |

## PriceFeed 2.0

> **Note:** Self-Managed Feeds are pull-based and do not use a round-based aggregation model. As a result:
>
> * `roundId` and `answeredInRound` are always `0`. There are no OCR aggregation rounds — prices are written directly by CRE workflows.
> * `startedAt` and `updatedAt` both return the observation timestamp of the latest report. They are identical and do not represent distinct lifecycle events of a round.

> **Note:** When consuming price data from the cache, always verify that the returned data is sufficiently fresh for your use case.
>
> Use `latestAnswerTimestampForFeed` (or `latestReportTimestamp` on the proxy) to retrieve the timestamp alongside the answer.

> **Note:** The stored timestamp reflects the **observations timestamp** of the report — the time at which the price was observed by the Chainlink DON — not the time the transaction was included on-chain. Compare this value against the current block timestamp and enforce a maximum acceptable staleness threshold appropriate for your application.

## Pacific Mainnet

| Pair                  | Feed ID                                                            | Contract Address                           |
| --------------------- | ------------------------------------------------------------------ | ------------------------------------------ |
| SelfManagedFeedsCache | All feeds                                                          | 0xc71f7d98d3d9a000Fdfe307fBdb9d94AbD56424B |
| PROS/USD              | 0x0003f73a1abb2eec1ecdde915c659cbb8f0cbb030156b75dd401fbfd5281e246 | 0x9356C87a48F913d11C87a0d4b8cD16CD04624BF3 |
| BTC/USD               | 0x00039d9e45394f473ab1f050a1b963e6b05351e52d71e507509ada0c95ed75b8 | 0x6BFcd14b164de6c8C4dA2d065d511055A589EB20 |
| ETH/USD               | 0x000362205e10b3a147d02792eccee483dca6c7b44ecce7012cb8c6e0b68b3ae9 | 0x092ff0175Be8B2e83Ca5740d3EB13C6225901fa7 |
| WETH/USD              | Same as ETH/USD                                                    | Same as ETH/USD                            |
| WBTC/USD              | 0x00034a95e798013fd8bc6ac56707488e1c4622e5dffa9f3c2fe99f8105b4fa5b | 0x22E1db75084B7f0393896bc7046E64eFdC34b729 |
| USDT/USD              | 0x0003a910a43485e0685ff5d6d366541f5c21150f0634c5b14254392d1a1c06db | 0x84B06e38C70DD1f0039bA25E017CAe7cFcDE53b0 |
| USDC/USD              | 0x00038f83323b6b08116d1614cf33a9bd71ab5e0abf0c9f1b783a74a43e7bd992 | 0x8d08eA83A55ad1e805b5660F5eC76C99C6aF5eaf |
| LINK/USD              | 0x00036d7a1251e3f67d6658466b5e9e7fe8418af7feac9567ff322bff95cc2401 | 0xCb87D7B02AC34B0aC5C3472467AB67E1de655C0A |
| BNB/USD               | 0x000335fd3f3ffa06cfd9297b97367f77145d7a5f132e84c736cc471dd98621fe | 0x2eaB341Db05503c73A1274f1EFbD5d4560767229 |
| SOL/USD               | 0x0003b778d3f6b2ac4991302b89cb313f99a42467d6c9c5f96f57c29c0d2bc24f | 0x9c9FccaEf0851298321B813Ce2530c67e20F9C10 |
| XRP/USD               | 0x0003c16c6aed42294f5cb4741f6e59ba2d728f0eae2eb9e6d3f555808c59fc45 | 0x43CeBa953FF0165840f35342F6a6Bc1B923bc5FF |
| WSRUSD/USD            | 0x0007c129e624689953a2636c014531b2f0bd0c15f9a22211f53023354f309fa6 | 0xb5779919e2F183e59A34140331F7779cbFF1d1BC |

## Atlantic Testnet

| Pair                  | Feed ID                                                            | Contract Address                           |
| --------------------- | ------------------------------------------------------------------ | ------------------------------------------ |
| SelfManagedFeedsCache | All feeds                                                          | 0x5456fD07A1622d33969f833d52aA5AD2c68C3Fa2 |
| PROS/USD              | 0x00037de4af3cb4fd0d82eed58a43ec144809f7fa7b4c6508eb628ad6d4d8b363 | 0x67488Fac9Bc4174a53a485b11F2066498Cd34b3A |
| BTC/USD               | 0x00037da06d56d083fe599397a4769a042d63aa73dc4ef57709d31e9971a5b439 | 0x82d0e03ea6d94120B92EA4Ea236DcFA273D42994 |
| ETH/USD               | 0x000359843a543ee2fe414dc14c7e7920ef10f4372990b79d6361cdc0dd1ba782 | 0xCd47D1843f3D6313836303fE1434BA26D257d500 |
| WETH/USD              | Same as ETH/USD                                                    | Same as ETH/USD                            |
| WBTC/USD              | 0x0003986bae710e410e6a6ec824db9ac91f97f6dd47fc5b28d028c14e825c5891 | 0x6F24f8bDeF2870aCa886fb3Fbc04919B0B46F993 |
| USDT/USD              | 0x00032874077216155926e26c159c1c20a572921371d9de605fe9633e48d136f9 | 0x2f7796B346d01a3f2264Ff0D93dDdFF8680b8B66 |
| USDC/USD              | 0x0003dc85e8b01946bf9dfd8b0db860129181eb6105a8c8981d9f28e00b6f60d9 | 0xDF6afcf662345Ea29ceACa6DA06141d828c516EA |
| LINK/USD              | 0x00036fe43f87884450b4c7e093cd5ed99cac6640d8c2000e6afc02c8838d0265 | 0xc88944EEF085BCb1214a05C1f591CC05E94B904D |
| BNB/USD               | 0x000387d7c042a9d5c97c15354b531bd01bf6d3a351e190f2394403cf2f79bde9 | 0xaf5C639f95C98414E168E5D2F486409Fc35c1743 |
| SOL/USD               | 0x0003d338ea2ac3be9e026033b1aa601673c37bab5e13851c59966f9f820754d6 | 0x87766CFbf906722307F9CF1B3d6E329C87D37189 |
| XRP/USD               | 0x00035e3ddda6345c3c8ce45639d4449451f1d5828d7a70845e446f04905937cd | 0xbA64753e82cFC24310BBAF16d33A56C9D8DD6ff1 |
| WSRUSD/USD            | 0x000706ad7092fdc2310335a82828efe1d4c0220e5bf0fc46100da431f3433743 | 0x045fE9F80ac65c2702985a889A6a500D9fA20897 |

## Contract Interface

```solidity
/// @notice Get the latest answer
function latestAnswer() external view returns (int256);

/// @notice Get the latest answer
function latestTimestamp() external view returns (uint256);

/// @return feedId The Feed ID associated with this proxy
function getFeedId() external view returns (bytes32 feedId);
```


---

# 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.pharos.xyz/tooling-and-infrastructure/oracles/chainlink-pe.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.
