The other day there was discussion on the Bitcoin developer mailing list about something called “stealth address” (though it looks like they’re changing the name for political reasons). I’ll explain more in a moment. But it seems to me that stealth addresses are sort of the last piece of the puzzle needed to get rid of Bitcoin addresses entirely within the user interface and replace them with human-readable identities.
If you aren’t aware, the soon to be released Bitcoin 0.9 will contain a new payment protocol which will go a long way to making Bitcoin more user-friendly and ending reliance on addresses. Here’s how the protocol will work: When you purchase something from a merchant you will (presumably) still scan a QR code. But rather than this QR containing the merchant’s Bitcoin address, it will initiate a download of a signed payment request. The request will show up your screen displaying the name of the merchant, total to be paid, and any other information the merchant wants to include―possibly a receipt or contractual terms. All you have to do is press “accept” or “decline”. The transaction will still be sent to a Bitcoin address, but that all happens behind the scenes. No need for the user to even know what a Bitcoin address is. Even more importantly, the wallet will automatically generate a new bitcoin address for each new payment request which should substantially improve privacy for all Bitcoin users. Again, the user doesn’t need to see or interact with these addresses. All he needs to know is that he has a wallet with a balance.
However, the payment protocol doesn’t seem to cover all possible use cases, leaving behind the need for legacy Bitcoin addresses . This is not only non-user friendly, but it will compromise the privacy of all Bitcoin users. Consider a few examples:
- Tip jars on static webpages (like mine to the right—>). It’s really not possible for the average person to dynamically generate a new payment request after every tip. Neither would it have been possible for the College Game Day kid to hold up that sign without receiving multiple payments to a single address.
- Weekly paychecks. In the future we may see more people being paid in Bitcoin. It would be much more convenient to just give the payroll department a single address rather than generating a new payment request every payday.
- Charitable giving. It’s much easier to send recurring payments to a charity, like Sean’s Outpost, when the address doesn’t change. It’s a bit inconvenient, both for the charity and the user, to have to download a new payment request whenever you feel like donating.
- And finally it seems likely that at least some people would prefer the traditional payment method for in-person transactions between individuals rather than having to first request payment.
So in each of these scenarios traditional bitcoin addresses seem to work better than the new payment protocol. But now thanks to the introduction “stealth” addresses, we can change all that. When a user sends a payment to a stealth address, the sender’s wallet uses some crypto magic to generate a new bitcoin address for which only the recipient has the private key. This allows stealth addresses to be made public and reusable since a new bitcoin address is generated for each transaction behind the scenes.
Now thinking about this the other day, it hit me that you could easily swap out the stealth addresses for either real names, aliases, or email addresses in the user interface. It should be fairly easy to set up a key server a la PGP. People could upload their stealth addresses to the key server along with some identifying information and the wallet could connect to the key server to download the stealth addresses. For example, if you wanted to send me a payment you could just enter:
Pay To: Chris Pacia <email@example.com>
The wallet would connect to the key server to download my (signed) stealth address:
But the user wouldn’t need to see or interact with this address at all. The wallet would handle everything behind the scenes. Of course, anyone could have done this already with regular bitcoin addresses but it wouldn’t have made sense because you would just be broadcasting to the world “come look at my balance and transaction history”. Since you can’t look up the balance or transaction history of a stealth address on blockchain.info, this creates a golden opportunity to swap out addresses for more user friendly identities.
It seems likely that in the near future, the average Bitcoin user wont even know what an address is, nor would they need to. They would simply have a “wallet” that shows their balance and makes and requests payments. And the corresponding elimination of address reuse will make it near impossible link identities with addresses in the block chain. Bitcoin continues to grow up by the day.