ReserveProof

Proof of reserves · USDG and Robinhood Stock Tokens · Robinhood Chain

Proof that your custodian actually holds your stocks and dollars.

The custodian commits what it owes on-chain, reserves are read straight from its wallets, and anyone can check their own balance. A lending market adds one modifier, onlySolvent(asset), and new borrowing stops the moment the proof fails. Repaying and exiting never do.

Reading Robinhood testnet…

On Robinhood Chain mainnet today

Real stock tokens back real loans. Nothing checks the custodian.

Block 75,032,783, 28 Sep 2026 · method ↗ · every market, live →

Stock tokens on Morpho

$158.3M

total supply of 50 issuer-listed stock and ETF tokens

USDG in circulation

675.5M

Paxos dollar stablecoin

Lent against stocks

745K USDG

167 Morpho markets · 675K borrowed

Reserve-proof oracles

None

113 of 167 oracles read price feeds only; 54 unclassified

Live demo

Kopi Wallet on Robinhood testnet

Every figure below is read from the chain as you watch. Nothing is signed or sent, and no wallet is needed.

Last published

—

—

mTSLA coverage

—

min(samples, live) · required ≥ —

Contracts verified

—

checked on Blockscout ↗

Scene 1 of 5

One wallet, one custodian

A reserve wallet can back only one custodian. Trying to count the same wallet for a second custodian is rejected on-chain, so reserves can't be double-counted.

Price safety is not reserve safety

A price oracle checks the price. ReserveProof checks the backing.

A market's price oracle stops it from lending on a price it can't trust. ReserveProof stops it from lending against a stock token whose custodian can't prove it still holds the stock. They fail on different days, so a market needs both.

Question it answers

Price oracle

Is this price right, fresh and from the right source?

ReserveProof

Does the custodian still hold what it owes, and will it pay people who exit?

What it catches

Price oracle

A stale or wrong price feed, a closed market, a price that moves too far too fast

ReserveProof

Reserves drained (LIVE_SHORT), a proof left to go STALE, liabilities understated (user fraud proofs, DISPUTED), an unanswered balance challenge, an unpaid exit claim (EXIT_DEFAULT), a stock split the liability book hasn't caught up with (MULTIPLIER_DRIFT)

Blind spot

Price oracle

A perfectly priced token whose custodian has already sold the stock behind it

ReserveProof

Whether the price itself is right: it forwards whatever the base oracle says

On Morpho

Price oracle

Is the market's oracle

ReserveProof

Wraps the market's existing oracle and gates it

stack them

One constructor: the market's price oracle becomes the base, ReserveProof gates it.

new SolvencyGatedMorphoOracle(
    priceOracle,                // base price from the market's existing oracle
    solvencyOracle, custodianId, TSLA,
    72 hours, 6 hours, 5000     // freeze cap, poke gap, 50% price after the cap
);

See it fail closed: the what-if simulator on the live contracts · npm run demo:morpho-fork against the real Morpho Blue on a mainnet fork · curator risk: which gated markets would freeze, and when · mainnet radar: every live Morpho market marked would gate, wouldn't, or copycat

Explore

Check it yourself

Every claim on this site links to a live read or a public run. Start anywhere.