← all findings
medium CROSS_SURFACE_PRICE_MIX

SGOV: off-chain share price and on-chain token price differ by 0.510%

subject SGOV (0x92FD66527192E3e61d4DDd13322Aa222DE86F9B5) · methodology assay-rh-v0.2.0 · detected 2026-09-21T20:53:09.000Z

The Chainlink feed returns a multiplier-adjusted TOKEN price (101.1082), while Robinhood's REST /prices endpoint returns the RAW UNDERLYING share price (mid 100.5950). These are different quantities related by uiMultiplier(): underlying x 1.005101770 = 101.1082 (residual -0.000%, 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.510%.

Impact
51.02 bps · 0.5102%
feed 101.1082 vs underlying-mid 100.5950 x multiplier 1.005101770 = 101.1082
Evidence — 2/2 citations re-fetched and byte-compared
mismatched 0 · pruned 0 · verified 2026-09-21T20:53:18.112Z
uiMultiplier() == 1005101770003214918
chain 4663 · block 69099030 · uiMultiplier()
0x92FD66527192E3e61d4DDd13322Aa222DE86F9B5
0x0000000000000000000000000000000000000000000000000df2d6bc0c287246
latestRoundData().answer == 10110821255
chain 4663 · block 69099030 · latestRoundData()
0xa0DF4ee0fFf975306345875E3548Fcc519577A11
0x000000000000000000000000000000000000000000000001000000000000003f000000000000000000000000000000000000000000000000000000025aa6e387000000000000000000000000000000000000000000000000000000006ab0738f000000000000000000000000000000000000000000000000000000006ab0739b000000000000000000000000000000000000000000000001000000000000003f
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 100.5950 (not multiplier-adjusted)
fetched 2026-09-21T20:53:04.795026107Z
https://api.robinhood.com/rhj/prices/SGOV