Wednesday, February 10, 2016

Why we should keep the Bitcoin block size at 1mb forever

In a previous blog post, I committed the heresy of heresies by stating that I think a fee event would be good for Bitcoin. In this post, I will go further and state my position that I think Bitcoin should keep the block size at 1mb (plus the additional allowance for signature data in the SegWit proposal) forever and never hard fork.

First off, lets discuss what kind of capacity we can expect with the current version of Bitcoin + SegWit + Lightning Network (the prereqs required for Lightning Network and SegWit are scheduled to be deployed in April of this year according to the Bitcoin Core roapdmap). According to Thaddeus Dryja's (the co-inventor of the lightning network) presentation at the Hong Kong Bitcoin scaling conference, with a 1mb block size, Lightning Network can support 8.3 million users. It's important to note that he also used a conservative estimate that only half of the capacity of the blocks would be used for Lightning Network transactions. He also did not include the additional capacity created by using SegWit (which since these are multisig transactions, could more than double the capacity). There are also things like Schnorr signatures which can further reduce the size of data and thus capacity. With all these improvements, we could easily see a 1mb support a capacity for 30 - 40 million users. Lets conservatively say that the Core protocol could have a capacity of 20 million or more users based on the changes being made this year. That is not to say that as soon as Bitcoin Core makes these changes, 20 million users will be supported because there is significant work to be done in wallets and layer 2 protocols to get us there. But, even if no additional changes are made to Core at that point, we can eventually support those users and if the block size does not change, there will be a financial incentive to upgrade the wallets and layer two tech. I will later consider Side Chains, but for now, lets discuss what the world would look like if, under no circumstances were we to change the block size limit.

So, 20 million users is great, but clearly we have more ambitious goals for Bitcoin. We want the entire world to be using Bitcoin. Right? Yes, of course, but the question is in what way? Before we answer that question, lets just look at what the picture would look like if the 1mb block size was kept. What would likely happen, assuming more and more people want to use Bitcoin? Clearly, Bitcoin would become a settlement layer only and off blockchain transactions would be required to scale. It would be similar to the current banking system where people use banks that settle with one another. That's bad right? We don't like banks right? Well, given what the banking system has done in recent years, this sort of reaction from bitcoiners to the notion of using "Bitcoin banks" can hardly be considered surprising, but lets look at this more realistically. First of all, these "banks" would not be anything like what we consider a bank today. They could (and would) operate behind the tor network (or similar) and be impossible to regulate. They would also be forced to compete with each other and given there's no way to regulate them, it would be a completely fair playing field. They would of course compete on fees and thus fees would likely go to 0. But, more importantly, they would compete on transparency. These off chain transaction providers (I will not call them banks) would be forced to cryptographically prove reserves at each and every bitcoin block. Greg Maxwell describes a method for doing so that, while ensures reserves for each user of these off chain providers, maintains their privacy as well.

With this model in mind, the capacity of 20 million users is much more than sufficient as that means we could have up to 20 million off chain providers that compete with each other which in turn provide services to the 7 billion people on the planet quite easily. That compares very favorably with the number of bank branches today. This document shows some interesting statistics about number of bank branches in the world. In the US, there were 32.4 bank branches per 100,000 adults in 2014. If we extrapolate that number across the world and make allowances for all people (not just adults), that means there'd need to be just over 2 million off chain providers to have a similar topology to today's banking system. This would also mean that each local branch was totally independent from each other which would lead to a much more decentralized system. While, this system is unlikely due to the fact that by being online this sort of locality is not necessary, it does illustrate that 20 million off chain providers is more than sufficient to create a vibrant market.

With the model described, we have a system that allows for 20 million interconnected off chain providers that can allow massive scale to the system. This system is not trustless, but any bad actor that maintained less than 100% reserves would be discovered within 10 minutes and completely lose all credibility for the rest of time. While exit scams would be possible, I don't see them as being practical because the cost of reputation loss would exceed the benefits gained by maintaining the trust. There would be fierce competition which would cause a race to the bottom in terms of fees, yet other services (like lending and insurance) could be provided and off chain provider services would be a loss leader. It would also be quite easy to diversify with many providers to reduce risks of exit scams. I also want to discuss the privacy implications, but before we get to that, lets discuss how this system compares to the modern banking system. In terms of financial inclusion, the described system is far superior because it can easily support the world's population. The modern banking system cannot. In terms of transparency, the described system is far superior because the off chain providers would be forced to implement proof of reserves which is impossible in the current system. Inflation would gradually reduce as Bitcoin's supply is limited, whereas in the current system, inflation is variable. Fractional reserve banking would be impossible in the described system because proof of reserves would make it impossible to implement.

