Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pages/price-feeds/how-pyth-works/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"pythnet": "Pythnet",
"oracle-program": "Oracle Program",
"cross-chain": "Cross-chain",
"why-update-prices": "Why Update Prices",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this could go up a level (so it shows up in the nav menu for Understanding Pyth) because this is a pretty common question

"fees": "Fees",
"hermes": "Hermes",
"price-aggregation": "Price Aggregation",
Expand Down
17 changes: 17 additions & 0 deletions pages/price-feeds/how-pyth-works/why-update-prices.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Why Update Prices

Pyth uses a pull-based oracle model. Unlike traditional push oracles that automatically update prices on-chain at regular intervals, Pyth requires users to explicitly update the on-chain price before reading it.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uses a pull oracle model -- we don't say "pull-based"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pls learn this for future references


This design offers several advantages:

- **Lower costs**: You only pay for price updates when you need them
- **Lower latency**: You can fetch the latest price update directly from Pyth's low-latency oracle network and submit it on-chain immediately
- **Flexibility**: Different applications can update prices at different frequencies based on their needs

In the Pull integration pattern, your contract must:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no caps for Pull here


1. Accept `priceUpdate` data from the caller (fetched from [Hermes](./hermes))
2. Call `updatePriceFeeds()` to submit this data on-chain before reading prices
3. Pay a small fee for each update (calculated via `getUpdateFee()`)

If you don't update the price or if the on-chain price becomes too stale, calls to `getPriceNoOlderThan()` will revert with a `StalePrice` error. See [how to fetch price updates](../fetch-price-updates) for more details on obtaining price updates.
26 changes: 6 additions & 20 deletions pages/price-feeds/use-real-time-data/pull-integration/evm.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -46,27 +46,13 @@ Then add the following line to your `remappings.txt` file:
@pythnetwork/pyth-sdk-solidity/=node_modules/@pythnetwork/pyth-sdk-solidity
```

## Why Update Prices

Pyth uses a pull-based oracle model. Unlike traditional push oracles that automatically update prices on-chain at regular intervals, Pyth requires users to explicitly update the on-chain price before reading it.

This design offers several advantages:

- **Lower costs**: You only pay for price updates when you need them
- **Lower latency**: You can fetch the latest price update directly from Pyth's low-latency oracle network and submit it on-chain immediately
- **Flexibility**: Different applications can update prices at different frequencies based on their needs

In the Pull integration pattern, your contract must:

1. Accept `priceUpdate` data from the caller (fetched from [Hermes](../../how-pyth-works/hermes))
2. Call `updatePriceFeeds()` to submit this data on-chain before reading prices
3. Pay a small fee for each update (calculated via `getUpdateFee()`)

<Callout type="warning" emoji="⚠️">
**Important**: If you don't update the price or if the on-chain price becomes
too stale, calls to `getPriceNoOlderThan()` will revert with a `StalePrice`
error (0x19abf40e). See [how to fetch price
updates](../../fetch-price-updates) for more details.
**Important**: Pyth uses a pull-based oracle model that requires users to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pull oracle (no pull-based)

update prices on-chain before reading them. If you don't update the price or
if the on-chain price becomes too stale, calls to `getPriceNoOlderThan()` will
revert with a `StalePrice` error (0x19abf40e). Learn more about [why you need
to update prices](../../how-pyth-works/why-update-prices) and see [how to
fetch price updates](../../fetch-price-updates) for implementation details.
</Callout>

## Write Contract Code
Expand Down
Loading