Skip to main content
Every reserve needs a valid oracle. Oracle configuration lives inside the reserve config under tokenInfo. Reserves are priced through Scope, Kamino’s price aggregator.

How pricing works

Scope combines provider feeds (Chainlink and Pyth Pro) into a single, manipulation-resistant chain of indices, and exposes custom oracle types for fixed-income, pegged, multi-source, and LST assets. You wire a reserve to a Scope feed by setting scopeConfiguration in tokenInfo: the price chain, TWAP chain, and guards. For an asset that isn’t in Scope yet, coordinate with the Kamino team to add it before listing.

Required tokenInfo fields

Plus the Scope feed:
  • scopeConfiguration — Scope feed pubkey + price chain + TWAP chain

Update oracle config via SDK

The most direct path for changing just the Scope oracle on an existing reserve is kaminoManager.updateReserveScopeOracleConfigurationIxs. For broader reserve updates that include oracle changes, use updateReserveIxs with a full ReserveConfig.
1

Initialize KaminoManager and fetch the reserve

2

Update Scope oracle configuration

65535 (u16::MAX) is the unused-slot sentinel. A single-hop Scope chain uses [N, 65535, 65535, 65535].
3

Adjusting the TWAP / staleness guards

To change the staleness and TWAP guards, fetch the reserve’s full config, mutate the relevant tokenInfo fields, and apply via updateReserveIxs:

Looking up oracle IDs

Or call the kamino-manager CLI’s get-oracle-mappings command (next tab) to retrieve the canonical IDs.

TWAP and staleness guards

The two guards work together to reject manipulated or stale prices. If TWAP is enabled (maxTwapDivergenceBps > 0) the Scope feed must expose a TWAP chain. The on-chain validator returns InvalidTwapConfig if you enable the guard against a feed with no TWAP.

Price heuristic

The heuristic is an absolute price band:
With exp: 1, the price is accepted only when 0.9 ≤ price ≤ 1.1. Useful for stables you expect to peg. Set all zeros to disable.

Block price usage (emergency)

blockPriceUsage: 1 is an emergency switch: the reserve is configured normally but the program refuses any operation that needs the price. Use it when you need to halt a reserve immediately while preparing a real config update.

Choosing for new assets

Reference