Part IV · Protocol
Oracles & pricing
- Per-asset Chainlink feeds (8 decimals, 24/5 following US market hours). Feed proxies are pinned in protocol config alongside token addresses; both verified against official sources at deploy.
- The gauntlet, applied before any price is trusted:
oraclePaused() == false, a positive answer, a sane timestamp, and a round no older than the asset's staleness bound. Per-feeddecimals()is read live, never hardcoded. - Two freshness bounds, because looking and trading are different. Showing you a NAV uses a generous bound — these feeds follow US market hours, so a price legitimately goes untouched all weekend, and a tight bound would falsely mark healthy baskets as broken every Saturday. Moving your money uses a much tighter one: a basket may not trade against a price older than that asset's settlement bound (hours, not days).
- Chain outages need no special case. Chainlink prices reach the chain through the sequencer, so if the chain stops, prices stop arriving and go stale — and a stale price is one the basket refuses to trade against. Settlement halts on its own, and stays halted until fresh prices arrive. (Other chains use a dedicated "is the sequencer up" feed for this; Robinhood Chain doesn't have one, and this is a stronger check anyway: an "up" chain tells you nothing about whether the price is two days old.)
- ERC-8056 corporate actions: Robinhood stock tokens accrue dividends via an onchain multiplier. The Chainlink price already includes the multiplier: vault valuation is
rawBalance × feedPrice, never multiplier-adjusted twice. The multiplier is read only for share-equivalent display and corporate-action detection. - Corporate-action freezes are condition-based: an asset freezes from
effectiveAt − 24huntil its oracle unpauses and one fresh round publishes. Fixed windows that can end mid-pause are a known bug class; we don't have it. - 24/5 feeds on a 24/7 chain: no execution outside feed-live windows; Monday's window opens 30 minutes after the market does; weekend risk is disclosed, modeled, and priced into nothing silently.