ROBIN POOL
$ROBINPOOL

Docs

Status: the pool contracts are live. They have not been audited yet and the circuit's trusted setup had a single contributor, so keep amounts small.

Getting started

What ROBIN POOL is

ROBIN POOL is one shielded pool per token on Robinhood Chain. Coins that enter stop being wallet balances and become notes: sealed commitments that only their owner can read or spend. Inside the pool nobody can see balances, senders, receivers or amounts. Coins can leave to any wallet, including a brand-new empty one, with a relayer paying the gas.

Native ETH and any ERC-20 on the chain can have a pool. If a token has none yet, one transaction opens it for everyone.

Hold privately

Your shielded balance is not on any explorer. Only your keys can read it.

Pay privately

Send to another shielded address. No sender, receiver or amount on chain.

Exit anywhere

Withdraw to any wallet. The relayer pays gas, so that wallet never signs.

Quick start

  1. 1Connect. Any EVM wallet that announces itself in the browser (EIP-6963): MetaMask, Rabby, Coinbase Wallet, OKX and others. The app asks the wallet to switch to Robinhood Chain (chain id 4663).
  2. 2Unlock. Sign one plain-text message. Your pool keys are derived from that signature inside the browser. Nothing is uploaded or stored; sign again next time and the same keys come back.
  3. 3Shield. Pick a token, enter an amount, confirm once in the wallet. The coins move into the pool and you receive a note.
  4. 4Pay or unshield. Pay a shielded address from Send, or take coins out to any wallet from Unshield. Both are submitted by the relayer, so you pay no gas and your wallet does not appear.

Wallets

Deposits are ordinary transactions signed by your wallet: an ERC-20 approval the first time you shield a token, then the deposit itself. Private payments and unshields are built in your browser and handed to the relayer, which signs and pays for them, so your wallet is not involved at all. If the wallet does not know Robinhood Chain yet, the app offers to add it with RPC https://rpc.mainnet.chain.robinhood.com.

How it works

Keys and your shielded address

You sign a fixed message. From that signature the app derives two keys: a spending key, whose hash is your note public key, and an encryption key used to receive notes. Your shielded address starts with rp and carries both public keys. It is the same every session, it is safe to share, and the chain never mentions it. One wallet gives one shielded address; use separate wallets for separate identities.

Notes and commitments

A note is an amount, an owner key, a random blinding value and the token. On chain only its commitment is stored, a hash of those four values appended to the pool's Merkle tree, next to a short ciphertext that only the owner can decrypt. Two payments to the same person produce two unrelated commitments. Your balance is the sum of unspent notes your keys can open; the app finds them by trying to decrypt every ciphertext in the pool.

Proofs and nullifiers

Every spend carries a zero-knowledge proof of three facts: the notes exist in the tree, you know their secrets, and value in equals value out. The proof reveals none of the inputs. Each spent note also publishes a nullifier, which the contract records so the note can never be spent twice. A nullifier cannot be traced back to its note. One proof spends up to two notes and creates two: a payment is one note for the recipient plus change for you.

The doors

The pool has two public doors: shield and unshield. Both show a wallet, a token and an amount, like any transaction on Robinhood Chain. Everything between the doors, holding and paying, shows nothing. A wallet that shields 1,000 and pays three people appears on chain as one deposit and three relayer transactions with no sender, receiver or amount.

Using the pool

Shield

The amount you enter is what leaves your wallet. The card shows what you will hold after the protocol fee before you confirm. Deposits count after one confirmation and show up in your shielded balance without a reload.

Pay privately

Paste the recipient's rp… address, enter an amount, send. Your browser builds the proof and the relayer submits it. The chain sees two new commitments, two nullifiers and a flat fee. The fee is flat on purpose: a percentage would be visible and would give the amount away.

Unshield

Enter any Robinhood Chain address. The relayer signs and pays gas, so the destination can be a wallet that has never held ETH. The destination and amount are public; which deposit funded them is not. MAX fills in everything you can move after the fee.

Any token

Search a token or paste its contract. If no pool exists, opening one is a single transaction that anyone can send, and the pool then stays open for everyone. Tokens that take a fee on transfer are credited with what actually arrives. Gasless actions need a market price for the token so the relayer can quote its flat fee; shielding never does.

Fees

The protocol fee is set once at deployment (default 0.5%) and can never exceed 1%. The relayer fee covers its gas and is quoted live.

ActionFeePaid inWhy
Shield0.5% of the amount, on topthe token, from your walletprotocol revenue
Pay privatelyflat, the relayer's gasthe token, from the noterelayer gas; flat so it reveals nothing
Unshield0.5% of the amount + relayer gasthe token, from the noteprotocol revenue plus relayer gas

Privacy

What is hidden, what is not

Public

  • Shield: wallet, token, amount
  • Unshield: destination, token, amount
  • That a private payment happened, and its flat fee
  • Timing of everything

Private

  • Your shielded balance
  • Who paid whom, and how much
  • Which deposit funded which withdrawal
  • Your shielded address itself

Good practice

Don't mirror your deposit

Taking out exactly what you put in, minutes later, from a quiet pool is easy to guess. Use odd amounts and uneven splits.

Give it time

The longer between doors, and the more people using the pool in between, the weaker any guess.

Exit to a different wallet

Unshielding back to the wallet you shielded from undoes the point. A fresh wallet needs no ETH.

Pay inside when you can

A private payment touches no door at all. If the other side has a shielded address, use it.

Trust

Status and addresses

NetworkRobinhood Chain · chain id 4663
$ROBINPOOLlaunching soon
Pool factory0xdB50E028F1Dc5F6b7b77f34bE5DE3b2393D1a5FA
Deployed at block66246977
Explorerrobinhoodchain.blockscout.com

Security

Your keys never leave the browser and are rebuilt from one signature each session. The relayer only ever sees finished proofs: it can refuse to submit, but it cannot spend, redirect or read your notes, because the recipient, amount and fee are bound into the proof. The contracts have no owner and no admin function; the protocol fee is fixed at deployment and capped at 1% in code. They have not been audited yet. The circuit's phase-2 trusted setup had one contributor on top of the public Perpetual Powers of Tau; a multi-party ceremony is planned before large amounts are accepted.

FAQ

Can I use it today?

Yes, with small amounts while the contracts await an audit.

Do I need ETH in the wallet I withdraw to?

No. The relayer pays gas for unshields, so the destination can be empty.

What if the relayer goes offline?

Your notes stay in the pool. The contract accepts a valid proof from anyone, so you can submit from your own wallet (which shows your address).

Does the site store anything about me?

No account, no server-side profile. The browser remembers which wallet you used last, nothing else.