Lacuna Open app

How Lacuna works

Lacuna is a shared HYPE pool on Elysium. You deposit from one wallet and later withdraw to another. On chain, the withdrawal carries a zero-knowledge proof that it spends some approved deposit in the pool, without saying which one.

The contracts and circuits are Privacy Pools by 0xbow (Apache-2.0), with two changes: the entrypoint is not upgradeable, and its fee settings are capped in code.

What happens on chain

Notes and the recovery phrase

The app makes a 12 word phrase in your browser and derives every secret from it: the first deposit's secrets come from note number 0, the next from 1, and each partial withdrawal gets the next child secret. Scanning public events with the phrase rebuilds every note on any device.

The phrase stays in this browser's storage and is never sent anywhere. If you lose it, nobody can withdraw or return your notes. If someone else gets it, they can withdraw them.

The approved set

A withdrawal must prove its deposit's label is in the approved set, a Merkle tree whose root the pool reads from the entrypoint. The keeper posts a new root every time the set changes.

The relayer

A fresh wallet has no HYPE for gas, and paying for it from your old wallet would link them. So the app sends the proof to the relayer, which submits it and is paid 0.5% of the amount withdrawn.

The relayer sees the receiving address and the amount, and can't change either: both are bound into the proof. It simulates the withdrawal before sending, so a bad proof costs nothing.

Ragequit

If a deposit is never approved, or you change your mind, the wallet that made it can take the whole note back at any time with a ragequit proof. This is public and links the note to that wallet. It works even if the approved set stops being updated.

Fees and limits

What the owner can do

How private it is

Your withdrawal could have come from any approved deposit with enough left in it. With few deposits, or a deposit of an unusual size followed by a withdrawal of nearly the same size, a watcher can guess. Wait for more deposits, use round amounts, withdraw in parts, and send to wallets that have never touched yours.

The website and the relayer see your IP address, like any site. The proof is built locally and no secret leaves your browser.

Risks

Contracts

StatusNot deployed yet