Divergences
Continuously cross-checks the canonical Stellar Index VWAP against external references. A persistent gap flips flags.divergence_warning on the canonical coin pages and writes a row to the divergence_observations hypertable for the historical trail.
Divergence board
Latest comparison per (pair, reference) over the trailing 7 days — our VWAP vs each external reference, widest gap first.
Loading…
Why we monitor divergence
We never include external references in the canonical VWAP — mixing them would import their methodology and double-count whichever upstream markets they read. But silence on divergence would let a quiet decode bug or a stuck Reflector update skew prices for hours before anyone noticed.
The divergence worker reconciles. For every (pair, reference) tuple, every refresh tick, it compares our VWAP to what the reference reports, persists the row, and (per ADR-0019) drives the multi-factor confidence score that gates the freeze decision.
CoinGecko
ActiveHTTP price index
Aggregator-of-aggregators. Useful as a sanity reference because it's not on-chain and pulls from a different upstream set.
Chainlink HTTP
ConfiguredHTTP feed (off-chain Chainlink)
Independent price index via mainnet AggregatorV3 contracts on Ethereum. Queried over public RPC (eth.llamarpc.com). Drives the divergence worker's "are we wildly off" alerting threshold.
- EUR/USD0xb49f67…34C1
- GBP/USD0x5c0Ab2…d4b5
- JPY/USD0xBcE206…beb3
Reflector (DEX/CEX/FX)
PlannedOn-chain SEP-40 oracle
Stellar-native oracle trio. Reflector divergence often signals an oracle update lag rather than a real price move — important to distinguish for downstream consumers like Blend.
Redstone
PlannedOn-chain adapter contract
Pull-style oracle on Stellar. Divergence here is rare but high-signal — Redstone batches many feeds in one transaction so divergence on one feed often precedes a wider reading update.
Band
PlannedOn-chain Soroban contract (no events)
Operation-args ingest (Band emits zero events). Divergence checks read the same relayed value the on-chain consumer would see.
Reading the board
The board above shows the latest comparison per (pair, reference) over the trailing 7 days, widest gap first. A row marked firingbreached its per-(reference, pair) threshold at its last observation — that's what contributes to flags.divergence_warning. Δ% is (our − reference) / reference × 100; negative means our VWAP sits below the reference.
Per-incident time-series drill-downs (delta % over time for one pair/reference) are the next addition — the divergence_observations hypertable already holds every tick. Methodology rationale lives in ADR-0019.