Send to anyone. Leave no trail.
Stealth addresses for Solana. Every payment lands in a fresh one-time address only the receiver can open. No pool. No contract. No custody. Just math.
Live numbers
Three steps. Zero shared accounts.
Ed25519 math, the same curve Solana wallets already use. The idea behind Ethereum's EIP-5564, rebuilt for Solana.
-
01 · RECEIVER
Publish a meta-address
Sign one message with your wallet and get a meta-address. Post it anywhere: a bio, an invoice, a QR code. It never changes.
-
02 · SENDER
Derive a one-time address
The sender's browser mixes fresh randomness with the meta-address and gets an address nobody has seen before. The SOL goes there, with a short public note.
-
03 · RECEIVER
Scan and claim
The receiver's browser checks every note with a private view key. Matches belong to them, and only they can sign for those addresses and move the funds.
-
@HANDLES
A name instead of a key
Claim a short name by burning $STEALTH and share stealthprotocol.online/@name. Payments to it still land in fresh one-time addresses.
-
PRIVATE NOTES
A message only they can read
Attach up to 120 bytes to a payment. It is encrypted with the payment's shared secret, so only the receiver or their view key can open it.
-
EXCHANGE WITHDRAWALS
A fresh address per withdrawal
Exchanges cannot add a memo, so your inbox derives withdrawal addresses itself. Use a new one each time and claim them all from one place.
Get paid privately
Payment links, invoices and a button for your website. Every payer pays a fresh one-time address, so your customers never see your other income.
-
SOL, USDC, USDT
Any SPL token
Get paid in SOL, USDC, USDT or another standard SPL token. 0.0025 SOL travels with each token payment so you can claim it into a brand-new wallet, and you get it back when you do.
-
LINKS AND INVOICES
Ask once, share anywhere
A link for anyone to pay, or an invoice with a number and a paid or unpaid status. Add a pay button to your site with a few lines of HTML: no script, no tracking. Make one.
-
BUILT IN THE OPEN
For your app too
Every format, with test vectors, is in the spec, so any wallet or app can send and receive private payments. In TypeScript: npm install .
Privacy without a pool
Mixing pools hide links by holding everyone's money in one contract. Stealth addresses never hold anything: each payment is an ordinary transfer to a new address.
| Property | Stealth Protocol | Mixing pool | Normal transfer |
|---|---|---|---|
| Who holds the funds | Only the receiver, from the first block | A pool contract, until withdrawal | The receiver |
| Pool or contract risk | None: there is no contract | Contract bugs, relayers, admin keys | None |
| Sender ↔ receiver link visible on-chain | No: funds land at an unlinked one-time address | Hidden in the pool's crowd; timing can leak it | Yes, directly |
| Needs an on-chain program | No: a system transfer plus a memo | Yes | No |
| Can be frozen by an operator | No: there is nothing to freeze | If the contract has admin controls | No |