Change addresses are an important part of most bitcoin clients. They are used to store change and to enhance a user’s privacy. Let’s see what change addresses are all about.
Change and change addresses explained
A change address is an address where change from a transaction is sent. Bitcoin transaction outputs can only be spent whole. So, if you want to send someone a portion of a bitcoin transaction output you have to spend the whole lot and send some of it back to an address you own. For example, if you have 2.00 in an address and want to send someone 1.00 you will have 1.00 change that will come back to you. Depending on your bitcoin client this change will go to a new unused address or one of the input addresses.
The privacy aspect of change addresses
Bitcoin transactions are all public. You can view any and all bitcoin transactions that have ever taken place on a block explorer site like blockchain.info. This means that if someone associates your bitcoin address with you they can view all your transactions! To help you maintain some semblance of privacy two approaches are taken:
- You are discouraged from reusing bitcoin addresses. Use a separate address for every transaction.
- Change is sent to a different address than the address you are spending from.
So, the use of change addresses that are different from the input addresses is a good thing from a privacy point of view. It is not perfect – people can still infer that you are the owner of the change address too – but it helps.
How different wallets deal with change
At the time of writing this is how different wallets deal with change:
- Bitcoin-QT: QT does use different addresses for change than the input address(es). It picks an unused address from its address pool to use as a change address.
- Electrum: Electrum too uses a different address for change than the input addresses. It maintains a separate branch of deterministic addresses for change.
- Armory: Armory also uses a different deterministic address to send change to. It also allows you to control where change is sent to in expert mode.
- Multibit: Multibit sends change back to the second address in the wallet if it is available. If it is not available all change goes to the very first address in the wallet.
- Blockchain.info MyWallet: According to their FAQ they send all change to the very first address in your wallet. However, users have reported that other addresses, including ones from imported private keys, are also sometimes used.
Downsides to change addresses
They can be confusing: Change addresses can be a source of confusion for new users. Bitcoin clients abstract away the business of change addresses but sites like blockchain.info allow anyone to see a specific address’s balance. Users are confused when the address they think contains all their coins in fact does not. Usually this means that the rest of the coins are in a change address.
Change addresses also show up in transactions and new users wonder who the address belongs to and whether they’ve been hacked!
Address reuse gone wrong: Another downside to change addresses is how they are implemented by certain clients. blockchain.info, for example, can use an imported private key’s address as a change address. The user might think that all the funds in that private key have been spent and make that private key public with disastrous consequences!
To prevent this sort of thing from happening users are advised to use a temporary wallet to import the private key and send all the coins to an address in their main wallet. Another, easier solution is to use Bitcoin Armory’s sweep private key function which can safely do this for you.
Change addresses are one of those lower level aspects of bitcoin that confuse new users. But they are a necessary part of how bitcoins are spent and understanding how change works helps you avoid costly mistakes.