Nobody puts their bank statement on their website. Plenty of people put a bitcoin address there, which is close to the same thing and almost nobody says so out loud.
Put one address on your invoices, your profile or your donations page, and every person who pays it can look up every other payment you have ever received to it. And your balance. And when the money moved. Forever, for anyone, without asking you.
Nobody puts their bank statement on their website. Plenty of people put a bitcoin address there, and almost nobody says out loud that it is close to the same thing.
So most people never publish one. The workaround is to send a fresh address to each payer, one at a time, in a chat. A fine way to lose money to a typo, and a terrible way to get paid by a stranger.
The short version. Bitcoin addresses leak everything paid to them. Silent payments stop that, and have done for two years. Nobody uses them because the address is 116 characters long. A name fixes the last part, and running your own scanner fixes the bit nobody mentions.
Silent payments quietly fixed this in 2024
A silent payment address looks like a normal address and behaves completely differently. When somebody pays it, their wallet does a piece of maths and derives a brand new address that only you can spend from. Nobody has to be online. Nothing is announced.
Two people who both paid you cannot tell they paid the same person. Nor can anyone watching the chain, because there is nothing linking those payments to each other or to the address you published.
So you can publish one address, once, and keep it for life. That is BIP 352, and it has been finished for two years.
Almost nobody uses it. Here is why:
sp1qqg94rylj0uklf6lkyc5n92jp3p392g0rpvh0f74qphufxcx9zya97qh8w4z290qym8ve33a02ejfc3lanvw9aljfz6upuc2gfnulepd75ccrhdql
One hundred and sixteen characters. You cannot say that to someone. You cannot put it on a business card. Solving the privacy problem created a usability problem so bad that the privacy never got used.
A name that means an address
There is a standard for the missing piece. BIP 353 publishes a name in DNS, the same system that decides where your email goes, so that this:
rob@bitsaga.be
means that address. Someone types the name into a wallet, the wallet looks it up, and the payment happens. No copying, no asking me for a fresh address, no waiting for me to be online.
The record is signed, and the wallet checks the signature itself rather than trusting whoever served it. Sparrow does this today. So does Cake Wallet.
You can pay rob@bitsaga.be right now. It has been live since yesterday.
The part nobody puts on the box
Silent payments have a cost, and it is not obvious until you look.
Why someone has to scan
Because every payment lands on a freshly derived address, your wallet cannot simply look up its own addresses to find your money. Somebody has to scan the whole chain, doing maths with your key against every transaction, to work out which outputs are yours.
That somebody sees a great deal.
The uncomfortable part
The protocol hands your scan private key to whichever server your wallet is pointed at. It cannot spend your coins. It reveals every payment you will ever receive, for as long as you use that address.
And it never expires
A silent payment address never rotates. That is the whole point of it, and it means the key you handed over keeps working for as long as you use that address.
So the default experience today is this: you turn on a privacy feature, and a server you have never heard of receives the key that shows it everything you are paid. Sparrow ships with a public one selected automatically. It is not hiding anything, and it is a strange price for privacy.
So run the scanner yourself
The fix is not clever. Run the scanning server on a machine you own, and the only computer on earth that can see your incoming payments is the one in your house.
Frigate, by the author of Sparrow Wallet, does the scanning. It now runs on StartOS alongside your own Bitcoin node, reachable over your own Tor address, with nothing exposed on your router.
The first index takes a day or two and about 18 GB. After that, keeping up with new blocks costs almost nothing.
What we built
Two things, both open source, both free.
- A StartOS package that publishes your payment name. Paste the address from your wallet, pick a name, and it hands you the exact DNS record to publish on a domain you own. Nobody but you can then change where that name points. It also keeps re-checking the record, and turns red if it ever stops pointing at you.
- A place to get a name if you do not own a domain. Free, no account, no email address, about thirty seconds.
What you have to trust us about
One thing, and we would rather say it plainly than let you find out later.
What we cannot do
We never hold your money. There is no balance here and no account. Payments go straight to addresses only your wallet can spend from. If this service disappeared tonight, every coin you were sent would still be yours.
We never see your keys either. You give us a public address, and nothing else.
What we could do
But we run the domain, so we control what your name resolves to.
A dishonest operator could point it at their own address. Every payment after that would go to them, with valid signatures, with no wallet complaining, invisibly. And because silent payment outputs are unlinkable, you could not even follow the money to see where it went.
Nothing prevents that. Not DNSSEC, which proves the domain owner said something, not that you agreed to it. Not the specification, which has no security considerations section at all. Nostr's naming standard has the rule that would prevent it, telling clients to follow the key rather than the name. BIP 353 has no equivalent.
What stops us
Nothing stops us outright. What we can do is make it impossible to do quietly. Every name issued, changed or removed is written to a public change log, each entry containing the hash of the one before it, so removing or editing history breaks every entry after it. And the StartOS package re-checks your record on its own and turns red if it stops pointing at you.
Detectability is a weaker promise than impossibility. It is the strongest one honestly available, and it is more than anyone else in this category currently offers. The largest existing provider has no way to update a name once claimed, which is why one of its best known names carries five conflicting records and cannot be paid at all.
The limits, up front
Four things worth knowing before you rely on any of this.
- A name on our domain is only as durable as our domain. If it ever lapsed, whoever registered it next would inherit every name we issued. We are renewing it long and locking it, and you should weigh that promise for what it is.
- Your own domain is strictly better than ours, and the package prints exactly what to add. We would rather you did that.
- Names shorter than five characters are held back for now. There is no way to un-give a name, and first come first served on the short ones is how every naming service starts regretting itself.
- Your domain needs DNSSEC, or wallets refuse the name outright. There is no insecure fallback, by design.
Try it
If you already run a node: install the package, paste your address, publish the record.
If you just want a name: silentpayments.net, about thirty seconds.
And if you want to pay something and watch it work, rob@bitsaga.be is live.
Neither you nor anyone else can see what else has been sent there. Which was the entire point.