Shielded Pool
The shielded pool is a set of smart contracts on Robinhood Chain holding ETH, USDG, and Robinhood stock tokens. Ownership inside the pool is represented as notes, not balances.
Notes and commitments
A note is an encrypted record:
note = (asset, amount, owner key, randomness)
Only a cryptographic commitment to each note is stored on-chain, in a Merkle tree. The note itself lives on your device.
Lifecycle
Deposit
Creates a new note and inserts its commitment into the tree. Deposits enter the pool in timed batches, so the timing of a deposit doesn't identify the depositor.
Hold
Your balance is the sum of your unspent notes, computed client-side. No contract or indexer ever holds a plaintext balance.
Spend
Publishes a nullifier — a one-way tag derived from the note — plus a zero-knowledge proof that:
- the note exists in the tree,
- the spender owns it, and
- the nullifier is correctly derived.
The nullifier prevents double-spending without revealing which note was spent.
Unlinkability
Commitments are unlinkable to deposits, and nullifiers are unlinkable to commitments. An observer sees that some value entered and some value moved — never whose, nor how much in aggregate per user.
Related utilities
- Shielded balances — hold ETH, USDG, and stock tokens privately.
- Private stock token trading — buy and sell tokenized stocks without exposing positions or entry prices.
- Batched deposits — deposit timing doesn't identify you.
- Per-dapp addresses — a new address per connected app.
- Exposure scan — before shielding, see how tracked and labeled your public wallet already is.
- Private RPC — wallet queries go through the relayer network so your IP isn't linked to your addresses.