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:

  1. the note exists in the tree,
  2. the spender owns it, and
  3. 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.

  • 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.