Deciphr Academy
Track 3 · Module 15 · Lesson 3 of 6 · 6 min read

What is the difference between push and pull oracles?

Short answer

A push oracle's operator keeps sending prices to the chain, at set times or after big moves.1,2 A pull oracle keeps signed prices off-chain, and the user brings one on-chain in the transaction that uses it.1,2

PushOracle networkon a schedulesendsFeed contractstores the priceYour appreads itPullSigned priceswait off-chainfetchYour transactionbrings the priceYour appchecks its agePush: the oracle pays and picks the time. Pull: the user does.
Fig. 3. Push: the oracle sends prices in, on its own schedule. Pull: the user fetches a signed price and brings it in with their own transaction.

Push: the oracle sends updates

In a push oracle, the oracle operator, or another privileged party, keeps pushing price updates to each blockchain.1 Chainlink's documentation says push-based oracles update at set intervals, or when prices move past a threshold.2 That is how the feeds in lesson 2 work.3

Pyth, another oracle network, says the operator must pay a transaction fee for every update.1 Pyth argues that this makes push oracles costly to grow to more feeds, more chains or faster updates.1

Pull: the user brings the price

In Pyth's pull design, prices are signed off-chain, so anyone can check they are genuine.1 When a price is needed, the user sends one transaction that both updates the price and uses it.1 Pyth's documentation says the signed price is checked on-chain when it arrives.4 The cost of that update falls on the user who needs the price, not the oracle.1

The same providers offer both models. Chainlink has a pull design called Data Streams: you fetch a report and check it on-chain whenever you need it.2 And Pyth pushes updates for some feeds on some networks, at a set heartbeat or after a set percentage move.5

Side by side

Push Pull
Who brings the price on-chain The oracle operator, on a schedule or after big moves1,2 The user, inside the transaction that needs it1
Who pays for each update The operator1 The user who needs the price1
Main thing to watch The price can be old when markets are calm6 Users can choose which recent price to bring7

The catch with pull

Pyth's documentation warns that pull updates let users choose which price to use in a transaction.7 The choice is limited: prices must move forward in time and can't be too old.7 But a user can still pick any update that fits those rules.7

Pyth's advice is a staleness check: refuse any price that is not recent enough.7 Its tools include one by default, which you can set to suit your app.7

Pyth also says no on-chain oracle can be as fast as an off-chain source, such as an exchange.7 So apps should assume attackers see price changes a little before the app does.7

The catch with push

A push feed only changes when a trigger fires. Between updates, the on-chain price stands still.3 Pyth notes that its own push feeds can be delayed by things like chain halts.5 And it says lower thresholds mean fresher prices, but more transactions and higher gas costs.5

Which fits when

Chainlink says some apps only need on-chain data at fixed intervals, which suits push.2 Others need more frequent updates and lower delays, which pull is designed for.2

Checking a price's age

Every update carries a time. Subtract it from the current time to get the price's age. If the age is more than the limit your app sets, refuse the price. For example, with a 60-second limit, a price stamped 12:00:00 can be used at 12:00:45 but not at 12:01:30.

Our viewNeither model is simply better. Push puts the cost and the timing on the oracle. Pull puts them on the user, along with a new way to game the timing. Either way, check how old the price is.
Sources
  1. Pull, Don't Push: A New Price Oracle Architecture. Pyth Network blog, 13 December 2022.
  2. What is Chainlink Data Streams?. Chainlink documentation, page read 22 October 2026.
  3. Decentralized Data Model. Chainlink documentation, page read 22 October 2026.
  4. Use Prices on Blockchain. Pyth Network documentation, page read 22 October 2026.
  5. Sponsored Feeds. Pyth Network documentation, page read 22 October 2026.
  6. What are Chainlink Data Feeds?. Chainlink documentation, page read 22 October 2026.
  7. Best Practices. Pyth Network documentation, page read 22 October 2026.

General education built from the publicly available sources listed above. Not financial, legal, tax or investment advice. Naming a company, project or regulator is not an endorsement either way. Last checked 2026-10-22. Terms and disclaimer.