Scaling Bitcoin: No Bullshit Edition

Bitcoin isn’t the transformational technology you may have been led to believe.

Bitcoin’s breakthrough wasn’t in technology, it was in game theory. The technology underlying BTC, the blockchain, is really just a fancy term for “a shared list of transactions”. Yes, really. What was truly revolutionary about bitcoin was aligning the incentives of miners, users, and developers financially. Everybody does the right thing, because it is in their financial self-interest to do so.

Key to understanding any discussion is figuring out what concrete changes are being proposed, and then comparing those realities with whatever the claimed reality will be. What would the actual effects of those concrete changes be? What would the world look like with those changes in place? Who would the beneficiaries be? Are the claimed benefits in the same ballpark as the actual benefits? Why might that be?

This chart shows the number of transactions in every bitcoin block, going back to the beginning. What you can see is that transaction volume increased steadily until about mid-2016, and has since flattened out. It flattened out because you can’t mine blocks with an unlimited number of transactions. The limit is currently not by transaction but by total size (1MB), and transactions can be different sizes. Bitcoin is growing in popularity, more people want to have it and use it. A great metric of any financial system is “how many people can use it”. Assuming 3 transactions per day (per participant), and an average of 1750 transactions per block, the current bitcoin network can support about 84k people. That’s about the size of the town I live in. Obviously, we’re gonna need to change something if we want bitcoin to be more than a 70 billion dollar hobby project.

There are two mainstream changes currently proposed, inexplicably fighting to the death on Medium, Twitter, Reddit, and elsewhere. Let’s look at them, using this rough “how many people” metric, and not whatever rhetoric their proponents are peddling.

Option 1: Lightning / SegWit / L2

One proposed solution is to take the problem elsewhere. By building a secondary network, in parallel to Bitcoin, we keep most of the transactions off of the bitcoin network, allowing more people to make more transactions without stressing out Bitcoin itself. Currently, the most popular solution is called Lightning, which does a nice job with incentives — it builds a system wherein if you don’t play nice, you lose money. Unfortunately, this means that to play at all, you have to tie up money. In essence, you have to “buy in”. You exchange “IOU”s with someone (open a payment channel), and then keep track of the running tally between you and that other person. Either party can “settle up” at any time (known as closing the channel).

The “network” part of it is that in principle you can send money between any two people by routing money through the network of channels. If Alice wants to send money to Charlie, she can send it to Bob, who then sends it to Charlie. At least, in theory anyway. In order to prevent Bob from running away with Charlie’s money, Bob has to have a lot of money tied up in channels, at least as much as the total amount flowing through him. The more people Bob is connected to, and the more money he wants to route, the more he looks like Bob-a-bank. In the proposals I have read, Bob isn’t compensated for his service of routing funds, he’s just doing it out of the goodness of his heart. If Bitcoin has taught me anything, it’s that Bob (or Bobabank) will start charging transaction fees. Fair enough, as long as those fees are lower than full blockchain transaction fees, we win.

Assuming everything else stands the same, we now have two ways of measuring the capacity of bitcoin-with-lightning. The first is, how long would it take to get the world’s population onto the system, if we did nothing but onboard new users (opening a channel requires a transaction on the network)? The simple math answer is 65 years. The real answer is: never… more people are born every day (360,000) than we have transactions per day as it currently stands (270,000). This metric is a little doomsday, so let’s try another: assuming each person “settles up” once a month (an insanely low estimate, I think), how many people can participate on this new lightning network? About 7 million. Pretty good — we went from a large town to a large city! For reference, there are 60 cities larger than 7 million people.

Great, now we just need to scale by 100,000% to serve the whole world (and somehow make sure people only settle up once a month!).

Option 2: Bigger Blocks

The other popular option is to say “let’s make the blocks bigger”. At 1MB they’re quite small now. Let’s try to serve NYC, assuming one transaction per day per person. In order to serve 8.5M people, transacting once per day (again, probably a low number), we need 60k transactions per block — so 60MB blocks would work. The biggest block size increase being considered now is nowhere near that, so go figure. Someone recently mined a 1GB block on a test network, but there’s a lot of problems between here and there. Fundamentally, bitcoin, as it stands now, is a serially-processed project, transactions go by, one at a time, fill up blocks, which go one at a time. The harder we push this system, the more we’ll run into problems. You can’t drive all the cars in New York to LA on a single-lane road, no matter how high you set the speed limit.

Option 3: All of the Above, and More

Even if we do both, collapse transactions into channels and let blocks get huge, we run into more problems: the better bitcoin gets, the more people it reaches, and the lower the fees are, the more each person will want to use it. 1 a week will turn into 1 transaction a day, will turn into 10. We have no idea how much people will be transacting in the future. As we continue lowing barriers, we’ll continue to see transaction volume go up. We’ll never be able to keep up with demand by staying serial, our world is inherently parallel. Fortunately, we already have more lanes — we’ve got dozens of major cryptocurrencies! So why can’t we just add a bunch more currencies, and solve the scaling problem that way? Altcoins suffer from a very similar problem as social networks: infant mortality is brutal. When coins are small, they can easily suffer from what are known as 51% attacks — where a miner with lots of compute power basically can do whatever they want…

So you’re saying we’re doomed?

Not quite… I’m just saying that the three major proposals (L2, big blocks and sidechains/altcoins), even taken together, have many unsolved problems between now and the proposed everybody-uses-cryptocurrencies-for-everything utopia hidden in their sales pitch. Hopefully, a solution exists. There’s a lot of smart people working on it. However, if you’re trying to understand things, you have to read a lot, and make sense of the fundamental technology yourself. Now that so much value being represented in crypto assets, there are a lot of people who are financially motivated to change the network to their benefit. You must evaluate their propositions on their technological reality, and figure out who’s world you want to live in. If you don’t, you trust others to do it for you, and we’re back where we started: currency by fiat.