Ah, clearly I was getting mixed up between "address book" and "receive coins". But I wonder why I see only 1 address in "receive coins"? I have read somewhere that there are supposed to be 100.
100 addresses are generated in advance, but they are not displayed until you click "New Address", at which point one of your "hidden" address is made visible and new hidden address is generated, so you always have 100 hidden addresses (you start out with 1 non-hidden address). The reason for this is that if you back up your wallet, then create a some new addresses and receive coins to those address, then your hard drive dies and you have to restore your backed-up wallet, you'll still be able to access your coins, because the "new" addresses were actually already there to start with. However, if you've created more than 100 addresses since the last time you backed up your wallet, you will lose some coins if you have to restore from your back-up, so its a good idea to always back up your wallet at regular intervals.
OK, makes sense, however this means since you don't do a new address for every transaction that the gui cannot be used for keeping track of things like rent payments? Or are individual payment stored in the block chain? I guess it must be. So one could in theory just receive coins from someone making payments and never keep any other record of payments, because it is all out there in the block chain. Cool.
Well, the transactions themselves are stored in the block chain, but there is no information about the transaction other than "this amount was transferred to that address". To keep track of your payments, you should create a new address for each purpose, eg you create an address labelled "Payment from Bob", give that address to Bob so that he can pay you, and then any transactions sent to that address will be labelled "Payment from Bob". You know it's from Bob because he's the only one you gave that address to (you should create a different address for every person who wants to pay you). If you only have one address, and
everybody is paying you at that address, then there's no easy way to tell who is paying you what.
I read this comment in another thread:
1. Put all your coins in a new wallet that has never connected to the network
https://bitcointalksearch.org/topic/trust-no-one-33835The context is maximum security. I don't quite understand the comment. Even if you sent all your current bitcoins to a new wallet of yours that you had created offline, isn't the transaction incomplete until the wallet has been connected to the network? For at least an hour or so?
A wallet does not need to connected to the network in order to recieve coins, only to send coins. A wallet doesn't even need to be connected to the network to create addresses, because addresses are not actually stored on the network until coins are sent
from them (this also means there is no way to guarantee that an address even
exists if no coins have ever been sent from it, however the address format includes a checksum to prevent non-existent address from being entered by mistake - creating a valid but non-existent address takes deliberate effort). Transactions take about an hour to receive six confirmations (which is the standard number required to ensure the transaction is valid), but this is from the time the transaction is broadcast to the network (which requires that the wallet
sending the coins be online). Transactions sent to an offline wallet receive confirmations as normal.
I was reading the thread about everyone wishing the gui had encryption as part of it.
The current GUI does have encryption. Just go Settings -> Encrypt Wallet. Enter a passphrase and
don't forget it. God Himself can't get your coins back if you forget your passphrase.
This also makes no sense to me. If you mount an encrypted wallet even for a short time in an insecure environment, it is as good as lost.
Encrypted wallets aren't like encrypted hard drives. It is not "mounted", instead it requires a passphrase to decrypt the private keys needed to send coins and create new addresses (viewing your balance and transaction history does not require your passphrase, and doesn't even require your wallet if someone knows all your addresses, since all transactions are stored in the blockchain). While obviously entering your passphrase in an insecure environment is a bad idea, using an
unencrypted wallet in an insecure environment is an even worse idea, for equally obvious reasons. The main idea behind encrypted wallets is to prevent people with access to the wallet file (or a backup of the wallet file) from stealing your money; it is not intended to prevent the sort of attack that involves reading keys directly from RAM (which in fact no form of encryption will protect you from).
Encryption and security should be a broad concern, not some little thing you enable in one application. To me it appears the most practical path is a liveUSB drive with linux and complete system encryption. Even for Windows users (except for wallets with very little cash that you can afford to lose - such are OK to leave on a Windows system). Boot the liveUSB drive, it doesn't matter how many trojans are on the hard drive because it never gets mounted and even if mounted, nothing is run from it. Even the unencrypted /boot partition should be protected as described in
this link. Keep the wallet on the same drive. Use the drive only for bitcoin. Backup the drive by using a straight dd copy to another flash drive.
Any exploit that allows execution of arbitrary code with root privileges will allow reading the key from RAM, then sending it along with the wallet file to some remote location for the coins to be spent. If you need
real security, check out
Armory's Offline Wallet feature (true RED/BLACK separation).