Skip to content
LogoLogo

Price oracles

Prices enter the protocol as signed attestations verified onchain, with Chainlink feeds as the primary source and a band-limited in-house signer filling gaps. Trade prices are never used as an oracle.

Architecture

ComponentRole
Chainlink feedsPrimary price source per ticker on Robinhood Chain
In-house KMS signerEIP-712 signed attestations; fills feed silences and serves market-session data; band-limited against the Chainlink anchor
ChainlinkOracleVerifierOnchain verification: signatures, staleness, deviation bands, monotonic sequencing
KeepersPermissionless: anyone can push a fresh verified price and re-stamp marks

Guards

GuardSettingPurpose
Deviation band5% (SPY, QQQ), 8% (single names)An in-house signature cannot move the price further than this from the Chainlink anchor, bounding a leaked signing key
Feed silence threshold15 minutesThe in-house signer only quotes when the Chainlink feed has been quiet longer than this
Fresh window4 hoursHow long a feed price stays usable
Anchor age limit5 daysOldest acceptable Chainlink anchor for band checks
Mark freshness (to mint)1 hourNew eToken exposure cannot open against an older mark
USDG configChainlink-only, 0% bandThe payment token needs no in-house override

Marks

The mark is the protocol's cached working price per asset and per collateral, refreshed only from verified oracle prices. Every settlement checks its quote against the mark (the ±5% settle band) and every new-risk path checks the mark's age. Off-hours, marks persist at the last session's anchor, which is what eUSD exits and PSM redemptions price against.

Failure behavior

  • A stale feed makes an asset read as stale to freshness-checking consumers: new risk pauses, exits continue.
  • A compromised in-house key is bounded by the deviation band and the monotonic sequence check.
  • Oracle infrastructure is upgradable through the ProtocolRegistry, which is how the protocol migrated from its original signer-only design to Chainlink-primary in July 2026 with a preserved rollback path.