Skip to main content
Oracles provide USD prices for collateral and debt assets. The protocol uses these prices to check borrowing capacity, account health, and liquidation. Actions requiring an invalid or unavailable price fail.

Price sources

A two-source configuration checks both feeds and uses their midpoint. The price read fails if either feed is unreadable or stale, or their difference exceeds the configured tolerance. There is no fallback to the remaining source. A single-source configuration uses that feed directly. It requires a tighter sanity band. These checks limit which prices the protocol accepts; they do not guarantee that an accepted price is correct.

Real-world asset prices

The XOXNO oracle supports feeds for real-world assets (RWAs). Authorized signers submit prices. When enough valid submissions meet the configured checks, its contract derives a median aggregate. The adapter exposes that aggregate to the lending price system. These feeds can follow net asset value (NAV) updates rather than exchange-price updates. Their freshness windows and sanity bounds reflect the configured feed. Feed availability does not by itself mean an asset is listed or usable for lending. See the oracle reference for feed configurations and the address reference for deployed adapters.

When price failures block actions

An action that values an account needs valid prices for every asset included in that valuation. A failed collateral feed can block borrowing or withdrawing a different token on the same account. A rejected transaction rolls back its changes. Interest still accrues with time, and other transactions can change balances. An unhealthy account can become liquidatable once its required prices recover. A missing or rejected price means the account’s value is unknown. It does not mean the asset is worth zero or the account has no debt. Plain repayment can reduce debt during an outage. Authorization, token transfers, and listing flags still apply. A paused listing blocks repayment even though prices are not required.

Sanity bounds and controls

Each configured sanity band sets minimum and maximum accepted USD prices. An out-of-range price is rejected; it is not adjusted to fit the range. Tightening a band can take effect immediately, while widening it requires the governance timelock. After a price-related failure, check price availability and listing controls before retrying. A recovering feed does not guarantee that account or liquidity checks also pass.