Now, the remaining issue is around privacy. At this point, many will think the draw back is around privacy. Bitcoin's promise was in part to allow you to be your own bank and to hold your own private keys. Wouldn't letting someone else (like these off chain providers) hold your private keys mean you lose your financial privacy? First of all, as I mentioned, these off chain providers would be fiercely competitive and also be difficult to regulate (because they could run behind tor and other anonymizing tools and be in a diverse set of geographical locations). So, one of the things these providers would compete on is financial privacy. In the olden days, it was possible to have a "Swiss bank account" where your identity was not required and it was only secured by a number. But this type of privacy would again be possible in the described system, and it would be provided. But, that does not address the fact that at the off chain provider would at least be able to track what you are doing with your money. However, with advanced cryptography (like homomorphic encryption and zero knowledge proofs, and other things), one could envision a system where even the provider wouldn't know specifically who is authorizing the transaction, only that they are authorized to make the transaction. So, while research is required, it seems likely that the same level of privacy could be provided through the proposed system. Additionally, coinjoin across these off chain providers could be implemented as well.

With all this in mind, it appears that Bitcoin users would be able to get everything they want: financial inclusion, censorship resistance, sound money, transparency, trust minimization, without increasing the block size at all. The next valid question though is: why do this if we can just raise the block size safely to 2mb or some other number? Well, there are certainly some benefits to keeping Bitcoin the same and never having a hard fork at all. If, over a significant period of time, Bitcoin avoids ANY hard forks, that says a lot. It says that Bitcoin is almost IMPOSSIBLE to change. Since it works for certain things (and we can build many others on the layers above), that is a very good thing. If it were hard forking every few weeks, it might be harder to predict what Bitcoin will be say 20 years from now. With Bitcoin staying the same, innovation can move out to the layers above (much as what happened with TCP/IP and other technologies that have ossified). It also means that mining can be run through the tor network (or an internal version of tor that is built into the protocol in the future) and that it will be much harder to censor transactions. One of the great fears is that mining will be regulated, but if everything is run through tor, it would be that much harder to figure out where people are mining from. Another added benefit is that with limited space to store transactions, fees would go up, so there would be a force pushing fees to be sufficient to support the network as the block reward subsidy disappears over time.

The remaining thing to discuss is side chains. If the picture I painted is not sufficient to convince you that there's no reason to increase the block size, ever, then if you consider Side Chains, you might see that there really is no need to raise the block size. A side chain could easily be implemented with a much higher capacity. A safer strategy than increasing the block size on the main chain would be to add a side chain with a higher capacity. If problems occur with the side chain, we still have the main chain which has been unmodified. From a risk averse perspective, it makes more sense to take the risks on the side chains.

So, in conclusion I think the risks outweigh the benefits for a block size increase and I just don't see the need for it. The stability of a system that has never forked as enticing. Personally, I'd prefer to keep the block size at 1mb forever. If you disagree, I'd love to hear why and hopefully I've helped raise your awareness on this issue with my input. All the best!


gianni espera said...

what about on chain transactions? if i want to move cheaply my bitcoins on chain i shouldn't because you do like sidechains?


and what about miners?

in the long run they will relay on fees, so 1Mb = few fees = little security to the overall network

Christopher Gilliard said...

On chain transactions are just a mean to an end. It's the end we should focus on. I am not the one who decides. I'm just asking people to do the thought experiment.

Patrick O'Brien said...

This entire post was a crazy-person ramble vaporware plug for the LN. The routing for LN has not been developed and whether it can be in a decentralized way is complete speculation. Everything you've suggested here takes the long-way around instead of just implementing IBLTs and increasing on-chain txns. What you've described above would demolish Bitcoin's market share. Bitcoin will be replaced by a different coin if on-chain txns are not increased.