Push Feeds excel at providing high-frequency, low-latency data for automated systems because they broadcast updates on a schedule or threshold. For example, Chainlink Data Feeds update when price deviations exceed 0.5%, delivering sub-second latency crucial for perpetuals protocols like GMX, which manage billions in TVL. This proactive model minimizes on-chain computation for users but creates predictable transaction patterns that MEV bots can front-run.
Push Feeds vs User-Triggered Oracles: MEV
Introduction: The Oracle MEV Dilemma
Choosing between push and user-triggered oracles fundamentally dictates your protocol's exposure to MEV and its operational cost structure.
User-Triggered Oracles (like Pyth's pull-based model) take a different approach by updating prices only when a user's transaction requests it. This results in a trade-off: it eliminates the predictable update cadence that attracts MEV, but shifts gas costs and update latency to the end-user. Protocols like Marginfi and Jupiter leverage Pyth to provide MEV-resistant price feeds, accepting that the final user pays for the on-chain verification.
The key trade-off: If your priority is ultra-low latency and predictable operational costs for high-frequency DeFi (e.g., DEX liquidity pools), choose Push Feeds. If you prioritize maximizing user fairness and minimizing extractable MEV for less time-sensitive applications (e.g., lending protocol liquidations), choose User-Triggered Oracles. The decision hinges on who bears the cost and who is exposed to risk.
TL;DR: Core Differentiators
Key architectural trade-offs for MEV-sensitive applications at a glance. The choice hinges on latency, cost predictability, and who controls data freshness.
Push Feed (e.g., Chainlink Data Streams)
Proactive, Low-Latency Delivery: Data is pushed to a dedicated on-chain cache (e.g., a StreamsUpkeep contract) on every update cycle (~400ms). This provides sub-second finality for price data, critical for perpetual DEXs like GMX or high-frequency arbitrage bots seeking to minimize front-running risk.
Push Feed (e.g., Chainlink Data Streams)
Cost Efficiency for High-Frequency Users: Consumers pay no gas for updates; costs are amortized across all users of the feed and borne by the oracle network. Ideal for protocols with high transaction volume (e.g., Aave, Compound) where per-user update costs would be prohibitive. TVL is secured by the oracle's decentralized infrastructure.
User-Triggered (e.g., Pyth Pull Oracle)
Ultimate Freshness & Gas Flexibility: Data is pulled on-demand by the end-user's transaction. This guarantees the latest price from the Pythnet cluster is used, eliminating any staleness from a push cycle. Best for low-frequency, high-value settlements (e.g., NFT floor price auctions, insurance payouts) where paying for freshness is justified.
User-Triggered (e.g., Pyth Pull Oracle)
Architectural Simplicity & Composability: No need to manage a separate data consumption contract. The oracle update is embedded directly in the user's transaction, simplifying contract logic. This pull-based model aligns with how many DeFi primitives like Uniswap v3 or Euler already operate, making integration straightforward for novel derivatives or options protocols.
Feature Comparison: Push Feeds vs User-Triggered Oracles
Architectural trade-offs for on-chain data delivery and MEV exposure.
| Metric / Feature | Push Feeds (e.g., Chainlink Data Streams) | User-Triggered Oracles (e.g., Pyth, API3 dAPIs) |
|---|---|---|
MEV Exposure for Users | Low (Data pushed proactively) | High (User request reveals intent) |
Latency to On-Chain Update | < 1 sec (Pre-emptive) | ~2-5 sec (Reactive) |
Gas Cost Burden | Protocol / Relayer | End User |
Data Freshness Guarantee | SLA-based (e.g., 500ms) | Request-time snapshot |
Ideal Use Case | HFT, Perps, Lending (low-latency) | Settlement, Insurance, Batch updates |
Protocol Examples | Chainlink Data Streams, Chronicle | Pyth Network, API3 dAPIs, Tellor |
Push Feed Oracle: Pros and Cons
A technical breakdown of how oracle update mechanisms impact MEV exposure, latency, and gas efficiency for DeFi protocols.
Push Feed: MEV Resistance
Proactive, permissionless updates: Data is pushed on-chain at regular intervals by a decentralized network of nodes (e.g., Chainlink Data Streams, Pyth Network). This creates a public, shared data state, reducing opportunities for latency arbitrage and front-running specific to oracle updates. Protocols like Aave and Synthetix use this model for critical price feeds.
Push Feed: Predictable Costs
Gas costs are borne by the oracle service, not the end-user. This provides cost certainty for protocols integrating the feed. For high-frequency applications like perps DEXs (e.g., dYdX v3, GMX), this eliminates gas-cost variability from user transactions, simplifying fee models and improving UX.
User-Triggered: Lower Baseline Cost
Gas-efficient for low-activity markets: Data is only pulled on-chain when a user transaction requires it (e.g., Tellor, custom Solidity oracles). This avoids paying for continuous updates in dormant markets. Ideal for long-tail assets or insurance protocols with infrequent claim settlements, where a push feed's constant cost is unjustified.
User-Triggered: MEV & Latency Risk
Creates a predictable transaction: The user's action that triggers the data pull becomes a known MEV opportunity. Searchers can front-run or sandwich the oracle update if the new data moves the market. This model can lead to worse execution prices for users on DEXs and lending liquidations, as seen in early MakerDAO oracle designs.
User-Triggered Oracle: Pros and Cons
Key strengths and trade-offs at a glance for MEV-sensitive applications.
Push Feed Advantage: Predictable Cost & Latency
Fixed update intervals (e.g., every block) create deterministic gas costs and latency for all users. This matters for high-frequency dApps like perpetuals (GMX, Synthetix) where consistent, low-latency data is critical for liquidations and pricing.
Push Feed Disadvantage: Inefficient for Low Activity
Wastes gas on unused updates. Networks like Chainlink Data Streams broadcast price feeds even when no user needs them, incurring continuous L1/L2 gas costs. This is inefficient for niche assets or sidechains with low transaction volume.
User-Triggered Advantage: On-Demand Cost Efficiency
Pay only for data you use. Protocols like API3 dAPIs or Pyth's Pull Oracle shift gas costs to the end-user's transaction, eliminating baseline overhead. This matters for applications with sporadic, user-initiated actions like NFT lending (Arcade.xyz) or insurance claims.
User-Triggered Disadvantage: Susceptible to MEV
Front-running vulnerability. A user's request for fresh data is a public mempool transaction, creating MEV opportunities. Searchers can front-run the settlement, exploiting the new price. This is critical for decentralized options (Lyra) or any settlement with a price-dependent outcome.
Decision Framework: When to Use Which Model
Push Feeds for DeFi
Verdict: The Standard for Core Infrastructure. Strengths: Push feeds like Chainlink Data Feeds and Pyth Network provide continuous, high-frequency price updates essential for lending protocols (Aave, Compound) and perpetual DEXs (GMX, dYdX). They offer battle-tested security with decentralized node operators and aggregated data sources, minimizing the risk of a single point of failure. Their low-latency, automated updates are critical for liquidations and maintaining accurate collateral ratios. Trade-offs: You pay for constant data availability, incurring gas costs for every on-chain update, which can be significant on L1 Ethereum. You also cede control over update timing, which can be a disadvantage for less time-sensitive functions.
User-Triggered Oracles for DeFi
Verdict: Niche Use for Cost-Optimized or Custom Data. Strengths: Protocols like API3's dAPIs or a custom Chainlink AnyAPI setup are ideal for low-frequency, high-value data (e.g., triggering a rewards distribution based on a monthly TWAP, or fetching a custom KYC score). They eliminate the gas cost of unused updates, making them cost-effective for functions like governance outcome execution or insurance policy payouts. Trade-offs: They introduce latency at the point of need and require a user or contract to pay the gas for the oracle call, which can lead to unpredictable costs and front-running risks if not designed carefully.
Verdict and Final Recommendation
Choosing between push feeds and user-triggered oracles depends on your MEV risk profile and application's latency tolerance.
Push Feeds excel at providing low-latency, high-frequency data for time-sensitive applications because they broadcast updates on a fixed schedule. For example, Chainlink Data Feeds update every block or heartbeat, offering sub-second latency critical for perpetual swaps on GMX or Aave's interest rate updates. This proactive model minimizes front-running opportunities for common price data but centralizes update costs and control with the oracle network, creating a predictable cost structure for dApps.
User-Triggered Oracles take a different approach by updating only upon a user's transaction, as seen with Pyth Network's PythSolanaReceiver or API3's dAPIs with readDataFeedWithId. This results in a fundamental trade-off: it shifts the gas cost and latency burden to the end-user but can drastically reduce exposure to MEV like oracle front-running, as the data is fetched and consumed atomically in a single transaction, leaving no window for exploitation.
The key trade-off is cost bearer vs. risk bearer. If your priority is user experience and predictable operational overhead for high-frequency data (e.g., a DEX oracle), choose Push Feeds. If you prioritize maximizing censorship resistance and minimizing protocol-level MEV liability for less frequent, high-value updates (e.g., an insurance payout oracle or a governance price checkpoint), choose User-Triggered Oracles.
Build the
future.
Our experts will offer a free quote and a 30min call to discuss your project.