Monitor
Check that the stock prices Strike settles on are safe to use, right now.
Every Robinhood Chain stock token with a Chainlink feed, read live from mainnet and judged by the same rules as SafeStockFeed.status().
Read-only. The page uses its own mainnet client, whatever network the app is set to.
01 Stock tokens · 8
What each check protects against
The checks run in this order; the first one that trips is the verdict. Limits on mainnet: price age 25 h and grace 1 day.
Hide the checks
- 01Two pause layers · the token
TokenPaused
paused() == trueRobinhood can halt the token itself. A halted token has no tradable market, so no price for it is safe to act on, whatever the feed says.
SafeStockFeed.sol L55 - 02Two pause layers · the feed
FeedPaused
oraclePaused() == trueA separate flag Robinhood raises around corporate actions; while it is up the feed holds its last value. Testnet tokens don't have the function, and a missing or reverting call counts as not paused.
SafeStockFeed.sol L56 SafeStockFeed.sol L166 - 03Splits in flight
CorporateActionPending
uiMultiplier ≠ newUIMultiplier, or now < effectiveAt + 1 dayA split or stock dividend changes how many shares one raw token is worth. From the moment it is scheduled until a day after it lands, the feed and the token can disagree, so prices in that window are refused.
SafeStockFeed.sol L57 SafeStockFeed.sol L147 - 04Broken rounds
InvalidPrice
answer ≤ 0, or updatedAt > block.timestampA zero, negative or future-dated answer is a malfunction, never a price.
SafeStockFeed.sol L61 - 05Frozen weekend feeds
StalePrice
block.timestamp − updatedAt > 25 hStock feeds run 24/5 and have no heartbeat off-hours, so from Friday night to Sunday night the last print just sits there. Past the limit the price is stale, not merely quiet.
SafeStockFeed.sol L63 - 06Multiplier double-count
never × uiMultiplier
priceWad = answer scaled to 18 decimalsThe Chainlink answer already prices one raw token including the multiplier. Multiplying it again counts every split and dividend twice. Strike's math uses the feed price as-is; the per-share column above divides by the multiplier for display only.
SafeStockFeed.sol L11 SafeStockFeed.sol L159