← All findings
low CROSS_SURFACE_PRICE_MIX

QQQ: off-chain share price and on-chain token price differ by 0.070%

read from QQQ (0xD5f3879160bc7c32ebb4dC785F8a4F505888de68) · methodology assay-rh-v0.4.0 · detected 2026-10-08T03:56:45.000Z
from the sweep at block 83015737, 11m ago

Who carries the exposure

Any caller that values QQQ with an off-chain SHARE price, or computes a premium/discount between the on-chain token price and an off-chain share price.
The contract named above is what was READ. Naming it is not an accusation against it: a Stock Token that moves uiMultiplier() is doing what ERC-8056 specifies.

The Chainlink feed returns a multiplier-adjusted TOKEN price (759.9322), while Robinhood's REST /prices endpoint returns the RAW UNDERLYING share price (mid 756.9200). These are different quantities related by uiMultiplier(): underlying x 1.000700791 = 757.4504, leaving a residual of 0.328% against the observed feed price. That residual is NOT small relative to the 0.070% multiplier effect, so it is reported as an observation and no cause is asserted for it. Bid/ask spread and quote timing are plausible contributors but are not established here; a trading halt on the underlying would also produce it, and this sweep does not test that. The finding stands on the multiplier relationship itself, which is byte-verified: 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.070%.

Impact

0.0701% · how far the on-chain token price differs from the off-chain share price, as a share of the share price
feed 759.9322 vs underlying-mid 756.9200 x multiplier 1.000700791 = 757.4504

Evidence — 2/2 citations re-fetched and byte-compared

mismatched 0 · pruned 0 · verified 2026-10-08T03:56:49.997Z
uiMultiplier() == 1000700791241405425
chain 4663 · block 83015898 · uiMultiplier()
0xD5f3879160bc7c32ebb4dC785F8a4F505888de68
0x0000000000000000000000000000000000000000000000000de33411546573f1
latestRoundData().answer == 75993218086
chain 4663 · block 83015898 · latestRoundData()
0x80901d846d5D7B030F26B480776EE3b29374C2ae
0x000000000000000000000000000000000000000000000001000000000000019800000000000000000000000000000000000000000000000000000011b18c7c26000000000000000000000000000000000000000000000000000000006ac70128000000000000000000000000000000000000000000000000000000006ac701350000000000000000000000000000000000000000000000010000000000000198

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 756.9200 (not multiplier-adjusted)
fetched 2026-10-08T03:56:39.010819328Z
https://api.robinhood.com/rhj/prices/QQQ

Right of reply

No reply has been received for this finding. Anyone named here can have a response published verbatim and unedited alongside it. A finding shown to be wrong is corrected by changing the rule that produced it, with the notice recorded in the repository. Open a right-of-reply issue or see docs/RIGHT-OF-REPLY.md. Pre-publication notice is deliberately not claimed: the sweep publishes on a timer and for most findings the subject is a contract, not a person to notify.
QQQ: off-chain share price and on-chain token price differ by 0.070% · ASSAY