Changing the Difficulty Adjustment Algorithm (DAA) algorithm in Bitcoin Cash has been a hot topic. To understand what this means, and why it's important, please read jtoomim's excellent article on read.cash.
I can't say I understand all the technical nuances of the issue, and certainly not how we should determine which algorithm is the best, so I've only been following the discussions from the sideline. Some might say that makes a poor developer, but I think knowing when you're out of your depth is a strength, not a weakness.
Just consider what happens when two teachers (you know, the ones in school who are supposed to know what they're talking about) are asked something they don't know. One who tries to give an answer even if they don't really know and one says they don't know, but they refer to a resource where the students might be able to find an answer.
Who is the best teacher?
It's obviously the one who can admit they don't know and that others might know better.
Yet this is hard to do and it's a mistake many developers (including me) have made. This is called the Not Invented Here Syndrome (NIH), and I think it's rearing it's ugly head in the Bitcoin Cash space again.
The Not Invented Here Syndrome (NIH)
Developers who suffer from NIH are biased to choose their own solutions instead of using existing solutions or accepting solutions that others suggest, even if it's worse in every way (sometimes significantly so). This isn't done out of malice, but it's a psychological trap all of us are susceptible to.
I've worked with people who took this to the extreme and wanted control over everything. So they created their own algorithms for graphics manipulation, database schemes, file formats and even their programming language, while rejecting any alternatives as worse as their default, and only, stance.
But I digress. The reason I started thinking of NIH was jtoomim's recent comment on reddit, in a discussion about the DAA change:
I was initially trying to keep discussion public and transparent, because that's how I think things should be done. But it's become clear that this is a sensitive issue for ABC for some reason, so I'm now trying to have a private, no-audience, off-the-record conversation about it. No, I can't tell you if I'm having any luck or trouble with that endeavor.
I think the reason is that ABC is suffering from NIH, and they find it difficult to accept a non-ABC solution.
The history of DAA and NIH
The mining difficulty in Bitcoin Cash has long been an issue. When Bitcoin Cash split it used something called the Emergency Difficulty Adjustment (EDA) that forcefully lowered the difficulty if very few blocks were found, but it allowed for miners to heavily abuse the system:
(Image from https://medium.com/@Mengerian/bringing-stability-to-bitcoin-cash-difficulty-adjustments-eae8def0efa4)
A new DAA was discussed to solve this issue, and many developers were working together to decide on a new replacement. However I, and many others, were surprised when ABC suddenly announced that they had chosen the next DAA, and it would be ABC's own proposal.
The reasoning they gave was suspect:
We have the utmost respect for the all developers involved in the discussions, but only one algorithm could be chosen, and a timely decision was required.
Therefore, we decided to take a scientific approach and utilized two impartial and unconnected testing teams: Bitprim and nChain. These teams conducted their tests separately and came to the same conclusion of which algorithm was most appropriate.
Firstly it's not a scientific approach to hand off the decision to two teams, and just take their arguments as truth. Especially as they never released their research methodology and research data, making us unable to falsify their tests (a core property of the Scientific Method).
Secondly nChain, spearheaded by serial scammer and fraudster Craig Wright, is (and was) a known bad actor and has not acted in the best interest of Bitcoin Cash.
Thirdly the DAA was already known to have serious problems, problems that we're now experiencing first hand (see jtoomim's article for details).
Now I must reiterate that I don't believe ABC chose the current DAA out of malice. But I do think the bias that NIH introduces played a big part, making ABC ignore the problems and only focusing on the positives of their proposal.
(As another example micropresident, an ex-ABC dev, wrote an article where he suggests we should now change to another ABC made solution. This suggestion was shut down by jtoomim in the comments.)
ABC has a history of NIH
ABC's history of NIH isn't limited to the DAA and there are other examples.
Pre-consensus
Years ago ABC came out and said that Avalanche will solve pre-consensus for Bitcoin Cash (basically improving 0-conf). But in the process they're ignoring other potential solutions such as Storm and are continuing to focus purely on Avalanche as the solution, despite serious and unsolved concerns.
Token proposals
ABC has been anti tokens in Bitcoin Cash, that the focus should be on p2p digital cash and nothing else, and I agree.
But when arguing against it they promoted permissioned tokens as an alternative and they argued against (and blocked) the GROUP_BY proposal without really understanding it. (There's a video of this discussion, but I'm sorry to say I didn't manage to find it.)The color of the logo
Perhaps a silly example, but NIH is prevalent even in the choice of Bitcoin Cash logo. While most of the community prefers the Bitcoin Cash logo to be green, ABC still clings on to the orange logo.
It's well understood in marketing that presenting a consistent image is very important, and consequently an inconsistent use of logos harms the Bitcoin Cash brand. Therefore the priority should be to make the community switch to the same type of logo, instead of holding on to your favorite just because that's what you like. Especially if it's something minor like the color of a damn logo.
If you've been following the development I'm sure you can come up with other examples, these are just some of the biggest examples.
What can we do about it?
Why do I focus so much of my attention on ABC?
Because they're the de-facto lead implementation and so far in the history of Bitcoin Cash they have dictated the development. If ABC implements a consensus rule then everyone else followed and if they opposed a feature then it got abandoned.
The leader of of BCH development, whoever that may be, must be super vigilant for the negative effects of NIH, and actively and consciously work to avoid it, otherwise we run the risk of getting stuck with problematic solutions or miss out on better solutions.
If ABC cannot do this then I think it would be better if another team would take over as the leading implementation.
Ok tnxxx