Bitcoin is a great invention, and some of us have been heavily influenced by it, and it will never be forgotten. Unfortunately, due primarily to the maximum block size, Bitcoin is not useful, and instead has become merely a religion based on arbitrary technical parameters.
Satoshi Nakamoto made some brilliant decisions, but he also made a bunch of mistakes. By leaving the project in 2011, with no one in a position to make decisions in his absence, it has become impossible to move forward with Bitcoin. Fortunately, it is possible to learn from these mistakes and do better with a new blockchain.
This article is not designed to insult Bitcoin or Satoshi Nakamoto. Bitcoin’s ideas have been very influential, and I remain convinced that these ideas will become mainstream in the future.
Bitcoin’s greatest influence can be summarized as:
This list is not comprehensive. Other articles and books have sung the virtues of Bitcoin. However, in this article I want to chart out some of the mistakes with Bitcoin, so that we can learn from them and do better in the future.
The maximum block size is famous. There was a war in 2017 over whether the maximum block size would or would not be removed, and the result is that it was not removed. This means transaction volume hit a cap in 2017 and has not increased since then.
Some argue the Lightning Network, or some other “L2”, will enable Bitcoin to scale. But these solutions have fundamental issues, including:
This is not a comprehensive list of the faults of L2. The biggest fault is easily observed: L2 has been discussed for at least 10 years, and arguably the entire history of Bitcoin (“payment channels”), but has never been proven to work reliably with users. Anyone who researches L2 will quickly discover this obvious fact that L2 has simply failed in the real world.
By adding in the maximum block size, and then leaving, Satoshi Nakamoto left a leadership gap that no one else was ever able to fill. Thus, it has proven impossible to make any changes to the consensus protocol of Bitcoin. Again, some proponents think this is a virtue (“it’s decentralized!”), but to those of us building applications, it is a fatal flaw. Bitcoin simply cannot be used for anything other than speculation and there is no one with enough authority over the project to change that. If no one takes a leadership role and commands an increase to the maximum block size (“exactly this amount, on exactly this schedule”), then Bitcoin will continue to be useless for applications. Such commanding leadership seems all but impossible given the current culture of Bitcoin.
The maximum block size and lack of leadership are not the only mistakes. Off the top of my head, I can think of several encoding issues that would not have been made if Bitcoin were designed today.
Bitcoin has “transaction fees”, which I think are better called “change fees”, where if the inputs add up to more than the outputs, the remainder is a fee paid to whoever mines that transaction. This is not a good way to pay mines, for the following reasons:
The solution is simple: Instead of putting a fee in a transaction that goes to a random mine, the user should sign up with a mine (or a wallet who does this on their behalf, like any economic supply chain) and pay a fee directly to that mine. This would make fees predictable and would allow mines to create added value for users because the users know who the mine is.
Presumably Satoshi wanted mines to be anonymous and thus he included no information designed to identify mines in the protocol. But mines can’t be anonymous in practice because they are discoverable through network analysis. It would be more helpful to have identifying information about the mine in the protocol so they can communicate with each other and to users and so that users can develop relationships with good mines.
Bitcoin seems to have been designed for instant, irreversible transactions. That is how the original software was designed and operated. Unfortunately, that has changed over time due to the presence of the maximum block size. Today, nodes allow “replace by fee”, meaning transactions are not reliable until they are confirmed. In fact, thanks to the presence of reorgs, transactions must be confirmed multiple times to be reliable. This means transactions are extremely slow. They are also expensive (unpredictably so). This is a death knell to all applications except speculation.
These problems could be easily fixed with small changes. That can be done on other blockchains, or on Bitcoin if only someone with enough authority could get the change through:
This would allow for instant transactions and would only require small technical changes to the Bitcoin protocol. It would also make reorgs impossible, simplifying all application development. Unfortunately, because this was not thought of in advance, and there is no one in position to change Bitcoin, it is impossible to make these changes.
Bitcoin is a remarkable invention that deserves a place in the history books. Unfortunately, it simply is not useful in its current configuration. The maximum block size is the most fatal issue, but there are other issues as well.
I see no path forward other than to create a new blockchain that is free from these errors. In summary, the changes needed are: