Why We Will Adopt the Hard Fork of Bitcoin Cash
Bitcoin Cash will be hard forking on November 13 to fix the emergency difficulty adjustment (EDA) algorithm so that block times don't fluctuate wildly. Fixing the EDA is a good thing, but this hard fork has a number of problems:
- The Bitcoin ABC developers have not communicated to the wider Bitcoin Cash community about why this hard fork must occur on November 13. That is very short notice to require everyone in the ecosystem to update their software. If not everyone updates, for instance some exchanges or wallets, the ecosystem will be semi-broken for a period of time. Furthermore, because this occurs right before the S1X/S2X split, it creates an extra burden on exchanges and wallets to support yet another hard fork amidst the challenge of supporting the non-replay-protected S1X/S2X split.
- The Bitcoin ABC developers have not communicated to the wider Bitcoin Cash community about the details of the testing that was done and why one particular algorithm was chosen. The chosen algorithm happens to be the one proposed by Amaury Sechet, the lead developer of Bitcoin ABC. Were the other options given adequate opportunity or has Amaury Sechet biased the testing process to prefer his own algorithm? Many of the algorithms have been explained on Yours: Amaury Sechet's algorithm, Kyuupichan's algorithm, Dgenr8's algorithm, Tom Zander on the EDA, Tom Zander on Satoshi's algorithm, Tom Zander on simulations of the EDA, Tom Zander on the DAA. (Have I missed any?)
- There are at least three alternate implementations of Bitcoin Cash: Bitcoin Unlimited, Bitcoin Classic and Bitcoin XT. The new algorithm will be published on November 1. Thirteen days is a very short period of time to require other implementations to change their difficulty adjustment algorithm to match Bitcoin ABC's. This is more than just "updating software" - this involves writing and testing sensitive code which must be exactly correct or the software will fail.
However, even with all these issues, Yours will adopt the new hard fork for the following reasons:
- Fixing the EDA soon is a good idea and will make the user experience on Yours better.
- For Yours, two weeks is sufficient time to update our software. We use Trezor's fork of bitcore to access the Bitcoin Cash blockchain. This runs a Bitcoin ABC binary. To update, we will need to spool up a new bitcore node with a new Bitcoin ABC binary. We estimate this will take a couple of hours of effort plus a day or so to sync. We will run the new node in parallel, and assuming the hard fork goes through as planned, we will update one line of code in our app to use the new node.
- Requiring unanimous developer consensus is unrealistic and is exactly the reason why Bitcoin has been hamstrung by infighting for several years and why Bitcoin Cash was created in the first place. We welcome a new world where important problems can be fixed with a hard fork in a short period of time without unanimous agreement.
- Miners want to win: They will investigate the software and algorithm to an extent they believe appropriate to determine whether mining this chain is in their best interest. We want miners to profit from Bitcoin Cash so that they continue to be incentivized to secure the chain. We will use the fork that miners prefer.
- Even if there are some problems with this hard fork, for instance if insufficient testing leads to unexpected changes in mining profitability, by demonstrating an ability to hard fork quickly, Bitcoin Cash will probably be able to fix any new problems on short notice as well.
- Other implementations are free to propose their own changes and can either update their software to match Bitcoin ABC or they can fork to a new chain. The implementations are in a competitive market and it is not a given that all of them will continue to be useful to businesses and users. If the alternate implementations have a better plan, the community is free to pick whichever plan they prefer. Our prediction is that Bitcoin ABC's plan will probably become the main chain due to their close ties with miners.
Finally, some thoughts on how this could be done more smoothly in the future:
- Although developer consensus is not a requirement, it is preferred. Hopefully future hard forks can mature over a longer period of time to achieve agreement amongst the entire community about the correct path forward.
- There should be better communication channels for businesses and users to know when they need to update their software.
- Two weeks may or may not be enough time for the ecosystem to update. If this is too short, we will find out when some exchanges or wallets don't update in time.
Some further opinions behind the pay wall.
2 of 2 reviewers say it's worth paying for
0 of 2 reviewers say it's not worth paying for