Always-On oracles like Chainlink Data Streams and Pyth excel at delivering ultra-low-latency, high-frequency data because they maintain a continuous push of price updates to the blockchain. For example, Pyth benchmarks sub-500ms update speeds on Solana, enabling high-frequency trading protocols like Drift and Jupiter to execute with minimal front-running risk. This model prioritizes data availability and speed, making it ideal for perpetuals, options, and spot DEXs where stale data directly equates to arbitrage losses.
Always-On vs Just-In-Time Oracles
Introduction: The Core Architectural Divide
The fundamental choice between Always-On and Just-In-Time oracles defines your application's cost, latency, and data freshness profile.
Just-In-Time (JIT) oracles like API3 dAPIs and Chronicle take a different approach by pulling data on-demand only when a user transaction requires it. This strategy results in a significant trade-off: it dramatically reduces gas costs and on-chain data bloat for less active protocols, but introduces a 1-2 block latency for the initial data request. This architecture is optimal for lending markets like Aave (which uses a hybrid model), insurance protocols, or NFT valuations where price updates are needed sporadically, not continuously.
The key trade-off: If your priority is sub-second latency and maximal data freshness for a high-throughput DeFi application, choose an Always-On oracle. If you prioritize minimizing operational gas overhead and your protocol logic does not require millisecond-level updates, a Just-In-Time oracle provides a more cost-efficient solution. The decision hinges on your application's specific tolerance for latency versus its budget for continuous data availability.
TL;DR: Key Differentiators
Architectural trade-offs for latency, cost, and data freshness in DeFi, gaming, and prediction markets.
Choose Always-On (e.g., Chainlink, Pyth)
For high-frequency, latency-sensitive applications. Data is continuously pushed on-chain, enabling sub-second updates. This is critical for perpetual DEXs like dYdX or GMX and on-chain gaming where price feeds must reflect market moves instantly to prevent arbitrage and liquidations.
Choose Just-In-Time (e.g., API3, Witnet)
For cost-sensitive, event-driven applications. Data is fetched only when a user transaction requests it, eliminating gas costs for unused updates. Ideal for insurance protocols like Nexus Mutual, low-volume prediction markets, and settlement oracles where data is needed sporadically.
Always-On: Higher Operational Cost
Trade-off: Premium for reliability. Continuous on-chain updates incur substantial, recurring gas fees, paid by the protocol or data consumer. This model supports billions in TVL but requires deep liquidity (e.g., Chainlink's >$7B in staked LINK) to subsidize and secure the network.
Just-In-Time: Higher Per-Request Latency
Trade-off: Freshness for efficiency. The data is not live; it's fetched upon request, adding protocol-level delay. This is unsuitable for high-speed trading but acceptable for loan origination (e.g., MakerDAO) or NFT valuation where a few seconds of delay is permissible.
Feature Matrix: Head-to-Head Comparison
Direct comparison of key architectural, economic, and performance metrics for oracle models.
| Metric | Always-On Oracle (e.g., Chainlink) | Just-In-Time Oracle (e.g., Pyth, API3 dAPIs) |
|---|---|---|
Update Latency (Data to On-Chain) | ~1-5 minutes (Heartbeat) | < 400ms (On-Demand) |
Primary Cost Model | Per-Update Fee + Gas | Per-Request Fee (Pay-per-Call) |
Gas Overhead for User | High (Payer submits update) | Low to None (Oracle pays) |
Data Freshness Guarantee | Scheduled (e.g., every block) | Real-Time (On-Demand Request) |
Infrastructure Cost for Protocol | High (Subsidize continuous updates) | Low (Only pay for fulfilled requests) |
Optimal Use Case | Constant-State Feeds (DeFi prices) | Event-Driven Logic (Options, Perps, Gaming) |
Performance & Cost Benchmarks
Direct comparison of key operational and economic metrics for oracle data delivery models.
| Metric | Always-On Oracles | Just-In-Time Oracles |
|---|---|---|
Data Update Latency | 1-5 seconds | On-demand (< 1 sec) |
Avg. Data Request Cost | $0.10 - $0.50 | $0.01 - $0.05 |
Infrastructure Cost (Annual) | $50K - $500K+ | $5K - $50K |
Data Freshness Guarantee | ||
Gas Overhead (Per Update) | High | Negligible |
Ideal Update Frequency | Continuous (< 60 sec) | Sporadic / Event-driven |
Primary Use Cases | DEXs, Lending, Derivatives | Insurance, Prediction Markets, NFTs |
Always-On (Push) Oracle: Pros & Cons
Key strengths and trade-offs between Always-On (Push) and Just-In-Time (Pull) oracle models at a glance.
Always-On: Guaranteed Freshness
Proactive Data Delivery: Data is continuously pushed to on-chain contracts (e.g., Chainlink Data Feeds). This ensures price updates occur even when no user transaction is pending, providing sub-second latency for critical functions like liquidations. This matters for high-frequency DeFi protocols like perpetuals (GMX, Synthetix) where stale data means immediate risk.
Always-On: Predictable Cost Structure
Costs Absorbed by Protocol: The oracle provider or a dedicated sponsor pays the gas for regular updates. This eliminates unpredictable gas costs for end-users and simplifies dApp economics. This matters for consumer-facing applications (Aave, Compound) where user experience is degraded by surprise transaction fees for price lookups.
Just-In-Time: Extreme Cost Efficiency
Pay-Per-Use Model: Data is fetched on-demand only when a user transaction requires it (e.g., API3 dAPIs, Pyth's pull oracle). This eliminates the gas waste of updating idle feeds. This matters for long-tail assets or L2s where maintaining always-on feeds for low-volume markets is economically prohibitive.
Always-On: Cons - Ongoing Gas Overhead
Fixed Operational Cost: Even with zero usage, the feed incurs gas costs for every update cycle. On Ethereum Mainnet, this can exceed $50K+ annually per feed. This is a major con for new networks or niche assets with low transaction volume, where the cost isn't justified.
Just-In-Time: Cons - Latency & Front-Running Risk
User-Facing Delay: The need to fetch data within the user's transaction adds 100ms-2s of latency, which can be material in volatile markets. It also introduces a MEV vulnerability, as the data request is visible in the mempool. This is a critical con for high-speed trading venues or any protocol where transaction ordering is sensitive.
Just-In-Time (Pull) Oracle: Pros & Cons
Key architectural trade-offs for CTOs choosing oracle infrastructure. Always-On (Push) models like Chainlink provide continuous data streams, while Just-In-Time (Pull) models like Pyth and API3 dAPIs are triggered on-demand.
Just-In-Time (Pull) Oracle: Key Pros
Radical Cost Efficiency: Users pay only for the data they consume, not continuous updates. This can reduce oracle gas fees by 70-90% for low-frequency applications like weekly settlements or insurance claims.
Freshness on Demand: Data is fetched at the exact moment of the user request, guaranteeing sub-second freshness for the specific transaction. This eliminates staleness risk for time-sensitive actions like liquidations.
Architectural Simplicity: No need to manage ongoing subscriptions or heartbeat updates. The oracle call is a direct, atomic part of the user's transaction flow.
Just-In-Time (Pull) Oracle: Key Cons
Unpredictable Latency & Cost: The user's transaction bears the full cost and latency of the on-chain data fetch. Network congestion can cause high gas spikes and failed transactions, creating a poor UX for end-users.
No Proactive Defenses: Protocols cannot react to market movements until a user initiates a pull. This is unsuitable for automated systems like lending protocols that need continuous price feeds to monitor collateral health and trigger liquidations.
Reliance on User Initiation: Entirely dependent on external actors to request data. Dormant or rarely-used contracts may operate on critically stale data until the next pull.
Always-On (Push) Oracle: Key Pros
Guaranteed Data Availability: Data is continuously updated on-chain, providing a constant state of truth. This is critical for DeFi primitives like Aave and Compound, which require <1% deviation for $10B+ in TVL.
Predictable Operations & Cost: Protocols pay a fixed, amortized cost for updates (e.g., Chainlink's subscription model). User transactions are cheaper and faster as they read from a pre-populated data point.
Enables Automation: The always-available data layer allows smart contracts to execute autonomously. This is non-negotiable for perpetual futures, options protocols, and any system with keeper-triggered logic.
Always-On (Push) Oracle: Key Cons
High Fixed Overhead: Paying for continuous updates is inefficient for applications with sporadic data needs (e.g., a prediction market that resolves monthly). This can make scaling to 1000+ price feeds cost-prohibitive.
Staleness Between Updates: Even with frequent heartbeats (e.g., every 3 seconds), there is a window where data is not fresh. In volatile markets, this can lead to arbitrage gaps before the next update.
Centralized Update Triggers: Relies on oracle node operators or keepers to push updates. This introduces a liveness assumption and potential points of failure outside the user's transaction.
When to Use Which Model
Always-On Oracles for DeFi
Verdict: The default choice for core financial primitives. Strengths: Provide continuous, low-latency price feeds essential for lending protocols (Aave, Compound) and perpetual DEXs (GMX, dYdX). High reliability and Sybil resistance via networks like Chainlink Data Feeds and Pyth Network are non-negotiable for securing billions in TVL. The deterministic, on-demand updates prevent liquidation failures and oracle manipulation. Weaknesses: Higher operational costs are baked into the infrastructure, paid by the protocol, not end-users.
Just-In-Time (JIT) Oracles for DeFi
Verdict: Niche use for cost-sensitive, batchable operations. Strengths: Drastically lower protocol costs for applications where price updates are user-initiated and infrequent, such as structured products or settlement layers. Protocols like API3 dAPIs or a custom Chainlink Functions request can fetch data only when a specific user action requires it. Weaknesses: Introduces request latency (2-30 seconds) and unpredictability in gas costs for users, making them unsuitable for high-frequency trading or real-time liquidations.
Verdict & Decision Framework
Choosing between Always-On and Just-In-Time oracles is a fundamental architectural decision that hinges on your application's latency, cost, and data freshness requirements.
Always-On Oracles (e.g., Chainlink Data Feeds, Pyth Network) excel at providing ultra-low-latency, high-frequency data for DeFi primitives because they maintain a continuous stream of aggregated price updates on-chain. For example, Chainlink secures over $20B in Total Value Secured (TVS) with its always-on feeds, delivering updates every block (~12 seconds on Ethereum) to protocols like Aave and Synthetix, enabling instant liquidations and accurate pricing. This model prioritizes data availability and speed, but incurs continuous operational costs for node operators and the network, which are passed on to consumers.
Just-In-Time (JIT) Oracles (e.g., API3 dAPIs, Witnet, custom solutions using Chainlink Functions) take a different approach by fetching data on-demand only when a user transaction requests it. This strategy results in a significant trade-off: it eliminates the gas cost of maintaining constant updates, making it highly cost-efficient for low-frequency data needs (e.g., insurance payouts, NFT rarity scores), but introduces higher per-request latency (often 2-5 blocks) and potential front-running risk as the data fetch is triggered by the user's transaction.
The key trade-off is between cost structure and performance predictability. If your priority is sub-second latency and maximum reliability for high-value, high-frequency operations like perpetual swaps or money markets, choose an Always-On Oracle. Its predictable, pre-funded model is non-negotiable for core DeFi. If you prioritize operational cost efficiency and can tolerate higher, variable latency for event-driven or less frequent data—such as sports results, custom API calls, or parametric insurance—a Just-In-Time Oracle provides superior flexibility and can drastically reduce your protocol's fixed overhead.
Build the
future.
Our experts will offer a free quote and a 30min call to discuss your project.