Skip to content

Shadow: prices without a transaction

Explore a feed, follow a price or build a terminal without sending a refresh transaction for every update.

Shadow is the offchain pricing mode of Mimir's indexer. It reads onchain account data and calculates a feed's price outside Solana, for applications that need to display the result rather than record it onchain.

The same pricing logic, offchain

Shadow reuses Mimir's oracle calculation core, following the feed's definition, component quantities and quote conversions. Explorers and terminals can use that calculation without rebuilding the pricing logic themselves.

At the same slot, with the same account state, feed configuration and calculation version, Shadow and the onchain oracle calculate the same price.

This compares the same inputs within that slot: pool accounts can change as transactions execute. A Shadow price based on newer pool data can differ from the last price recorded onchain.

For example, a terminal can follow the AI Chips reference as its inputs change, including the MRVL/SOL conversion, without asking someone to refresh the feed onchain just to display a new price.

No refresh transaction to display a price

An offchain calculation does not submit a Solana transaction, pay an onchain refresh fee or change the feed's stored observation. Reading the result does not require a wallet signature. Hosting and data-service pricing are separate from these onchain costs.

This is different from simply reading the feed account: an account read returns the last recorded observation; Shadow calculates a result from the account data it has read. Its observation time matters, since pool state can change between that calculation and a later onchain refresh.

Choose the path for your application

What you are buildingPrice path
An explorer showing feeds and their compositionsShadow for offchain display.
A terminal or dashboard following pricesShadow for updates without a refresh transaction.
An onchain action that consumes an updated oracle priceRefresh the feed, then consume it in the same transaction.

The two paths work together. A trading interface can display a Shadow price while the transaction uses an onchain refresh for execution. A displayed Shadow result is not itself a newly recorded onchain observation.

Connection details and client examples will accompany the SDK documentation.

Next: refresh and consume onchain, or understand price freshness.

Documentation v0.1.1 · Beta