The chain sees two transactions.
It cannot link them.

Deposit USDG into a zero-knowledge pool, keep the note in your browser, then withdraw to any fresh address by proving the note is yours and unspent.

Groth16
Proof built in your browser
Poseidon · LeanIMT
Hash and Merkle tree
Nullifiers
One note, one spend
Gasless relayer
Withdraw without holding ETH
app.prive · console

Open, verifiable cryptography. No trusted custodian

Built on
Robinhood Chain
Proof system
Groth16
ZK hash
Poseidon
Merkle tree
LeanIMT
Asset
USDG
How it works

What you do, and what the chain sees.

Privé breaks the on-chain link between sender and receiver using a ZK shielded pool on Robinhood Chain. No trusted setup, no custodian.

01
Step 1 · Deposit

Deposit

Deposit any USDG amount into the Privé shielded pool on Robinhood Chain. Your wallet receives a private note, a cryptographic secret that represents your balance.

02
Step 2 · Prove

Prove

When ready to withdraw, your browser generates a Groth16 zero-knowledge proof locally. The proof shows your note is valid and unspent, without revealing which deposit it came from.

03
Step 3 · Withdraw

Withdraw

Submit the proof on-chain. The contract verifies it instantly, marks your nullifier as spent, and transfers USDG to a fresh address, settling on Robinhood Chain in seconds.

Privacy meets compliance

Private today. Provable next.

Privé is built on Privacy Pools. Unlinkable private transfers are live on testnet today. So is screening: a recomputable approved-set root and verifiable receipts. Enforcing that set inside the withdrawal circuit is what we are building next.

Proof-of-innocenceAttestation live · testnet

Private now. Screenable now. Enforced next.

An Association Set Provider screens deposits against a public policy and publishes an approved-set root that anyone can recompute from public chain data, with no signing key. Each note gets a clean status you can check, and a receipt you can export and a counterparty can verify. Making the withdrawal circuit itself enforce that membership is the next step, and it ships with the audit.

Deposit
ASP screen
Withdraw

sender to receiver link broken · approved-set root recomputable

Private by default

Live

All transfers route through a ZK shielded pool. Observers see only pool in and pool out. Sender and receiver are never linked on-chain.

Compliant by design

Attestation live

An Association Set Provider screens deposits and publishes a recomputable approved-set root, so a note carries a verifiable clean status, not a dark mixer. Enforcing it inside the circuit ships with the audit.

Verifiable on-chain

Live

A Groth16 proof is submitted to the Withdraw Verifier contract on Robinhood Chain. The contract checks it deterministically. No oracle, no committee, no trust.

Spend-once nullifiers

Live

Each private note is spent exactly once. The contract registers a nullifier hash on withdrawal, preventing double-spends without revealing which deposit was used.

Local note custody

Live

Your private notes are stored in your browser, never uploaded to a server. Privé has no custody of your funds or secrets at any point in the flow.

Arbitrary-amount withdrawals

Live

Withdraw any partial or full amount from your note. The LeanIMT Merkle tree and Poseidon hash function support flexible denominations without fixed pools.

Try it · testnet

Move USDG privately in three steps.

No sign up, no custody, no KYC. You do not even need ETH: a relayer covers the gas.

01

Get test USDG

Mint play-money USDG from the in-app faucet. It is a testnet token with an open mint, so there is nothing to lose.

02

Deposit into the pool

Your wallet receives a private note, held only in your browser. We cannot see it, and we cannot move it.

03

Withdraw to a fresh address

The proof is built in your browser and settles in seconds. An observer sees both transactions and cannot link them.

Open the explorer. Try to connect the two.

Connect a wallet and make your first private transfer on testnet. No registration, no custody, no KYC. Just a ZK proof.