Robinhood Chain: paid in USDG, checked against the feed

Robinhood's developer docs ask apps that read Stock Token prices to "reject stale prices" and, when mixing a share price with a token price, to "apply currentMultiplier". vet402 buys stock prices that x402 sellers offer on Robinhood Chain, pays in USDG, and holds each answer to those checks against the Chainlink feed of that Stock Token.

Method v3 · the check, in code

Updated 2026-09-30.

Stock prices sold over x402, against the Chainlink feed

Verdicts: agrees = within 0.5% of the share price (the feed's own deviation threshold), close = within 2%, differs = further. A feed older than its 24 h heartbeat, or a token whose oraclePaused() is true, gives no verdict. Outside the NYSE core session (9:30 a.m. to 4:00 p.m. ET on trading days) an answer more than 0.5% off is marked market closed, not held against the seller. A result that is not in the seller's favour is shown after vet402 has told that seller.

Reference read from Robinhood Chain at 2026-09-30T12:32:55Z to 2026-09-30T12:36:59Z. Share price = Chainlink feed (the token price) ÷ the token's uiMultiplier().
tickershare pricefeed ageseller saidverdict
AAPLfeed 0x6B22…2cD0$330.07token $330.26 · ×1.00056617.0 hboughtshown after the seller is told
TSLAfeed 0x4A11…7C38$352.28token $352.28 · ×1.0000000.0 hboughtshown after the seller is told
NVDAfeed 0x379E…9F15$228.00token $228.18 · ×1.00077518.6 hboughtshown after the seller is told
SPYfeed 0x3197…9f6A$765.09token $766.41 · ×1.00171821.9 hboughtshown after the seller is told
ORCLfeed 0x0e6a…A844$136.16token $136.46 · ×1.0022110.1 hboughtshown after the seller is told

Sellers that list Robinhood Chain: can they be paid there?

19
payTo addresses that the CDP, Dexter and PayAI catalogs list on Robinhood Chain
14
whose live 402 still offers it, read without paying
14
bought by vet402
9
paid, settled on chain and came back with an answer

One purchase per payTo, at the cheapest listing whose live 402 still offers Robinhood Chain in USDG. A purchase counts as settled only when vet402 reads the USDG transfer to that payTo back on chain; a payment that did not settle is never counted against the seller. A result that is not in the seller's favour is shown after vet402 has told that seller.

sellerpriceresultwhy not, and the fix
api.secondedoracle.xyz0x010a…cf3a · 1 listed–not boughtevery listing costs more than the per-purchase cap–
api.syraa.fun0x07cF…2396 · 5 listed–not boughtthe live 402 no longer offers Robinhood Chain–
api.dexl.io0x0cCd…8667 · 7 listed0.001 USDGsettled on chain, came back0x57500ec8… · 4.5 s–
dlf-gateway.agentlabel.workers.dev0x20Fb…406E · 1 listed–not bought–
whaletape.xyz0x25a8…4145 · 3 listed0.001 USDGsettled on chain, came back0x1c3a7fb9… · 5.3 s–
api.loopholetape.com0x25d4…59c2 · 19 listed0.001 USDGsettled on chain, came back0x003aaf50… · 6.2 s–
clawhunter.fun0x3201…59E5 · 2 listed0.03 USDGbought; the result is shown after the seller is told–
onchainpulse.theaslangroupllc.combought here; the same payTo also serves 7 other hosts0x50ab…12fc · 31 listed0.005 USDGsettled on chain, came back0x99c523d4… · 5.9 s–
oracle.the-undesirables.com0x642e…Cc1B · 1 listed0.10 USDGvet402's request was incomplete; nothing settled, not counted against the sellervet402's request: an input the seller requires was missing or empty
api.sys84.org0x64e4…89E4 · 3 listed0.01 USDGbought; the result is shown after the seller is told–
hosaka-agents.vercel.app0x712c…648a · 3 listed0.005 USDGsettled on chain, came back0xb80ac2ed… · 2.5 s–
conc-exe.xyz0x94db…56f3 · 4 listed–not boughtthe live 402 no longer offers Robinhood Chain–
agent402.tools0xaBF4…a9D0 · 601 listed0.001 USDGsettled on chain, came back0xec750aaf… · 5.2 s–
gateway.spraay.app0xdAA0…9F33 · 17 listed0.001 USDGsettled on chain, came back0x05d5f69a… · 1.6 s–
api.x402gle.com0xDDDD…eB5E · 137 listed0.05 USDGsettled on chain, came back0x68052a3e… · 2.6 s–
web-production-220a3.up.railway.app0xE81C…56F6 · 22 listed0.02 USDGsettled on chain, came back0x741dd650… · 5.9 s–
api.prismnetwork.tech0xEcaa…1039 · 1 listed0.003192 USDGbought; the result is shown after the seller is told–
equity.lonestaroracle.xyzbought here; the same payTo also serves 11 other hosts0xeF2a…42ab · 12 listed0.05 USDGbought; the result is shown after the seller is told5 purchases–
api.syraa.fun0xF9dc…e734 · 11 listed–not boughtthe live 402 no longer offers Robinhood Chain–

The daily record on Robinhood Chain

After each UTC day with purchases, vet402 writes that day's Merkle root into DeliveryRoots on Robinhood Chain, at 0x84DB4733f8F9e6803Af811fD9E438aEBc0b90145. A day is written once and never changes, and only vet402's own key for this contract can write it.

The root holds facts, not verdicts. Each purchase is one leaf: what vet402 paid and to whom, the settlement transaction the chain shows for it (or that none was found), and what came back (the HTTP status, the size and the sha256 of the answer, not the answer). Whether a purchase counts as delivered, and whose side a failure is on, is not in the root: it is decided each time this page is built, with that day's rules, so a rule change never leaves an old verdict on chain. To check a purchase, take its record from data/evm/roots/robinhood.json, compute keccak256 of the record as canonical JSON (keys sorted, no whitespace, strings escaped as JSON.stringify does), and call verify(dayNumber, digest, proof) on the contract: it returns true only for a record of that day. Another contract can make the same call.

Every purchase is in the root from the start. A purchase whose verdict today is not in the seller's favour has its record shown only after vet402 has told that seller; until then the file shows its index alone.

UTC daydayNumberpurchases in the rootrecords shownroottransaction
2026-09-30207261890x4ac0fb9e…0x86e3f916…

How vet402 pays for this

vet402 pays from one wallet, 0x9B59…4E51, the same on every EVM chain it buys on, with the seller's own x402 402: exact scheme, EIP-3009 transferWithAuthorization only (no Permit2, no approve), to the payTo the 402 named when vet402 planned the purchase, never more than that price. On this chain: at most 0.10 USDG a purchase, 1.00 USDG in total and 20 purchases, in a ledger of its own. The facilitator the seller chose submits the payment and pays its gas.