Burner addresses for Solana

Send to anyone. Burn the trail.

Every payment lands in a fresh one-time burner only the receiver can open. They sweep it, the burner burns, and the chain is left holding ash that points nowhere. No pool. No contract. No custody. Just math with a lighter.

No poolNo contractNo custodyReceiver hidden
burner 7xKq…4fRa · lit
Sandbox network · counted in this tabIndexed just now
How it works

Three steps. One burner per payment.

Ed25519 math, the same curve every Solana wallet already signs with. The stealth address idea from Ethereum, carried over to Solana and set on fire at the end.

br:sol:9Edo…X4PD
01 · Receiver

Publish a burner tag

Sign one message and get a burner tag. Put it in your bio, on an invoice, on a sticker on your laptop. It never changes and it never receives a single lamport itself.

02 · Sender

Light a fresh burner

The sender's browser mixes fresh randomness with your tag and gets an address nobody has ever seen. The SOL goes there, with a short public note that only means something to you.

03 · Receiver

Sweep it, burn it

Your browser checks every note with a private view key. Matches are yours to sweep into any wallet, and the emptied burner is closed for good. Its rent comes back to you. The address does not.

@handles

A name instead of a key

Claim a short name by burning $BURNER and share burnerprotocol/@name. People pay a word, you still get a brand-new burner every single time. Check a name.

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, which is plenty for "rent, March" and not enough for anybody else to learn a thing.

Exchange withdrawals

A fresh burner per withdrawal

Exchanges cannot attach notes, so your inbox derives withdrawal burners itself. Use a new one every time and sweep them all from one place. The exchange never meets your main wallet.

Burner pay

Get paid without a paper trail

Payment links, invoices and a pay button for your site. Every customer pays their own burner, so nobody who pays you can scroll through what everyone else paid you. Make a link.

SOL, USDC, USDT

Any SPL token burns the same

Get paid in SOL, USDC, USDT or any standard SPL token. A pinch of SOL rides along with token payments so you can sweep into a wallet that has never held anything, and you get it back when the burner closes.

The ash

What the chain keeps

A transfer to an address that existed for one payment, a 33-byte note and a closed account. That is the whole story the chain gets to tell. We call it ash, because there is nothing left to read in it.

The sandbox

Light one yourself.

The whole flow, running in this tab: derive keys, pay a tag, scan the inbox, sweep and burn. Nothing here touches a wallet and nothing leaves this browser.

Sandbox

Get your burner tag

One signature turns into a spend key and a view key. The tag built from them is the only thing you ever share.

1 · Derive your burner keys

Your wallet signs a fixed message. This tab turns the signature into two keys and keeps them in memory only.

What you sign
Burner Protocol v1
Derive my burner keys.
This signature never leaves this browser.
Only sign this on burnerprotocol.
Your keys
Spend key
—
View key
—

A view key finds your incoming burners but can never move a lamport. Hand it to an accountant and they see every payment, and that is all they can do with it.

Send privately

Pay a burner tag or an @handle. The money lands in a brand-new address with no history and nothing that points at the receiver.

1 · Recipient and amount
Any burner tag works. Handles resolve to a tag.
Minimum 0.001 SOL, so the new burner is rent-exempt.
0/120 bytes · encrypted to the receiver
Payment sent · receiver hidden

2 · One-time burner · fresh for this payment

Made in this browser from fresh randomness and the receiver's tag. A new one every time you touch the amount.

Public announcement memo
What the chain will show
  • A transfer to an address that never existed before
  • A memo with a random point R and a 1-byte tag
  • Nothing that names the receiver
  • Nothing that links this to the last payment

Your private inbox

This tab reads every public announcement and tries your view key on each one. Matches are yours. Everything else is somebody else's ash.

Locked

Derive your keys on the Receive tab first. The inbox needs your view key to know which burners are yours.

Sweep to

Sweeping into your main wallet links that payment to it. Sweep into a wallet that has never touched anything and keep it that way.

—
Stays in this tab
  • Scanning runs on your device
  • The server only ever serves public announcements
  • Only a scan cursor is saved, never keys or matches
  • Every sweep closes the burner and returns its rent

Claim your @handle

Pick a short name and share it as your pay link. Payments to it still land in fresh burners, exactly like your tag. Claiming burns $BURNER, which is the only fire on this site that costs anything.

Find a name
3–15 characters: a–z, 0–9 and _ (not at the start or end, never twice in a row).

Opens with $BURNER

Mainnet claims start once the $BURNER contract is published. Until then you can check names and prices, and claim one here in the sandbox to try the whole flow.

Price · whole $BURNER, burned
3 characters50,000
4 characters20,000
5 characters8,000
6–8 characters2,000
9–15 characters500
  • First valid claim wins
  • No expiry, no renewal
  • Burned tokens are destroyed, nobody receives them

Every announcement, in the open

The indexer reads every transfer that carries a br1: memo. All of it is public. None of it names a receiver.

#When (UTC)AmountOne-time burnerMemoReceiverState
Compared

Privacy without a pool.

Mixing pools hide links by holding everyone's money in one contract and hoping it holds. Burners never hold anything for longer than it takes you to sweep: each payment is an ordinary transfer to a new address.

PropertyBurner ProtocolMixing poolNormal transfer
Who holds the fundsOnly the receiver, from the first blockA pool contract, until withdrawalThe receiver
Pool or contract riskNone: there is no contractContract bugs, relayers, admin keysNone
Sender ↔ receiver link on-chainNo: funds land at an unlinked burnerHidden in the crowd, timing can leak itYes, directly
Needs an on-chain programNo: a system transfer plus a memoYesNo
Can be frozen by an operatorNo: there is nothing to freezeIf the contract has admin controlsNo
What is left afterwardsAsh: a closed account with no futureA withdrawal everyone can try to timeYour whole history, forever
Built in the open

The whole trick fits on one screen.

Every format is written down in the docs, so any wallet or app can send to a burner tag and sweep one.

// receiver, once
s, v      = derive(sign("Burner Protocol v1"))
S, V      = s·G, v·G
tag       = "br:sol:" + b58(S ‖ V)

// sender, every payment
r         = random()
R         = r·G
shared    = H(r·V)
burner    = S + shared·G
memo      = "br1:" + b58(R) + view_tag(shared)

// receiver, scanning
shared    = H(v·R)          // same secret, from the other side
key       = s + shared       // signs for the burner
sweep(burner → fresh) ; close(burner)  // ash
Threat model, short
  • Public: the burner, the amount, the memo, the time
  • Public: the sender's wallet, unless they pay from a burner too
  • Private: who the burner belongs to
  • Private: that two burners share an owner
  • Private: the note, to anyone without the view key

Sweep into the same wallet every time and you have built the trail back yourself. Fresh wallet, every time. That part is on you.

Token

$BURNER

Contract address. It feeds the handles, and every handle claim burns some of it.

soonCopy address
0 $BURNER burned by 0 @handle claims