Keep your money close and your bitcoins closer

Let me tell you a story about how this fool and his money were soon parted. About a year ago, I added Bitcoin payments to Dead Man’s Switch, because it seems that people who want to send messages after their death are also the sort of people who don’t like using actual money.

One or two people decided to use that payment method, probably mostly because it was the only thing they could buy with their newly-mined bitcoins, and I was the proud owner of a whole bitcoin, worth about $20 at the time. However, storing it was a bit of a problem, as I would either have to trust a third party with it or use the official client, and store the entire multi-gigabyte blockchain on my computer.

You can probably see where this is going. I didn’t want to store a bunch of gigabytes for $20, so I left my coins on MtGox, figuring that they were the biggest exchange and at least a bit trustworthy. As you all know, MtGox went under when my bitcoins were worth $1000 or so.

This post is about how to not let the same thing happen to you.

Some bitcoin fundamentals

Coin bits

At its core, the bitcoin protocol uses the blockchain, which is pretty much a huge ledger of all the transactions that ever happened. To use bitcoin, you will need to have a copy of this blockchain, because you can’t figure out anyone’s balance any other way.

However, this blockchain is huge, I think it’s around 20 GB at the time of this writing. That’s a very large amount of data, especially for my tiny laptop SSD, and it’s not worth keeping around for pretty much no reason, which is what you need to do if you want to run the official Bitcoin wallet desktop app on your computer.

Luckily, there are some half-decent alternatives, but each comes with its own disadvantages.

Common ways to store bitcoins

Desktop client

Give me your money:
1Fob4pRghoUnnzTpnHhiF37UvVcyJLGM6K

As I detailed above, one common way is to use the official wallet desktop app. This has the advantage that you control your own money, nobody else has access to your wallet (unless you let your computer get infected or let your friends copy files around or whatever), and you know where your money is at all times.

The problem with this is that you have to store the entire bulk of the blockchain on your computer. Another downside of is that you cannot use your money from any other computer, or on the go, and you will lose all the money in your wallet if you ever lose your hard drive or computer, unless you’ve made a backup of the wallet file.

Online services

Another alternative is to send your bitcoins to an online wallet service, such as Coinbase or blockchain.info, which I hesitantly recommend. The advantage of this is that you can access your money from any computer, they have decent mobile apps so you can send money around from your phone, and you don’t have to store anything on your computer. Blockchain will even back your encrypted wallet up to your Dropbox, so, as long as you have a rather strong password, you should be fine. They will also let you use two-factor authentication for added security.

The disadvantage of this method is that you have to trust a third party service with your money. As the MtGox fiasco taught us, these services can disappear at any moment, along with all your ill-gotten gains. However, as far as I understand it, Blockchain gives you your own, encrypted wallet which they have no access to, so it’s harder for them to abscond with your money.

A bitcoin on blockchain.info is worth two on MtGox.

The big problem with all web-based services, however, is that you can’t trust web services. Even if they use multiple layers of crypto, all it takes is for an attacker to find a hole in their system and insert their own Javascript, and it’s game over. The attacker can easily steal all your wallets and passwords without you or the service being any the wiser.

The safest wallet

There's an actual coin, so it must be legit!

All that having been said, there is a method I would recommend for storing your bitcoins, which gives you a great degree of freedom while still being very secure. I was lamenting the fact that there is no way to use a desktop app (which is more trustworthy) as my wallet without downloading the entire blockchain, when I realized that it would probably be possible to have a client-server desktop app where the server would store the blockchain, the client would query it only for the necessary transactions, and the client would be in charge of sending money and keeping track of how much you have. I began my search for such an app, and found Electrum, a fantastic and rather popular bitcoin wallet.

Electrum not only allows you to store your wallet locally without downloading any of the blockchain, but it also allows you to create deterministic wallets. Deterministic wallets are wallets generated by a long series of letters and numbers (which can also be turned into words, which is easier to memorize). This means that you don’t need to actually back up your wallet file, you can just store your seed somewhere safe (e.g. print it on a piece of paper and store it in an actual physical safe), and be sure that you will never lose access to your money because your computer died.

Not only that, but Electrum also supports offline mode, which is a bit of a hassle but which lets you store your wallet on a computer with no internet access at all, and only sign transactions there (for when you want to send money), while being able to see how much money is in your wallet from your normal desktop computer. This makes it much, much harder for someone to steal any money from you, as there’s no way to get onto the computer that holds your money without actually being in front of it.

The best of both worlds

After all this, my recommendation should be pretty clear: Store the bulk of your bitcoins in Electrum, which is the safer option, and transfer a small amount of money every now and then to blockchain.info or Coinbase (whichever you prefer, but I think I’d go with blockchain.info) to take advantage of their ease of use and slick mobile apps.

Another newcomer that looks good is GreenAddress.it, and I also discovered a very nice and secure Android wallet app called Mycelium. Mycelium also stores your key locally, so it’s hard to have it stolen.

This allows you to easily transfer money and pay for stuff from your phone, while still making sure that you don’t have to trust any third party with large amounts of money, and making it harder for attackers to steal your funds, as your wallet will only be accessible from a computer you trust.

Epilogue

I hope this post has told you a few things you didn’t know. I was rather surprised to hear about the existence of Electrum, because it sounds like a great idea and I couldn’t believe it took me this long to hear about it. If you found it useful, consider testing it out by sending me some bitcoins at the following address: 1Fob4pRghoUnnzTpnHhiF37UvVcyJLGM6K

I’m pretty sure nobody is going to send anything, I just want to see how much people don’t use Bitcoin. Don’t forget, if you have something to say, leave a comment below or get me on Twitter. Have fun sending money around!