The Bitcoin block chain had reached 85 gigabytes last week, so it was no longer practical to run a full node client on my laptop. A full node client verifies a transaction by checking earlier transactions all the way back to when the network first issued the funds used in the current transaction. To do this, it first has to download every block of transactions in the chain. The alternative is a client that uses simplified payment verification (SPV). An SPV client assumes that a transaction is valid if enough blocks have been created later in the chain that the current transaction is unlikely to be reversed. This does not require downloading the full block chain.
A Bitcoin wallet contains the digital keys for a set of Bitcoin addresses. Funds sent to a Bitcoin address can only be spent by someone who has the key for that address. A Bitcoin client keeps track of the balance available in a wallet’s addresses and allows the user to send transactions to the Bitcoin network. Miners on the network package pending transactions into a block along with a string of text that, when hashed together with the transactions and the previous block’s hash, matches a hash generated by the network. Generating a matching hash is a computationally costly process. This makes it difficult for anyone to change a block once it has been created. The first miner to create a block posts it to the network, where full nodes verify the hash and the transactions in the block. If the block is verified, the nodes add it to their copies of the block chain. SPV clients do not participate in block verification and must connect to a full node to determine a wallet’s available balance.
The top rated SPV client is MultiBit. The current MultiBit version is MultiBit HD. MultiBit HD does not allow users to add randomly generated keys. I had been using Bitcoin Core as my client and wanted to continue to be able to spend funds sent to addresses it had generated, just in case someone sent more funds to them. Without the keys, that would be impossible. MultiBit recommends keeping a copy of its previous version, MultiBit Classic, to be able to spend funds sent to addresses that were not created by MultiBit HD. I did not want to depend on two different clients, so I just installed MultiBit Classic.
I then had to transfer the keys from my Bitcoin Core wallet to a MultiBit Classic wallet. Most instructions I found recommended using pywallet, but it required MacPorts to install dependencies. I was not going to install a whole platform for a one-time task, so I kept looking until I found wallet-key-tool. wallet-key-tool is a stand-alone Java application that can load a wallet file, copy the keys to a second wallet, and save the second wallet in MultiBit Classic format. After moving the wallet files to the Library/Application Support/MultiBit directory, I was able to use the keys in MultiBit Classic.