# Push vs Pull: The Oracle Architecture that Changed Everything

**URL:** <https://forum.pyth.network/t/push-vs-pull-the-oracle-architecture-that-changed-everything/2509>\
**Category:** Community Library\
**Created:** [May 4, 2026, 11:57pm UTC](https://forum.pyth.network/t/push-vs-pull-the-oracle-architecture-that-changed-everything/2509 "2026-05-04T23:57:30Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![spank2023](https://sea1.discourse-cdn.com/flex001/user_avatar/forum.pyth.network/spank2023/32/804_2.png) [@spank2023](https://forum.pyth.network/u/spank2023)\
**Post date:** [May 4, 2026, 11:57pm UTC](https://forum.pyth.network/t/push-vs-pull-the-oracle-architecture-that-changed-everything/2509/1 "2026-05-04T23:57:30Z")

</div>

Push vs Pull – has anyone heard of this concept before? Possibly in relation to art and design? What about how content is delivered in the media? I’m not artistic, so the first example doesn’t resonate with me, but _Push vs. Pull_ as a content delivery strategy does. A great example? Fuckin commercials. Yeah, that’s right - commercials. Right now, I’m watching the greatest Star Wars movie ever made (_The Empire Strikes Back_), and Disney just cut from the pivotal moment of “No, I am your father” to a damn commercial. I know ad revenue is necessary for these streaming giants, but how dare they ruin Vader’s efforts to rule the galaxy with his son!

As I recover from ads disrupting my Star Wars fandom on a Monday morning, I realize the commercial break illustrates a broader principle that extends well beyond media. Essentially, _Push vs Pull_ represents two fundamental approaches for delivering information, and those same strategies can be applied to decentralized oracle infrastructure. _Push_ systems broadcast market data according to predetermined criteria (i.e., heartbeats, % price deviations) while _pull_ systems publish it only on-demand.1 Although the differences may seem trivial, I assure you they can severely impact price feed reliability, cost, scalability, and the applications that support them. And as DeFi transitions from lending/borrowing markets to derivatives and asset tokenization, the need for reliable price discovery is more important than ever.

**Background** 1,2,3  
_“Oracles are not the data source itself but rather a layer that retrieves, verifies, and relays external data to smart contracts.”_

Considering smart contracts operate in isolated environments and can’t access external data or APIs, decentralized oracle networks (DONs) are necessary for sourcing, validating, and securely delivering price data on-chain. Historically, the infrastructure developed to solve this “oracle problem” relied on _Push_ architecture, with networks actively providing price updates on-chain. Recently, however, the approach to delivering data has shifted from this traditional model to the newer, on-demand _Pull_ architecture. To understand the fundamental differences between the two, let’s take a closer look at how they source, validate, and handle the transaction costs of price data delivery.

**Push (Broadcast) Architecture**1,2,4,5   
_Use Cases_  
· Collateralized Lending Protocols

_How it Works_  
As I alluded to earlier, _Push_ architecture operates on an active broadcast system. In this system, a decentralized network of oracle nodes continuously monitors external sources for the price of a particular asset (market makers, global exchanges, trading firms, or even central exchange APIs and decentralized liquidity pools, etc). When the nodes reach a consensus on the price, the network initiates a transaction and _pushes_ the update to a designated on-chain smart contract (forming a price feed). The mechanism triggering these updates is governed by two external parameters: heartbeat timers and % price deviation thresholds-

· Heartbeat timer: strict time-based interval. Regardless of market volatility, once the time limit expires, price updates occur to prevent overly stale feeds  
· % price deviation threshold: % change in the asset’s price (ex: 0.5%) during times of volatility _pushes_ price updates on-chain

In this architecture, because oracle operators initiate the price updates, they are responsible for paying the transaction costs (gas). Application smart contracts then query the oracle smart contract and retrieve the price feed updates.

 ![Pyth push and pull](https://us1.discourse-cdn.com/flex001/uploads/pyth_dao/original/1X/b8c3bede36217fd0709f3ae4772a7f2265f5d36a.jpeg)

_Advantages/Limitations_  
The primary advantage of a _Push_ model is its predictable cadence and simplicity for developers. Because price data is continuously _pushed_ to the blockchain, it creates an on-chain record that smart contracts can read immediately.

Unfortunately, that is where the advantages of _Push_ architecture end. _Push_ models face significant challenges with their price data concerning _ **reliability, cost, speed, and scalability** _. Because the oracle operator is responsible for continuously updating feeds regardless of user demand, maintaining thousands of diverse, low-volume assets is not economically viable. Furthermore, relying on fixed “heartbeats” or % price deviations for updates makes _Push_ models unsuitable for high-frequency trading platforms requiring real-time price data. And if that’s not enough, _Push_ models also face significant reliability risks during periods of network congestion - if gas fees suddenly spike and the oracle network fails to _push_ a price update, on-chain data becomes stale, inadvertently exposing lending protocols to bad debt and unjustified liquidations.

**Pull (On-Demand) Architecture**1,2,4,5,6  
_Use Cases_  
· Perpetual futures and Derivative trading platforms  
· High Frequency Trading and DEX Aggregators  
· Prediction Markets

_How it Works  
Pull_ models, in contrast to _Push_ architecture, take an “on-demand” approach for price feed updates. Nodes in _Pull_ oracle systems continuously source and aggregate price data at extremely high frequencies, even as fast as 1-200ms. Instead of broadcasting it directly to the blockchain, they generate a constant stream of high-frequency reports off-chain until a user or smart contract initiates a transaction that requires the price data for execution. Remember, this is an important distinction between _Push and Pull_ oracle systems - _ **data is only brought on-chain when a user or smart contract specifically requests it** _\*\*.\*\*

Let’s now take a closer look at Pyth Network as an example of how _Pull_ architecture works in real-time. First, data providers publish price data for a particular asset directly on Pythnet, an application-specific blockchain. Next, Pythnet aggregates that data, creating a price feed with a respective confidence interval. Wormhole attests it (via guardians) and sends the price feed as a verified action approval (VAA) to an off-chain service, Hermes. Instead of forcing the price feed onto blockchains and incurring high gas fees, Hermes stores it until a request is made to complete a transaction (e.g trade). In short, publishers provide the price data, Pyth aggregates it, Wormhole verifies/moves it, and Hermes stores it until a user brings it on-chain (_ **exactly when they need it** _).

 ![Pyth push and pull](https://us1.discourse-cdn.com/flex001/uploads/pyth_dao/original/1X/701dba46e82114d883b12b184d31e8ad491e77da.jpeg)

_Advantages/Limitations  
Pull_ oracle models, despite their integration complexity, outperform _Push_-based systems across all critical metrics - reliability, gas efficiency, update frequency, latency, and scalability. By ensuring price data is only brought on-chain when a user requests it, the network avoids paying for redundant updates, enabling far broader asset coverage, more extensive blockchain support, and real-time price data to the end user. Additionally, the _Pull_ model eliminates the risk of trading on stale data during periods of network congestion.

**Industry Shift** 1,2,4,5  
The transition toward _Pull_ oracle infrastructure corresponds with the maturation of DeFi. As markets continue to expand beyond collateralized lending protocols into latency-sensitive applications (perpetual futures and prediction markets), the structural limitations of _Push_ oracles have become even more apparent.

 ![Pyth vs Pull table](https://us1.discourse-cdn.com/flex001/uploads/pyth_dao/original/1X/c4767424d8d0ef61b4b05afc6d1113b0d1a876c4.jpeg)

**Closing Remarks** 7  
On this May the Fourth (Be With You), it is worth remembering the fundamental differences between _Push vs Pull_ systems, especially their reliability, scalability, speed, and cost-effectiveness of delivering price data. Although the landscape in oracle architecture continues to change (for instance, Pyth just passed PIP-100, sunsetting Pythnet), I think it’s safe to say that _Pull_ systems are the preferred oracle architecture for most on-chain applications. In the future, I’m hoping to extend this conversation further by providing a comparative analysis of _Push/Pull_ models for Pyth Network, Chainlink, and Redstone. In the meantime, to commemorate this awesome Star Wars day, I’ll leave you with the best 60sec in Star Wars Cinema. Come to think of it, the amount of Force pushing and pulling in the scene is almost too perfect for this topic…Enjoy!

**References**

1. [What is a Blockchain Oracle? - Blog - Pyth Network](https://www.pyth.network/blog/what-is-a-blockchain-oracle)

2. [Pull, Don't Push: A New Price Oracle Architecture - Blog - Pyth Network](https://www.pyth.network/blog/pyth-a-new-model-to-the-price-oracle)

3. [Oracles | ethereum.org](https://ethereum.org/developers/docs/oracles)

4. [Push vs. Pull-Based Oracles | Chainlink](https://chain.link/education-hub/pull-oracles-vs-push-oracles)

5. [What is a Pull Oracle? | Pyth Developer Hub](https://docs.pyth.network/price-feeds/core/pull-updates#pull-oracles)

6. [Chainlink Data Streams | Chainlink Documentation](https://docs.chain.link/data-streams)

7. [Pyth's Next Chapter: Infrastructure Upgrade and a Revenue-Based Economic Model - Blog - Pyth Network](https://www.pyth.network/blog/pyth-s-next-chapter-infrastructure-upgrade-and-a-revenue-based-economic-model)

---

<div class="post-metadata">

**Author:** ![Ricardo](https://sea1.discourse-cdn.com/flex001/user_avatar/forum.pyth.network/ricardo/32/512_2.png) [@Ricardo](https://forum.pyth.network/u/Ricardo)\
**Post date:** [May 5, 2026, 2:24pm UTC](https://forum.pyth.network/t/push-vs-pull-the-oracle-architecture-that-changed-everything/2509/2 "2026-05-05T14:24:16Z")

</div>

I had fun reading this, and I’m more informed than I was before  
Thank you Spank

---

<div class="post-metadata">

**Author:** ![spank2023](https://sea1.discourse-cdn.com/flex001/user_avatar/forum.pyth.network/spank2023/32/804_2.png) [@spank2023](https://forum.pyth.network/u/spank2023)\
**Post date:** [May 5, 2026, 4:03pm UTC](https://forum.pyth.network/t/push-vs-pull-the-oracle-architecture-that-changed-everything/2509/4 "2026-05-05T16:03:15Z")

</div>

This is awesome to hear Ricardo and thank you for the feedback 🙂
