Wednesday, February 26, 2014

Bitcoin's Failure to Scale

The golden age of Bitcoin is over, but it's not because of the reason you'd think. The recent drop in the price of Bitcoin after the collapse of MtGox is irrelevant because as I've said before the price of Bitcoin is irrelevant. However, the MtGox collapse and the joint statement regarding this collapse from major players in the Bitcoin industry highlights that Bitcoin has taken a wrong turn and is now plowing ahead in the wrong direction.

Why is Bitcoin useful? If you've read my post "The Price of Bitcoins is Irrelevant" you know that I consider Bitcoin to be useful for one important function: transferring money online for the purpose of buying and selling goods and services. In the past, we've had decentralized currency exchange in the form of cash and centralized electronic currency exchange in the form of ACH transfers and credit bard payments through banks, but we haven't had a good means for currency exchange which is both electronic and decentralized. Bitcoin is useful because it provides exactly these properties, or at least it used to.

The problem with the modern Bitcoin economy is that it is becoming less and less decentralized. Much of the Bitcoin exchange is now happening through a handful of services such as MtGox and Coinbase. They are essentially taking on the role of unregulated banks and are starting to act in much the same way that banks did before regulation. The collapse of MtGox is a tale as old as money, with an origin before the rise of modern banks. Before banks as we know it existed, there were goldsmiths that would hold onto your gold and other valuables while you were off on the crusades. They provided physical security for your physical wealth in exchange for a fee. You got a paper receipt as proof of your deposit of valuables. Of course eventually someone showed up to get his gold back and found out that his piece of paper was worthless because the king had raided the vaults to finance his war efforts.

The problem with banks is when they replace your actual money with virtual money in the form of an account balance. This is a promise from the bank that they will give you back an equal amount of money as you gave them to hold. Of course, a promise is only worth anything if it's fulfilled. An account balance denominated in Bitcoins is no better than an handwritten IOU. There's no way to know if the vaults are in fact empty.

It's not necessary for Bitcoin companies to implement their services this way, by converting your actual Bitcoin assets into account balances. Bitcoin holdings are independently verifiable by examining the blockchain. Therefore the responsible way to operate is for Bitcoin companies to merely act as proxies. Rather than running the Bitcoin client yourself, a company such as Coinbase can run it for you, providing an easy to use interface, dollar/Bitcoin exchange services, and secure backups of your private keys. However, the majority of Bitcoin services don't operate this way. They do not actually keep your Bitcoins for you, instead the Bitcoins you deposit or receive as payment go into that company's account and in exchange you only get a promise. They can at any time freeze your account, become insolvent, or otherwise break their promise and thereby steal your money. As example of this problem, look at the Coinbase et. al. joint statement in the part where it calls for Bitcoin companies to have "clear policies to not use customer assets for proprietary trading or for margin loans in leveraged trading". The fact that they even have the option to do this means that Bitcoin has failed to live up to its potential. A decentralized currency shouldn't have these problems or else we're just using banks again, unregulated banks, prone to all of the failures and abuses we've come to know and fear.

You might argue that this has nothing to do with Bitcoin. You can still run the client and be fully decentralized. People are free to build these centralized bank-like services on top of Bitcoin and other people are free to ignore them. However, there's a reason that people use services like MtGox and Coinbase. Bitcoin has some flaws which make it a usability nightmare and the centralized services fix those flaws. Let's discuss some aspects of the Bitcoin design and why they failed to scale:
  • Mining as the means of issuance
  • Requiring the full transaction history to make transactions
  • Fluctuating exchange rate
Mining as the means of issuance is one of the key innovations of Bitcoin and it worked quite well in the early days to ensure fairness in a fully decentralized way. However, as mining has scaled, it has failed to remain decentralized. Mining power is now concentrated in just a few mining pools. This is a direct effect of the way mining is done, with the difficulty being set by the hashrate. As the difficulty increases, the ability for individuals to successfully mine declines, forcing consolidation into pools. To be fair, the founders of Bitcoin could not have anticipated dedicated ASICs for mining. In the early days, the difficulty was discussed as something which would go up and down over time, not something that would go forever upwards.

Requiring the full transaction history to make transactions is a straightforward scaling problem. The size of the transaction history grows over time with the number of transactions. For existing clients, dealing with this is just a matter of storage space and keeping up with new transactions. For new clients, the entire history must be downloaded, which delays their introduction into the network. This has also caused recentralization. In the early days of Bitcoin, everyone ran the client, in fact there was no other option. This was fully decentralized, the way Bitcoin was meant to be used. More and more users are migrating to Bitcoin services which manage the transaction history for you. The signup for these can be instant and they are especially useful for mobile users that don't have sufficient resources to run a full Bitcoin client all the time. This once again re-centralized Bitcoin use.

In the early days of Bitcoin, the exchange rate was low but stable. Bitcoins were often obtained through mining instead of purchase as mining was something anyone could do. The exchange rate was not something to worry too much about as it changed slowly, and mostly upward. As the interest in Bitcoin grew, the volatility of the exchange rate increased to the point that it is a significant consideration for customers and vendors that would like to transaction using Bitcoins. This has lead to a desire for holding account balances in dollars. Services like Coinbase and Bitpay will let you transact entirely in dollars. This is not in itself a bad thing, but it means that once again you have to use a centralized service as the Bitcoin client has no way of converting your Bitcoins into dollars for storage.

So three aspects of the Bitcoin design that some would say are integral to its character as a cryptocurrency have all failed to maintain decentralization as Bitcoin has scaled. I argue that in fact these characteristics create pressure to centralize at scale. This is very bad for Bitcoin as it means that as it scales it will lose more and more of its advantage over traditional online payment methods.

Here is my three-point plan for getting back to decentralized cryptocurrencies:
  • Don't use services that give you an account balance instead of holding your actual Bitcoins
    • Blockchain seems like the only viable choice right now
    • In the past I have supported Coinbase, but unfortunately I must suggest moving off of it
  • Build services that maintain the decentralized operation of Bitcoin
    • Most of the services provided by companies like MtGox could be offered without account balances, storing actual Bitcoins for users
    • Bitcoin clients in the cloud offer are a good compromise
    • These services should be independently auditable by looking at the Blockchain
  • Build a new cryptocurrency without these scaling problems
    • Mining was a cool idea, but it must be replaced
    • Clients should be able to connect quickly without the full transaction history
    • A stable exchange rate
    • While we're at it, no transaction malleability
Let me know if you're interested in working on these things with me. I have several ideas for experiments that I think might be good to test the water.