That's a great reason. That would imply that a backup must be taken at least once every 100 transactions, otherwise there is a risk of loss if something happens to your installation, right?
At least once every 100
addresses. The wallet uses an address every time you
send a transaction,
AND every time you click the "
New Address" button.
Also, anytime you use the "Encrypt Wallet" option or "Change Passphrase" option in the menus, for security reasons, the wallet discards all 100 unused addresses in the pool, and generates 100 new addresses. Therefore, you should always backup your wallet immediately after encrypting or changing the passphrase.
It would be a good idea to have a few recent backups just in case one is damaged somehow. As such, it might be a good idea to keep a rough idea of how many addresses you've used since your last backup, and do a new backup anytime you exceed approximately 25 addresses. Then keep the 3 most recent backups.
Would it be useful to anybody else if these change addresses were also displayed, perhaps with the current balance of each address? That might be useful for truly seeing how your holdings are spread across your addresses.
Seeing this info (and having the ability to control which of these outputs the wallet spends) is commonly called "coin control". I believe there is a non-standard version of Bitcoin-Qt that can be sued for that. If you search the forum for "Coin Control", you'll probably find it.
Also, it might be useful if the amount of pregenerated addresses could be set to something other than 100.
It can be. I think it's done by creating a file in the Bitcoin data directory (where the wallet.dat is stored) named "bitcoin.conf" and adding a line "keypool=#" to that file (where # is the number of pre-generated addresses you want the wallet to maintain)
As an example, if one wallet sends change to an address that the other wallet doesn't know about, and then later the second wallet sends change to an address that the first wallet doesn't know about, the two wallets will show differing amounts.
Would this problem go away if the Bitcoin client were made aware of every address within both wallets, including change addresses, and merged each list together so that all addresses were unified into a single wallet, including the private key for each address? It seems that a "Merge Wallet" feature would be useful. It would result in one wallet containing the combined balance of both previous wallets.
It might. The devil is in the details. You'd have to find a secure way to transmit the private keys between the two instances of the wallets often enough to avoid situations where one wallet has expired all the shared keys and uses an address that the other wallet hasn't been made aware of yet.
Is it possible to control from which address(es) the coins are spent from?
Not for the average user. You can run a "Coin Control" version of the software if you trust it, or you can use "createrawtransaction" in the Console interface. You need to be certain you know what you are doing, and you need to be very careful when using "createrawtransaction". Very knowledgeable and experienced people have been known to make a mistake that results in accidentally paying a huge transaction fee. I think I heard of one programmer who should have known better accidentally paying a transaction fee in excess of 100 BTC.
If so, the user could be careful to select different addresses for each outgoing transaction, during the time the installations would be out of sync. That should solve the problem of double-spending from the same address.
Possibly, but there is a lot of opportunity for error there. It is much safer to simply acknowledge that the Bitcoin-Qt wallet is not designed to be used with two concurrent instances sharing the same originating wallet, and not try to find a way to do it. Given the amount of care you have to take, and the risks of making a mistake, it would seem that it isn't worth the effort.
Thanks for the warnings. They have given me good ideas for adding features to the Bitcoin client in the future, but for now, if I start a second Bitcoin installation, I'll do it from scratch. I can then easily transfer a balance by paying myself.
That's the safe way to do it. It only becomes a problem if you intend to re-use some of the addresses from an old wallet and/or believe that someone may still send bitcoins to an address that you've given out in the past.