How it works
On pump.fun everything is public the moment you sign. Your wallet, your size and your limit are visible before your trade lands. That is enough for a bot to buy ahead of you, for a tracker to post your entry, and for anyone to read your whole bag off one address.
Cloak changes two things. Your order is unreadable until the batch it is in has stopped taking orders. And what you hold is not tied to your wallet, because each position belongs to a key made for it alone.
A batch, start to finish
- You deposit 1 SOL from your wallet. The chain sees that wallet put 1 SOL into the vault, and nothing after that.
- In the next batch the operator credits it to a fresh one-time key derived from your keys. Only you can find it, and only you can sign for it.
- You want 0.5 SOL of a coin. The app signs the order with that position's key and encrypts it to a drand round about forty seconds out. A relay posts it, so the transaction is not from your wallet either.
- Other orders join the same batch, sealed to the same round. The book on chain holds a hash of each one.
- The round arrives. The book closes, everyone can now decrypt every order in it, and the operator does.
- For each coin, buyers and sellers cross at the midpoint. The remainder goes through Jupiter to the bonding curve or PumpSwap in the same transaction that books the result.
- The batch that settles the book publishes the book's hash and what became of each order: filled, missed its limit, turned down, or could not be opened.
Why the price is better when people cross
A coin on its curve charges a fee each way and moves against every trade. When a seller and a buyer land in the same batch, the part they cross never touches the curve. Both trade at the midpoint, halfway between what the curve would pay a seller and charge a buyer, so each side saves half the spread. Only the leftover pays the curve.
On a mainnet fork on 3 October 2026, a sale of a curve coin crossed against a buyer in the same batch paid out 478,315,476 lamports. Selling the same coins straight into the curve was quoted at 465,848,658. That is about 2.7% more, after Cloak's own fee.
Fees
| What | How much | Who gets it |
|---|---|---|
| A fill | 0.2% | Taken from what the fill pays out, in that token. Kept in the vault as the operator's own positions. |
| A withdrawal through the relay | 0.001 SOL | Taken from a SOL position. For a coin, the coin's worth of about 0.0035 SOL, which covers the new token account the recipient needs. |
| A withdrawal you send yourself | 0 | Your wallet pays the transaction instead. |
| The curve or the pool | its own fee | Paid only on the part of a batch that did not cross. |
What the operator can and cannot do
The operator keeps the ledger between batches and signs every commit. The program checks the operator at every step:
- It cannot read an order early. The order is encrypted to a drand round, and nobody has that round's key until the drand network publishes it.
- It cannot quietly drop an order. Every order is folded into a hash on chain, the settling commit clears that hash, and its published outcomes can be checked against the orders by anyone, since anyone can decrypt them once the round is out.
- It cannot sit on a closed batch. After an hour anyone can freeze the vault.
- It cannot take more than the vault holds. Every committed total must be covered by real balances.
- It cannot move a position out. Only a signature by that position's own key can, against a proof of the committed root.
What it can do: see who deposited what, because it credits deposits to their owners; turn an order down with a stated reason; and stop running. If it stops for 48 hours, or ignores a withdrawal you demand on chain for a day, anyone can freeze the vault, and every position leaves with its owner's own proof.
What this does not hide
- Deposits are ordinary transfers. The wallet you deposit from is visible, and so is the amount.
- After the round, an order can be read by anyone. It names a position's one-time key, never a wallet, but sizes and limits are public then.
- Each batch publishes, per coin, how much was bought and sold and how much went to the pool.
- With few people in a batch, timing says a lot. Privacy grows with the number of people using it.
Leaving without anyone's help
Every batch publishes the changes to every balance tree and an encrypted note for every new position. With your keys you can replay all of it, find your positions, build the proof for any one of them, and send the withdrawal from any wallet. The app's "My wallet" option does exactly that, in this tab.
Numbers
| Batch length | 15 to 180 s | The first order picks the closing round, normally about 40 seconds out. Later orders seal to that round or up to 30 seconds after it. |
| Orders per batch | 96 | A full batch closes at its round; the next order starts a new one. |
| Settling deadline | 1 h | After that, anyone may freeze the vault. |
| Randomness | drand quicknet | A round every 3 seconds, threshold BLS, read with tlock. |
