ZeroPrint Launch App →
Robinhood Chain

Know your footprint.
Leave zero.

Private ETH transfers on Robinhood Chain. See what your wallet gives away, then cut the link: a zero-knowledge proof made in your browser moves your ETH to a fresh wallet that nothing points back from.

–approved deposits in the crowd
–ETH in the pool
0admin keys (owner renounced)
0%protocol fee

What you get

Privacy that you can check, built on audited open-source contracts.

Private withdrawals

Withdraw to any fresh address. A relayer pays the gas, so the new wallet never needs funding from the old one.

A crowd, not a promise

Privacy here is a number you can read: every withdrawal could have come from any approved deposit of at least its size. Each deposit makes the rest harder to single out, so the pool protects people better the more of them use it — and the app shows you the size of your crowd before you withdraw.

Swap without a deposit

Hold USDC on Solana, ETH on Base, BTC? Send it from any wallet or exchange and a fresh address receives another asset, with no key and nothing signed here. It breaks the chain's record of who paid whom — see what it does not hide.

Clean-funds proof

Every deposit is screened against OFAC and known scam wallets. Your proof shows you are in the clean set, so honest users never share a crowd with hackers.

No admin keys

The owner role was renounced at deploy. Nobody can upgrade, pause or move funds. Ragequit always returns a deposit to the wallet that made it.

Exit as anything, anywhere

Receive USDC, SOL, BTC, ZEC or ETH on Solana, Base, Arbitrum, Ethereum, BNB Chain or Robinhood Chain itself. The withdrawal passes through a single-use wallet of your own, so the bridge never sees which deposit was yours.

Privacy meter, and splits

Before you confirm, the app rates the withdrawal from the public deposit set and says what is weak. Split it into smaller parts at random times, to different wallets, in one step.

Footprint scan

See what anyone can see about a wallet: where its money came from and where it went, across Robinhood, Ethereum, BSC, Base and Solana.

How it works

Three steps. The secret part happens on your device.

  1. 01

    Deposit

    Create a 12-word Zero Key. Your wallet sends ETH with a commitment derived from it: a hash that hides who can spend it.

  2. 02

    Blend into the crowd

    The ASP checks the deposit (about 30 minutes). Meanwhile others deposit too. Everyone approved is your anonymity set.

  3. 03

    Withdraw

    Your browser builds a zero-knowledge proof: "I own one of these clean deposits." The relayer submits it to a fresh address, on Robinhood Chain or on Solana, Bitcoin and five other chains. A meter rates how well the withdrawal hides before you confirm it.

Zero-knowledge, for real

Not a mock-up. These are the circuits and contracts the pool runs on.

  • Groth16 proofs from Circom circuits, audited by Oxorio
  • Trusted-setup keys from the public 0xbow ceremony, hash-checked before use
  • Commitment = Poseidon(value, label, Poseidon(nullifier, secret))
  • Lean incremental Merkle trees for the pool and the clean set
  • Proofs made in the browser: your keys, nullifiers and secrets never leave it
  • Owner role renounced: no upgrades, no pause, no fee switch
Verify it yourself →
// packages/circuits/circuits/withdraw.circom (excerpt)

// 3. Your note is somewhere in the pool tree…
component stateRootChecker = LeanIMTInclusionProof(maxTreeDepth);
stateRootChecker.leaf <== existingCommitment;
stateRootChecker.siblings <== stateSiblings;
stateRoot === stateRootChecker.out;

// 4. …and its deposit is in the clean (ASP) set
component ASPRootChecker = LeanIMTInclusionProof(maxTreeDepth);
ASPRootChecker.leaf <== label;
ASPRootChecker.siblings <== ASPSiblings;
ASPRoot === ASPRootChecker.out;

// 6. A spent note can never be spent again
nullifierEqualityCheck.in[0] <== existingNullifier;
nullifierEqualityCheck.in[1] <== newNullifier;
nullifierEqualityCheck.out === 0;

What ZeroPrint does not do

Honest limits. If a privacy tool promises more, be careful.

It doesn't make you invisible

You hide in a crowd. A small pool is a small crowd. Wait, and let others deposit, before you withdraw.

It doesn't hide amounts

Deposits and withdrawals are public. Depositing 0.3712 and withdrawing 0.3712 is easy to match. Use round amounts.

It isn't for stolen funds

Flagged deposits are denied. They can only ragequit, publicly, back to the wallet that sent them.

Bridging is not a disguise

Bridge records are public. Moving to another chain breaks most tracking tools, not a determined one. The crowd you hide in is still the pool.

It can't recover your key

No accounts, no custody. Your 12-word Zero Key is the only way to withdraw. Write it on paper.

FAQ

Is ZeroPrint custodial?

No. Funds sit in a smart contract with no owner. Only someone holding a note's secret can withdraw it, and only the depositing wallet can ragequit.

Who runs the ASP, and what can it do?

We do. It can approve or deny deposits for private withdrawal. It cannot move or freeze funds: a denied deposit can always ragequit back to its sender.

What if this website goes away?

The contracts keep working without us. Your Zero Key rebuilds your deposits from the chain, and ragequit needs nothing but the contract.

Why wait 30 minutes after depositing?

So hacks can be reported before stolen funds get a private exit, and so more people deposit after you.

What is Footprint?

A read-only scan of any wallet's public money trail. Use it before you deposit to see what is already linked to you, and after you withdraw to check that your fresh wallet only shows the relayer.

Can I receive another token, or on another chain?

Yes, and the two work the same way. Under Receive, choose the chain — Robinhood Chain, Solana, Base, Arbitrum, Ethereum, BNB Chain, Bitcoin or Zcash — and then the token, such as USDC, a stablecoin on Robinhood Chain, or BTC. The recipient gets that token directly and never holds ETH. The pool pays a single-use wallet derived from your Zero Key, and that wallet pays the bridge, so the bridge only ever sees an ordinary transfer. We ask Relay and NEAR Intents for quotes through this site, so neither of them sees your IP, and the better quote wins. If a bridge cannot fill the order it refunds your own wallet, and you can retry or sweep it from the app.

Does bridging make me more private?

A little, not a lot. Bridge records are public, so a determined observer can follow the hop to the other chain and see the amount. Receiving a rare token can even expose you further, since few wallets hold it. What it does give you is a bigger crowd on the destination side and a trail most tools stop following. Amount and timing still matter more than the route: read the privacy meter.

What is the privacy meter?

A live rating of the withdrawal you are about to make, computed in your browser from the deposit list everyone can read. It counts how many deposits could have been the source, warns when you are taking out exactly what you put in, and tells you when you are withdrawing too soon. Nothing about you is sent anywhere to compute it.

What exactly gets denied?

One thing is checked: the wallet that sent the deposit. It is denied if that wallet is on the OFAC sanctions list, or on a short list of wallets we have identified as scams on Robinhood Chain. Nothing else — no risk score, no chain-analysis vendor, no profile of you. A denied deposit is never frozen: ragequit returns every wei to the wallet that sent it, and the denial is an on-chain event with its reason in plain text. Honest limit: sanctions lists name addresses long after the fact, so money stolen today will pass. The details are in the docs.

What does it cost?

No protocol fee. The relayer charges only the gas it pays, capped at 0.5% by the contract. Withdrawing to another chain costs the bridge's own fee, which you see before you confirm; we add nothing to it.

Try it on testnet

Free test ETH, real zero-knowledge proofs.