A PriceOracle is a native XRPL object that stores a set of signed price pairs (up to 10) alongside a Unix timestamp. Anyone can create one; consumers (AMM invariants, lending protocols, dApps) read the pairs directly from the ledger without trusting any off-chain relay.
Each entry carries a Provider tag, a URI pointing at the publisher's methodology, and a PriceDataSeries array. Prices are stored as an integer plus a Scale field — the real value is int(AssetPrice) ÷ 10^Scale. We decode all of that below so you're reading the actual number, not a hex blob.
| Pair | Price | Scale | Raw (hex) |
|---|---|---|---|
| XRP/USD | $1.0952 | 8 | 6871dd3 |
| BTC/USD | $61,895.30 | 8 | 5a11cbff5fd |
| ETH/USD | $1,703.08 | 8 | 27a72546bc |
| BTC/USD | pending | — | — |
| ETH/USD | pending | — | — |
| EUROP/USD | $1.1383 | 8 | 6c8e870 |
| RLUSD/USD | $0.999900 | 8 | 5f5b9f0 |
| USDC/USD | $0.999607 | 8 | 5f5474d |
| USDT/USD | $0.998734 | 8 | 5f3f261 |
| XRP/USD | pending | — | — |
| Pair | Price | Scale | Raw (hex) |
|---|---|---|---|
| XRP/USD | $2.4835 | 8 | ecd8ff2 |
| BTC/USD | $95,832.18 | 8 | 8b744504564 |
| DAI/USD | pending | — | — |
| ETH/USD | $2,684.82 | 8 | 3e82c17085 |
named_accounts.json (the walker picks them up on the next 30-minute cycle).
Fresh / Recent / Stale / Cold — the pill is the age of the oracle's LastUpdateTime. Fresh is under 15 minutes; Recent is under an hour; Stale is under a day; Cold is over a day (typical for uninitialized or abandoned oracles).
Prices — the actual numeric value after applying Scale. A 40-character hex currency code (custom-issued tokens) is decoded to its ASCII label where possible; otherwise it renders as a truncated hex fingerprint.
Provider tag — published by the oracle itself; it's not verified against any registry (Provider is any string the account chooses). The r-address is what actually identifies the publisher.