Skip to main content
Vanna’s core program never reads a price feed. A separate program, vanna_oracle, values every holding and reports which checks each price passed.

Sources

Each token’s sources live in the oracle’s price book, one OracleConfig per mint. Every account it reads is pinned in that config.

Checks

How a failed check is treated depends on the action. For the owner, a failed collateral price counts as zero and a failed debt price blocks. For liquidation, collateral counts at its reported value, and only fresh, confident prices are settled. A withdrawal with no debt reads no price at all.

Perps prices

Phoenix positions are valued at an index price for each listed market, held in the oracle’s market book alongside each market’s leverage cap.

On the fork

The fork has no live price pushers. The app’s price keeper copies Scope prices from mainnet and rewrites Pyth accounts with live prices before risk-checked transactions. That is demo infrastructure, not a mainnet oracle design. Stale or wide-confidence prices are never “used anyway”. The program does not fall back to a last good price.