Skip to main content
The Oracle Program delivers accurate price data to the protocol by integrating with trusted oracle providers. It calculates exchange rates by combining multiple price sources in a structured sequence, ensuring reliable asset valuations.
NOTEThe Oracle program has been audited by Zenith and Offside.Oracle Program Address: jupnw4B6Eqs7ft6rxpzYLJZYSnrpRgPcr589n5Kv4oc

Hop-Based Oracle System

The system computes exchange rates by processing prices from up to four sources in a sequential chain. Each source contributes to the final rate through multiplication or division, with the option to invert values as needed. The output of each hop becomes the input for the next. For example, to derive the JUPSOL/SOL rate, the system combines JUPSOL/USD and SOL/USD feeds, inverting the latter to obtain USD/SOL.

Supported source types

This design enables the system to:
  • Aggregate rates from multiple feeds and providers, reducing dependency on any single source
  • Support diverse asset types including LSTs, stablecoins, and protocol tokens
  • Validate data integrity at each step

Validation

Freshness

Pyth and Redstone use Unix timestamp freshness. Chainlink uses slot-based freshness (≈400 ms per slot).

Confidence (Pyth only)

Pyth feeds include a confidence interval. The oracle rejects feeds whose confidence exceeds: Only Pyth validates confidence. Other sources (Chainlink, Redstone, StakePool, MsolPool, SinglePool, JupLend) either derive rates on-chain or only enforce freshness; they do not expose or check a confidence interval.

Providers

Oracle Verification Script

Use this script to verify oracle prices by providing a nonce. The oracle PDA is derived from the oracle seed and a 16-bit nonce.
For oracles that use SinglePool or JupLend sources, remainingAccounts must include 3 or 4 consecutive source accounts per hop respectively, as configured in the oracle. The script below works for simple oracles (e.g., single Pyth or Chainlink feed).