Why I oppose Segwit2X. And why you ought to.

I don't oppose Segwit2x on the grounds that 2MB blocks are too large. I don't think anybody seriously opposes it on those grounds. I oppose Segwit2x on the basis that this ought not to be the way that we upgrade the protocol. Perhaps contention and controversy is inevitable. But there ought to be widespread community consensus that, excepting critical flaws to Bitcoin, technical changes which threaten to cripple Bitcoin ought to be eschewed.

This hasn't been about blocksize for a while. Anybody who has been paying enough attention to the ebb and flow of arguments back and forth, and thought about the way that the Bitcoin system as a whole is defined and operates ought to have realized that. No, this is about how upgrades to the protocol are introduced, implemented and adopted.


History

So let's take a step back and root ourselves in the history of the project.

  • Bitcoin is a software project started by Satoshi Nakamoto in 2008; the network came online in January 2009. Satoshi disappeared in 2010-2011. While Satoshi was around no one questioned that as the author of the software he had the right to alter the protocol as he saw fit. No one had to accept his changes (except for the fact the alert system he built into the software allowed him to basically force upgrades) but essentially he owned the Bitcoin trademark (I'm not aware he ever asserted such rights) and could have altered the software as he saw fit.
  • While Satoshi was around, he assembled a group of developers to which he handed effective control of the project before disappering. He transferred control of the repositories to Gavin Andreson who became the maintainer (decides what code gets committed) of the Bitcoin project.
  • This group of developers eventually became Bitcoin Core and the source code of the "official" (uncontroversial at the time) Bitcoin client was eventually moved from Sourceforge to Github. On April 7, 2014, Gavin Andresen stepped down from the position of Core maintainer and nominated Laan as his successor (source). Wladimir van der Laan became and is the current maintainer of Bitcoin Core.

All of the above is objectively true. Over the course of these shifts in the maintainence of the Bitcoin project--from Satoshi to the community, from Satoshi to Gavin to Wladimir, from Satoshi to sourceforge to github--there has been a great deal of continuity.


What is Bitcoin?

People spent time to think though the existential questions of Bitcoin:

  • What is Bitcoin? Who gets to define it?
  • How are changes to the protocol decided upon? How are they decided upon? Who gets the final say?
  • Who ought to have the right to answer the questions above?

People quickly realized that nobody except for Satoshi had an unimpeachable right to answer all of the above (because he [would] owns the Bitcoin trademark): to define what bitcoin is, to make changes to the protocol, to dictate processes to facilitate the same, essentially to create an organization with the power to do all of the above. This is a common problem in Open Source projects. Who gets to decide what the software is and how to update it? There are different models, but there is a tendency toward Benevolent Dictators for Life. Satoshi was surely aware of this and he chose, wisely I believe, not to answer any of the above questions. I'm not sure these questions have good answers for a system which is intended for global adoption, in which it is a vital property that no one be able to unilaterally change the system. He disappeared, refusing to bear that burden or to allow people to expect him to. And very importantly forcing people to answer these questions for themselves.

(BTW people moan and groan over the apparent existential crisis that Bitcoin is having as if its a flaw, whereas I believe its part of the intended design. Think about it. Bitcoin is on a path to become something like an intenternational reserve currency/asset. Does anybody on this sub understand how crazy that is? No project or system run (defined/controlled) by an organization which can be coerced gets to be in a position like that. The only assets which have gotten into an even remotely similar position in recent history (creation of the Fed) have been Gold and the USD. But I digress.)


Bitcoin is Software

Bitcoin is, primarily, two things: an open source software project and a permissionless decentralized cryptographically secured ledger. If we are going to say that Bitcoin is permissionless, then it must immediately follow that nobody gets to dictate who or even what software interacts with the Bitcoin network. In this way everyone is always free to define what Bitcoin is for themselves, to run whatever software they like and call it Bitcion. But as a community, it must be very clearly said that no person has a greater inherent right to dictate what Bitcoin is or isn't. And we must understand this, realizing simultaneously that in order for Bitcoin to be a useful system it must have a clear definition. It is for this very practical reason that, in that absence of a formal specification, what was the Bitcoin-Qt client and what is the Bitcoin Core client is referred to as the reference implementation of Bitcoin.

It is important to note the continuity with which this has been true. This continuity is the reason why despite much gripe and grumbling about the status quo, the status quo has persisted. This resistance to change is the reason why Bitcoin is anything at all. If this resistance in the face of controversy is relaxed, the markets may or may not respond adversely in the short term, but in the long term disputes over which Bitcoin-derivative is "the real Bitcoin" will destroy any hope of widespread adoption as a "hard asset".

In the light of all of the above, and without directly or definitively answering any of the questions asked thus far, the Bitcoin reference implementation has continued to be developed as an open source project. Along the way, those developing and maintaining that project have developed processes to allow anybody to contribute subject to review and cross-examination before inclusion into the reference implementation. The broader Bitcoin community has things such as the BIP process to facilitate discussion of changes to the protocol and of standardizing schemes across the Bitcoin ecosystem; etc. .

Now in order to reduce controversy and to minimize existential strife, the Core team has been extremely conservative with regards to what might be considered 'coercive' changes to the reference implementation. By this I mean changes which break or alter Nakamoto consensus and therefore force other people to accept or reject the changes at the risk of fracturing the network. Hard forks are exactly this. The most important part of Bitcoin is necessarily its definition. If the publicly agreed upon definition of Bitcoin is meaningfully and persistently fractured then the network might not die (though it might be temporarily disrupted), but the usefulness of Bitcoin as a global standard might.


This is the most important reason that I oppose Segwit2x. Not because 2MB blocks are too large. Not because the 2x software which has been released is unreliable. But because changes to Nakamoto consensus must only happen when there is sufficiently broad community consensus for the change so as to make it unambiguously and unimpeachably uncontroversial. Otherwise we, as a community are jeopardizing the future success of the project.



Submitted October 28, 2017 at 02:58PM by enqueued http://ift.tt/2zduYyW

Comments

Popular posts from this blog

Coinmarketcap are listing BCH sites as BTC

15 years of BTC Power Law