Receiver
youCreate the one ID you share with everyone. It never appears on-chain next to your wallet.
Stealth payments · Solana · ML-KEM-768
Every payment lands on a fresh one-time address that only the receiver can open. Nothing on-chain ties it to them. Not today, not after Q-Day.
01 · The glass, in your browser
This is the actual ML-KEM-768 key exchange (NIST FIPS 203) that Opaque uses. Make an ID, send to it, then scan for it the way a receiver's wallet does.
Create the one ID you share with everyone. It never appears on-chain next to your wallet.
The sender's wallet locks a secret to your ID and turns it into an address only you can open.
A block explorer shows money arriving at a brand-new address, and a blob nobody can read.
02 · Harvest now, decrypt later
Classic stealth addresses hide links with elliptic-curve math. Every announcement stays on-chain, so a big enough quantum computer can go back and open all of them. Drag the qubits.
03 · How it works
Opaque is not a mixer. Your SOL never sits in a shared pot or with us. It goes straight to an address that only your keys can open.
One ML-KEM-768 public key (1,184 bytes) plus a spend key. Post it in your bio, on your site, wherever you'd post an address.
opaque id = mlkem.pk ‖ ed25519.spendTheir wallet runs ML-KEM encapsulation: a 1,088-byte ciphertext plus a 32-byte secret that only the two of you can know. That secret becomes a fresh one-time address.
ct, ss = encaps(pk) · addr = derive(ss, spend)The SOL goes to the one-time address and the ciphertext goes into the public Opaque announcement log. Nothing on-chain points at you.
transfer → addr · memo → ct + 1-byte view tagYour wallet checks new announcements. The view tag skips 255 out of 256, so scanning is fast. It finds yours, derives the key, and a relayer pays the gas so the sweep doesn't link back to you.
ss = decaps(ct, sk) · key = derive(ss, spend)Hidden
Still public
04 · $OPAQUE
A small fee on each send. Half buys back and burns $OPAQUE, half pays the relayers' gas so sweeps stay unlinked. Hold enough and you send for free.
| private send fee | 0.3% |
| hold 1,000,000 $OPAQUE | free sends |
| creator fees | 100% to relayer pool |
| key exchange | ML-KEM-768 (FIPS 203) |
| custody | none |
| pad | pump.fun |
Fee and threshold are launch targets. Final numbers post at launch.