Stealth Addresses – What are they and do I need one?
The Bitcoin protocol is amazing. Not just because you can move millions of dollars for 10c, but because its very open source nature means smart folk all over the world can come up with new ways to use it and make it work.
A new project being worked on is the Stealth Address. Basically this uses the protocol to allow you to generate a public key that you can provide to multiple parties, and the parties can pay you but can’t see funds you receive from the other parties.
How does it work?
The way this is achieved is through a deterministic process that allows the sender to generate and address to send the payment to, based on what you’ve published. This means that no sender can see the “master key”, just their own self determined address.
Our dev’s interpretation:
“In the Stealth payment process, the payer generates a single-use address, which together with the payee’s public address, is used to generate a stealth address.
To generate the private key of the stealth address, both the single-use keypair and the payee’s private key are required.
The single-use key is included in the transaction record, and payees scan the blockchain for transactions with single-use keys that, combined with their private key, generate the transaction’s stealth key.”
Check out the proposed protocols here. It is based on a shared secret derived using Elliptic curve Diffie-Hellman anonymous key agreement protocol, which allows shared data over an insecure channel. Insecure channel doesn’t mean a webpage with low self-esteem, just anything that is public, accessible without being able to restrict access. After that, the branching, deterministic wallet algorithm is used to generate the Stealth Address.
If all that is double dutch to you then maybe I should…
Explain it like I’m five
To put it in simple terms, at this point, when you publish a key, anyone can see payments to that key.
Imagine if every time you gave someone your bank account number, they could have a look at all the transactions you have on your account. That could be bad for your business or just downright embarrassing.
While having a public ledger in the way the Bitcoin protocol does is exciting stuff, and creates some massive social benefits (imagine the transparency in government donations for example), most contractors don’t want their clients to be able to see how much everyone is paying, or where the money is going.
This new protocol however lets the payee generate a Stealth code based on your address to pay to, so while they can see their money moving, hitting the destination, and being spent, they can’t see transactions from other parties.
This means that a person can publish a public address, and have potentially thousands of payments reach it, without each party being able to observe the their spending.
The usage of the protocol is still very complex. I nearly had a panic attack trying to understand the algorithms and the functionality. This diagram, meant to be a ‘simplified’ version, left me confused and sweaty.
While this isn’t ‘user friendly’ yet, anyone that invoices in BTC, or wants to be able to receive donations and increase the privacy level of the transactions should watch this space. Think Wikileaks, Piratebay, whistleblowers and such, who want to be able to receive donations from users without their privacy being compromised.
CoinJar customers however do not suffer from the woes of a public ledger. As we use hosted wallets, if someone types the wallet address you provide into blockchain.info, they won’t be able to see the transactions, as the wallet addresses are virtual.
With new Stealth Addresses you are able to take that level of privacy and apply it to your own offline and third party wallets. As always, I say do lots of research before utilising it so you don’t risk making a mistake and losing coin, but sometimes the new knowledge can be worth the headaches that come from acquiring it.
Viva la blockchain.