Home
» News
»
Chainlink vs. Pyth Network: Choosing a Web3 Oracle for Real-Time Data
Chainlink vs. Pyth Network: Choosing a Web3 Oracle for Real-Time Data
A DeFi application can have flawless smart-contract logic and still fail at the moment that matters most if its market data is stale, delayed, unavailable, or interpreted incorrectly. That is the practical oracle problem: a lending protocol may liquidate at the wrong price, a perpetual exchange may quote a market that has already moved, or a vault may keep operating after its reference market has closed.
Chainlink and Pyth Network both address this problem, but a simple “Chainlink vs. Pyth” comparison hides an important detail. Each now offers more than one data-delivery model. Chainlink has traditional onchain Data Feeds and low-latency Data Streams; Pyth has Pyth Core, Pyth Pro, and optional push infrastructure. The useful question is therefore not which brand is universally better, but which data path matches the application’s latency, asset coverage, trust assumptions, cost model, and failure controls.
There is also a recent change developers should know about. On August 26, 2026, Pyth upgraded Pyth Core. Its public Hermes interface now requires API-key authentication, and the underlying architecture moved away from the older Pythnet/Wormhole path toward a system based on five independently operated routers with a 3-of-5 signing quorum. Existing interfaces were designed to remain compatible, but builders should verify that their integration is using the current endpoints and contracts. See the official Pyth Core upgrade documentation.
Chainlink and Pyth both aggregate external market data, but their products expose different update paths: traditional push feeds, low-latency pull streams, and application-triggered onchain updates.
The first problem to solve: how fresh does your price actually need to be?
Start with the application, not the oracle vendor. A lending market that recalculates collateral every few minutes has different requirements from a perpetual exchange that promises near-instant execution. If the protocol cannot define an acceptable maximum data age, it cannot choose an oracle safely.
Chainlink Data Feeds are designed for data that can be published onchain when update conditions are met. In practice, price feeds typically update according to mechanisms such as a deviation threshold or heartbeat. That model is well suited to lending, collateral valuation, reserve checks, and other applications where continuously storing a current reference value onchain is useful.
Chainlink Data Streams targets a different class of workload. The current documentation describes it as a pull-based service that delivers low-latency market data offchain and allows applications to verify reports onchain only when needed. Chainlink states that Data Streams supports sub-second data resolution and is intended for latency-sensitive products such as perpetual futures, options, and prediction markets. See the official Chainlink Data Streams documentation.
Pyth Core also uses a pull model. An application or user fetches a signed price update, submits it to the Pyth contract, and then reads the verified price. The application can require a maximum age using functions such as getPriceNoOlderThan(). This makes freshness an explicit part of the transaction flow rather than relying only on a continuously updated onchain value. See Pyth’s explanation of why prices must be updated.
Push versus pull: what changes operationally?
Model
Main advantage
Main trade-off
Typical fit
Onchain push feed
Contracts can read an already-published value
Updates consume chain resources even when nobody uses them
Lending, collateral valuation, reference pricing
Pull-based report
Fetch and verify fresh data only when a transaction needs it
The application must handle fetching, authentication, submission, and failures
Perpetuals, options, low-latency execution
Managed push around a pull oracle
Simple reads while retaining pull infrastructure underneath
Someone must operate and fund the updater
Apps migrating from traditional push integration
The distinction is no longer “Chainlink equals push, Pyth equals pull.” Chainlink Data Streams is explicitly pull-based, while Pyth documents sponsored push feeds on selected networks and provides a Price Pusher that teams can operate themselves. Architecture should therefore be compared product by product.
Where does the data come from?
Chainlink: multiple data sources plus decentralized oracle networks
Chainlink Data Feeds aggregate data from multiple sources and publish the result through decentralized oracle networks. Chainlink’s documentation describes the design as combining a decentralized data model with Offchain Reporting, allowing multiple oracle nodes to reach agreement offchain before a report is transmitted onchain. This reduces the number of onchain transactions required for aggregation.
That design separates several risks: a protocol is not dependent on one exchange, one API, or one oracle node. However, integrators still need to inspect the specific feed they use. Chainlink maintains different feed categories and risk considerations, so the presence of a Chainlink interface alone does not mean every feed has identical data sources, liquidity quality, or update parameters. The starting point is the official Chainlink Data Feeds documentation.
Pyth: publisher data aggregated into price and confidence
Pyth’s model emphasizes direct contributions from market-data publishers such as exchanges, trading firms, market makers, and other financial data providers. Pyth publishes an aggregate price together with a confidence interval, which is useful because real markets do not have one perfectly uniform price at every instant.
The confidence interval can be incorporated into risk controls. For example, a lending protocol can value collateral conservatively when publisher dispersion grows, or pause a market when uncertainty becomes too high. Pyth’s official best-practices guide explicitly recommends considering confidence and staleness rather than treating the reported midpoint as infallible.
What changed in Pyth’s architecture in 2026?
This is the biggest current-version issue in the comparison. Older descriptions of Pyth often explain Pythnet as the chain where publishers submitted prices, with Wormhole guardians relaying signed messages to other chains. Pyth’s current documentation says Pythnet is being shut down and that Pyth Pro now documents the current data architecture.
For upgraded Pyth Core, five independently operated routers calculate aggregates and sign Merkle roots. Hermes collects the signed roots and proofs, and onchain contracts verify a 3-of-5 signing quorum before accepting the requested aggregate. The Core contract ABI remains compatible with the previous interface, but newer contract addresses exist and API authentication is now required for Hermes access.
Builders relying on a 2024 or 2025 tutorial should therefore re-check endpoints, authentication, and contract addresses before deploying. The current technical description is in How the upgraded Pyth Core works.
Which option is easier to integrate?
For a contract that only needs a conventional onchain reference price, Chainlink Data Feeds can be operationally simple: read the appropriate aggregator contract and validate the returned timestamp and value according to the application’s risk rules.
Pyth Core adds an explicit update step in the canonical pull flow. The caller fetches price-update data from Hermes, pays the update fee, submits the update, and then consumes a sufficiently recent price. That can be a feature rather than a burden for latency-sensitive execution because the transaction can bring its own current data, but it gives the application more plumbing to own.
Chainlink Data Streams has similar operational concerns to any low-latency pull system: API or WebSocket access, report decoding, authentication, onchain verification, fallback behavior, and billing must all be handled. It is more appropriate to compare Pyth Core or Pro with Chainlink Data Streams for high-frequency trading than to compare them only with Chainlink’s traditional push feeds.
What about latency?
Latency should be measured end to end. A vendor can produce millisecond or sub-second data, but an application still has network latency, API latency, block production, transaction inclusion, contract execution, and settlement logic.
Chainlink’s current Data Streams documentation advertises sub-second data resolution and on-demand verification. Pyth Pro documents real-time and fixed-rate channels ranging from millisecond-oriented delivery through 50 ms, 200 ms, and 1-second intervals, depending on subscription and integration mode. Those product-level capabilities matter most for derivatives and market-making systems where stale execution can be directly monetized by sophisticated traders.
For slower lending or vault use cases, chasing the lowest possible latency can add cost and complexity without materially improving safety. A well-designed staleness threshold and conservative liquidation rules may matter more than shaving tens of milliseconds from the feed path.
How should you compare security?
Do not reduce oracle security to a single node count. Examine the complete path:
Source diversity: How many independent venues or data providers contribute meaningful information?
Aggregation: How are outliers, stale publishers, and inconsistent markets handled?
Signer or node independence: What set of parties must agree before data is accepted?
Onchain verification: What exactly does the consuming contract verify?
Freshness: Can an attacker deliberately use an older but still technically valid update?
Availability: What happens if the API, relayer, blockchain, or data market is unavailable?
Application controls: Does the protocol pause, widen spreads, cap exposure, or reject stale data during stress?
Pyth’s own security guidance warns about adversarial selection in pull updates: users may be able to choose among updates that still satisfy allowed time constraints. It recommends strict staleness checks and, for executable markets, techniques such as delayed settlement, confidence-aware pricing, holding periods, and exposure limits.
Chainlink likewise places responsibility on developers to monitor timestamps, select appropriate feeds, and protect their application against unusual market conditions. Oracle infrastructure can reduce data risk, but it cannot decide the protocol’s acceptable leverage, liquidation buffer, or market-hours policy.
What does each network offer beyond a single price?
Chainlink has expanded well beyond basic crypto/USD feeds. Its current product set includes Data Feeds for price and reserve information, SmartData, rate and volatility feeds, L2 sequencer uptime feeds, and Data Streams that can expose richer market fields such as liquidity-weighted bid and ask prices and other market context depending on the report schema.
Pyth likewise extends beyond a single midpoint. Pyth Core provides price, confidence, and EMA-related data, while Pyth Pro exposes richer high-frequency market information and configurable delivery. Pyth’s broader 2026 direction also includes its commercial data infrastructure and Data Marketplace.
Asset coverage should be checked at deployment time. Both providers add, modify, and deprecate feeds. Never assume that a symbol available on one chain, service tier, or historical integration is still available with the same update characteristics elsewhere.
How do costs differ?
Cost is not just the oracle subscription price. Include blockchain gas, update transactions, API access, verification calls, engineering effort, monitoring, redundancy, and fallback infrastructure.
Chainlink Data Feeds often externalize the continuous publication work to the feed’s sponsoring ecosystem, while Data Streams has its own billing model for on-demand reports. Chainlink notes that supported feeds can also be deprecated when usage and economic sustainability no longer justify operation.
Pyth’s economics changed materially in 2026. Pyth announced a commercial data model for Pyth Core, and since the August 26 Core upgrade Hermes access requires an API key. Pyth’s documentation directs users to current plans rather than assuming unrestricted unauthenticated API access. Onchain pull updates also require an update fee calculated by the Pyth contract.
For a low-volume lending protocol, always-on low-latency infrastructure may be unnecessary. For a high-volume perpetual exchange, paying for better data and redundant connectivity may be cheaper than the adverse-selection losses caused by stale execution.
A practical selection path
1. If you need a standard collateral or reference price
Start by checking whether a mature Chainlink Data Feed or Pyth feed exists on your target chain for the exact asset and market convention you need. Compare update behavior, data sources, market hours, and the integration’s operational burden. Do not choose based only on brand recognition.
2. If you need near-real-time trading data
Compare Chainlink Data Streams with Pyth Core or Pyth Pro rather than using only traditional push feeds as the benchmark. Measure end-to-end latency from data creation to executable settlement under your own chain conditions.
3. If the market becomes dangerous when uncertainty rises
Use the data’s quality signals. Pyth’s confidence interval can be incorporated directly into spreads, collateral discounts, or pause thresholds. With Chainlink, inspect the specific report schema, timestamp, source methodology, and any additional market-state fields available for that product.
4. If downtime is unacceptable
Design redundant retrieval and application fallbacks. Chainlink Data Streams documents multi-site active-active delivery and high-availability SDK modes. Pyth Pro and Core integrations should account for API availability, authentication, current contract addresses, and the possibility that a price becomes stale.
5. If one oracle is not enough for your risk model
Some protocols compare multiple independent oracle paths, use circuit breakers, or maintain secondary feeds. This can improve resilience, but it can also create a new governance problem: the contract must decide what to do when the sources disagree. A fallback that blindly selects the more favorable price is not a safety mechanism.
Chainlink vs. Pyth: comparison by requirement
Requirement
Chainlink approach
Pyth approach
Conventional onchain reference price
Data Feeds publish aggregated values onchain
Pyth Core can be updated on demand; selected push feeds also exist
Low-latency pull data
Data Streams with offchain delivery and onchain verification
Pyth Core pull updates and higher-performance Pyth Pro
Data uncertainty signal
Depends on feed or stream schema and market fields
Price plus explicit confidence interval
Integration responsibility
Ranges from simple feed reads to full Data Streams API and verification flow
Pull flow requires fetching, submitting, and validating current updates
2026 operational issue
Feeds and streams can be added or deprecated; monitor official release notes
Core upgraded Aug. 26, 2026; Hermes now requires API-key authentication
How to self-check an oracle integration before launch
Before calling an oracle integration production-ready, run a failure review rather than only testing the happy path. A useful checklist is:
Confirm the exact feed or stream ID and official contract address on the target network.
Define the maximum acceptable age for every price used by the protocol.
Simulate a stale feed and verify that the application fails safely.
Test volatile markets where prices diverge across venues or confidence widens.
Test API or WebSocket outages and authentication failures.
Verify behavior when the underlying traditional market is closed.
Measure end-to-end latency under congested blockchain conditions.
Subscribe to official deprecation and upgrade notices.
Document which party pays update, verification, subscription, and gas costs.
Re-run the tests whenever the oracle provider changes architecture or contract addresses.
If these checks produce clear, deterministic behavior, the oracle choice is probably aligned with the application rather than selected by reputation alone. Chainlink and Pyth both provide mature ways to bring external financial data into Web3, but their strongest products increasingly overlap: Chainlink now offers both push and pull models, while Pyth supports both application-triggered pull updates and selected push patterns. The deciding factor should be the specific market, latency budget, security assumptions, operational capabilities, and failure policy of the protocol consuming the data.