You can also store your wallet offline either on a digital medium like a CD or USB key or on paper.
A private key for an address, which allows you to send transactions with it, is really quite small; for example, the bitcoin address 17CXktyFpiMYpPktkSVWhgbMGj27QA3jNY has the private key 5Jr8W5D5zsjq9ckX26rz5imJqNVUmPSrP9PJYujFowQKvuLoHMt. Those two strings are all you need to send and receive transactions from that address, and you can keep them stored even on paper if you want. The reason why this works is that your wallet does not actually store bitcoins – bitcoins are stored in the public blockchain. Your wallet stores the two keys needed to access and use the bitcoins. To actually spend the bitcoins, you will need to use some kind of client, but that is the only time you need to be connected to the internet at all.
- The potential for very strong security; your private keys cannot be stolen by viruses until you use them, at which point it’s too late for them to be any good.
- The potential for the best possible privacy; by maintaining fine-grained control over every single address that you own, you can potentially ensure that none of your transactions can be linked to each other.
- You can still receive bitcoins even when your wallet is offline, since you’re just storing the keys
- The least trust required; the only time you have to trust any Bitcoin software at all is at the moment you’re sending bitcoins, and even then you can have very tight control over the process and check the transaction yourself to ensure that nothing malicious is going on. Even creating the addresses can be done offline.
The disadvantages are:
- The most difficult of all to manage
- Paper wallets, or CD/USB wallets that aren’t also encrypted, can be physically stolen, and even if encrypted they can always be lost
There is no single software package that represents a full solution for this type of wallet. To create addresses and keys, the options are bitaddress.org (use in Firefox’s private browsing mode or Chrome’s incognito mode offline for added security), blockchain.info (save advice) and vanitygen (an installable command line tool which also has the advantage that it can generate cool addresses like 1NiNja1bUmhSoTXozBRBEtR8LeF9TGbZBN). For added security, you can use a Linux LiveCD distribution for this process. To check your balance, you can manually look at the addresses at blockexplorer.com or use the readonly wallet functionality of blockchain.info or Armory.
To send bitcoins, there are two distinct steps that you need to take: create the transaction, and then publish it. To create a transaction, you can use the offline blockchain.info wallet tools (very easy to use but cost 0.01 BTC per transaction), BTCurious’s tool at http://ge.tt/9XKMag9/v/0 or the Armory bitcoin client in offline mode. Make sure to turn off your internet connection when you are doing this and, if you are especially paranoid, you can delete all your data except the signed transaction afterwards. Once you have the transaction, you can push it onto the network by pasting it into the tool at http://bitsend.rowit.co.uk.