Skip to main content
The protocol needs a USD price input for every collateral and debt asset. Prices come from on-chain oracle sources configured per market. There is no guarantee of oracle correctness. When configured checks fail (staleness, disagreement, sanity bounds), risk-increasing actions may fail closed instead of executing on a rejected number.

Price sources

Most liquid markets use two sources: one Reflector feed and one RedStone feed. With two sources, the price is the midpoint of the two — or there is no price at all. There is no falling back to one leg. The read fails if either source is unreadable, either is stale, or the two disagree by more than the configured tolerance. Some markets, usually RWA listings, run on a single source instead. That source is used directly, but it has to pass a tighter sanity band to be allowed at all.

XOXNO oracle (RWA listings)

Some tokenized RWA market listings do not have a Reflector or public RedStone feed on Stellar. For those markets, a multi-signer oracle may be configured: registered bots submit prices; the on-chain contract aggregates a median and exposes a RedStone-compatible read surface through the XOXNO oracle adapter. A market listing is a protocol configuration choice. It does not imply issuer endorsement, regulatory compliance, or that a token is suitable for any user. Mainnet config may wire share-class feed ids (for example Spiko EUTBL / USTBL / UKTBL / SAFO classes, Centrifuge deJTRSY / deJAAA) to that adapter. Those listings usually use a single primary source (no Reflector anchor) with tighter sanity bands and longer freshness windows suited to NAV-style updates. Feed ids, adapter addresses, and RWA listings are documented in Oracles (reference) and Addresses. Related risk profiles may use separate spokes — see Spokes.

When prices block you

The protocol fails closed on price, and it does so uniformly: every action that has to value your account needs a complete, trusted price for every asset on it. There is no lenient mode for supplying or repaying. An asset that stops pricing is the system working as designed, not a solvency event. No funds move during an oracle disruption. The real exposure is that a position which becomes unhealthy while a feed is down cannot be liquidated until the feed recovers.

Sanity checks

Each asset has minimum and maximum plausible USD bounds. A price outside them is rejected, never clamped into range. Those bounds can be tightened immediately in an emergency, but widening them requires the full timelock.

What you should do

  1. Watch health factor on XOXNO in fast markets.
  2. If an action fails on price, wait for feeds to refresh — the protocol is refusing to act on a number it does not trust, which is the safe state.
  3. For RWA collateral, expect NAV-style update cadence — not CEX tick speed.
Integrators: strategies, staleness windows, XOXNO oracle surface, and policies are in Oracles (reference).