The pool, the proofs and the relayer: read how Lethe works →
A classical marble head dissolving into white grain on black
How a withdrawal stays unlinked

Shield it. Withdraw anywhere.

The first privacy protocol on Elysium. Shield HYPE or USDC, send inside the pool, withdraw to a fresh wallet.

HYPEUSDC
Groth16 proofs
Poseidon tree, depth 20
100 root history
Two notes in, two out
Proved in your tab
Relayer pays the gas
Notes encrypted to you
No upgrade path
How it works

A withdrawal is a proof, never a signature. The wallet that paid in never signs the way out. The relayer pays the gas, so the fresh wallet starts at zero.

ShieldSend insidePay by linkWithdrawRequest

Shield HYPE or USDC. Your wallet pays once. The amount becomes a note only your shielded key can spend, sealed into a Merkle tree of every note in the pool.

PoolHYPE, native
Amount5 HYPE
CommitmentPoseidon(amount, pubKey, blinding)
What the chain seesOne commitment, one encrypted note
A binary tree of white grain dissolving at its leaves
A key from one signature.

Your shielded key comes from one wallet signature, derived in the browser. The wallet that shields never signs the way out.

Caps until audited.

5 HYPE and 500 USDC per shield, 500 HYPE and 50,000 USDC per pool. The contracts are unaudited at launch.

Send without leaving the pool. The chain records two nullifiers and two commitments. It never records an amount or who received it.

ToA shielded address
AmountEncrypted to the receiver
GasPaid by the relayer
Public trace2 nullifiers, 2 commitments
Two marble hands passing a pebble
A shielded address, not a wallet.

It cannot spend or read anything. Notes sent to it are sealed to its encryption key and locked to its public key.

A message that stays private.

Every note carries 64 bytes for a message. It is sealed with the amount and padded, so a note with one looks like any other.

Withdraw to a fresh wallet. A withdrawal is a zero-knowledge proof that you own a note, never a signature from the wallet that deposited. The relayer sends it and pays the gas.

Fresh address0xd905...ca31
Balance20 HYPE
Prior transactions0
The only on-chain traceA proof
An empty stone doorway with grain flowing through
Settled in a block.

A withdrawal from the pool is an in-chain transfer. Bridging out of Elysium to HyperEVM is a separate step that takes about 6 days through the rollup.

The recipient needs no gas.

The relayer pays the gas and forwards a little HYPE with USDC withdrawals, so a new wallet can use what it received.

Ask for money without showing a wallet. A request link and a QR carry your shielded address and an amount. The payer sends inside the pool.

/pay#to=Bq2fQ7…nX0a&a=25&s=USDC
Request 25 USDC. The link says the amount; nothing says who is asking until they pay.
A spiral seashell drawn in grain
In your browser

The chain only checks the math. The proof is built on your machine, so the note and the key never leave it.

✓Witness builtYour notes and the tree path, in this tab
✓Groth16 proof12,698 constraints, proved in the browser
✓Relayer checks itKnown root, unspent nullifiers, a passing gas estimate
✓Pool verifies itOn-chain pairing check, then the notes move

The pool is only as private as its crowd.

Commitments

Every note is a hash in a Poseidon tree of depth 20. Nothing about its owner.

Nullifiers

Spending a note reveals a tag derived from its key. Nobody can match it to the note.

Proofs

Groth16 over BN254, checked by the pool contract on every transaction.

Encrypted notes

Amounts and blindings are sealed to your key and found by your browser.

Relayer

It submits and pays gas. Fee and recipient are bound in the proof, so it cannot change them.

Timing

Wait for more deposits. The pool starts with an empty anonymity set: a shield followed by a withdrawal of the same amount can be matched by anyone looking. The more wallets deposit after you, the harder that gets. Leave a different amount than you put in.

The anonymity set

Concentric rings of white grain receding into black
Assets

Two assets, one pool each. HYPE sits in the pool natively. USDC is the bridged USDC on Elysium, backed 1:1 on HyperEVM, pulled with a plain approve.

HYPE
USDC
Verify

Verify it yourself. The pools have no upgrade path. Read the root, check a nullifier, and hash the proving key you are served.

# the current root of the pool
cast call <hype pool> "getLastRoot()(uint256)"

# has this note been spent?
cast call <hype pool> "nullifierHashes(uint256)(bool)" <nullifier>

Cash in an envelope, instead of a bank transfer with your name on it.

The pools open small. Caps stay low until the contracts are audited.

5 HYPElargest single shield at launch
500 USDClargest single shield at launch
500 HYPEpool cap until an audit
50,000 USDCpool cap until an audit
Who it is for

Public wallets are public portfolios. Lethe gives you an address the rest of the chain has never seen.

Stop broadcasting your positions.

A public wallet is a public portfolio. Withdraw to an address with no history and trade from there, while the wallet that paid in stays where it was.

A single footprint on an empty plain of grain
Fees

One fee, when money leaves. Moving inside the pool only costs gas.

ShieldFree

You pay the gas of one transaction, about a cent. No Lethe fee to shield.

Send insideRelayer fee

A small relayer fee covers the gas, paid from the note. Nothing else leaves the pool.

Pay by linkRelayer fee

Same as a send. The exit fee is paid when the link is claimed and the coins leave.

Withdraw0.3% + relayer fee

0.3% of what leaves the pool, in the pool asset, plus the relayer fee. Both come out of the note.

Read the whole design before you shield. What it hides, what it does not, and how to verify a proof.

Open the docs

Shield it. Withdraw anywhere.