Wednesday, November 21, 2018

Why auto-checkpoints are a departure from Nakamoto consensus and a force of centralization

As a preface, I'd like to state my stance on the recent controversy. Up to this point, I have supported every change put forward by the ABC team. I view Bitcoin SV as a failed attack on the Bitcoin Cash network, and will gladly continue to support ABC and BU as driving forces in the development of the network. That is all I have to say about this.

Now I move on to my point.

If widely adopted, I consider auto-checkpoints to be the first change put forward by ABC which departs from fundamental Bitcoin rules. Just to clarify, I don't consider the current difficulty algorithm, canonical transaction ordering, OP_CHECKDATASIG, or other recent changes to be a departure from Bitcoin fundamentals. However, auto-checkpoints do make Bitcoin Cash less Bitcoin.

Auto-checkpoints violate a Bitcoin rule which is so fundamental that it is stated multiple times throughout the white paper (1): "Nodes always consider the longest chain to be the correct one and will keep working on extending it". If auto-checkpoints become widely adopted, this will no longer be true. Nodes will actively reject perfectly valid chains which have greater accumulated proof-of-work, based on a first-seen rule. This is a significant departure from Nakamoto consensus, where the state of the network is settled automatically by a decision which should be based only on hash rate.

This leads to a system with strictly worse decentralization properties. If the network ever becomes split - half of all nodes consider chain 1 to be valid, while the other half considers chain 2 to be valid - the conflict will no longer be resolved automatically by hash rate. Such event is not merely theoretical; this would happen if there ever was a prolonged network split, or under a zhell attack (2). If all participants wish to continue operating as a unified network, an explicit choice will have to be made between chain 1 and chain 2 - both of which are fully valid according to consensus rules.

Under these circumstances - a very plausible scenario-, the fate of the network will no longer be decided by proof-of-work like Nakamoto consensus dictates, but rather by proof-of-authority or proof-of-social-media. This is an unnecessary centralizing force, and reduces the power of miners (proof-of-work) against those with a louder voice in the community (proof-of-authority). This is a very delicate balance we should not be fucking around with if we wish to see Bitcoin reach its full potential.

As a final remark, I would like to state that I am not a fundamentalist. I do not believe that everything in the white paper should be unquestionable. For example, I believe it's perfectly reasonable to interpret "longest chain" as "chain with greatest accumulated proof-of-work", or to interpret "one CPU - one vote" as "one KH/s - one vote", among other updates based on how our knowledge of Bitcoin has evolved since 2008. However, auto-checkpoints do not fall in this category. They are an update on the very notion of consensus via proof-of-work, leading to a strictly worse trade-off.

I invite other influential actors in the space who are concerned about this change to speak up, and to run their nodes without enabling this feature.

---

(1) https://www.bitcoin.com/bitcoin.pdf

(2) https://www.reddit.com/r/btc/comments/9z1gjo/on_the_new_deep_reorg_protection/


No comments:

Post a Comment