← all findings
medium CROSS_SURFACE_PRICE_MIX

ORCL: off-chain share price and on-chain token price differ by 0.221%

subject ORCL (0xb0992820E760d836549ba69BC7598b4af75dEE03) · methodology assay-rh-v0.2.0 · detected 2026-09-21T20:59:55.000Z

The Chainlink feed returns a multiplier-adjusted TOKEN price (149.0284), while Robinhood's REST /prices endpoint returns the RAW UNDERLYING share price (mid 148.5300). These are different quantities related by uiMultiplier(): underlying x 1.002210915 = 148.8584 (residual 0.114%, attributable to bid/ask spread and quote timing). Valuing balanceOf() with an off-chain share price, or computing a premium/discount between an on-chain token price and an off-chain share price, produces a phantom error of 0.221%.

Impact
22.11 bps · 0.2211%
feed 149.0284 vs underlying-mid 148.5300 x multiplier 1.002210915 = 148.8584
Evidence — 2/2 citations re-fetched and byte-compared
mismatched 0 · pruned 0 · verified 2026-09-21T21:00:06.284Z
uiMultiplier() == 1002210914971013375
chain 4663 · block 69103080 · uiMultiplier()
0xb0992820E760d836549ba69BC7598b4af75dEE03
0x0000000000000000000000000000000000000000000000000de8918468ddd0ff
latestRoundData().answer == 14902841228
chain 4663 · block 69103080 · latestRoundData()
0x0e6a64a2B58A6693a531E6c555f3A5d042eEA844
0x00000000000000000000000000000000000000000000000100000000000008380000000000000000000000000000000000000000000000000000000378474f8c000000000000000000000000000000000000000000000000000000006ab1686f000000000000000000000000000000000000000000000000000000006ab1687c0000000000000000000000000000000000000000000000010000000000000838
Off-chain inputs — NOT covered by the byte-verified guarantee
The citations above are re-fetched from chain state and byte-compared. The values below cannot be, because they do not live on chain. They are listed so you can tell the difference.
underlying share bid/ask used for the mid 148.5300 (not multiplier-adjusted)
fetched 2026-09-21T20:59:54.389120965Z
https://api.robinhood.com/rhj/prices/ORCL