How can i see all my BitCoin addresses?
Background
If i send a payment to someone (e.g. 0.35 BTC
), the BitCoin protocol is unable to send just 0.35 BTC
to someone. For example, if i own 1 BTC
, and want to spend 0.35 BTC
, then a transaction is created so send my entire 1 BTC
to two different people:
- 0.35 BTC to [destination addresses]
- remaining 0.65 BTC to [an new randomly generated address that i own]
This was horribly confusing thing to me, and nearly everyone else. Most people assume that if they backup their public and private key, that they have backed up their wallet.
Unfortunately, you do not have just the one address that appears in BitCoin-qt, you own n secret addresses, that are not visible in your wallet.
A Concrete Example
Lets take a real transaction from the blockchain:
- Source Address
18888888PPJ8oGeqR6AKmoiKUme9da48Xf
: 2.3899 BTC - Destination Addresses
1FvLq2vz7neRJeLk1uXGjg1Jk8FCiaHnwk
: 2 BTC
18888888PPJ8oGeqR6AKmoiKUme9da48Xf
: 0.3898 BTC
Out there is a guy who owns address 18888888PPJ8oGeqR6AKmoiKUme9da48Xf (which had a balance of 2.3899 BTC
). He then spent 2 BTC
on something. The "change" is then routed back to a new address inside his client (18888888PPJ8oGeqR6AKmoiKUme9da48Xf)
You never see this address
The problem is that now you own another address; another randomly generated public/private key pair. If you lost your wallet right now, and restored from a backup, you would not have access to that change, because you don't have the key pair for this new, secret, hidden, address.
You only backup the key pair for your single "real" address. With every transaction BitCoinQt creates internal, secret, invisible addresses. They are hidden inside your wallet.
i want to backup all my public-private key pairs to paper. But before i reach that point, i want to be see all my public-private key pairs. i need to see all my addresses.
How can i see all my BitCoin addresses?
BitCoinQt: v0.8.1-beta
Alternatively, in order to ensure the security of my BitCoins, after every transaction should i generate a transaction
- From: me
- To: me
so that all my coins end up in a "real" address, which i can then backup? Is that something that is a best practice.
Losing BitCoins because my money was sitting in secret addresses was...depressing.
Bonus Chatter
From the BitCoin wiki entry for Change:
The wallet file contains the private keys for change addresses, and they can receive and send coins normally. However, the GUI in the default client does not display them in the address book.
Also note: i'm not talking about backing up to a wallet.dat
file. That will backup my wallet, but to a file. i have a backup of my single address; which is insufficient because my single address no longer has any bitcoins.