Aug 4, 2020

About a year ago discussions started around the Bitcoin Cash DAA (Difficulty Adjustment Algorithm). It was getting clear that there were problems, but frankly only a small number of people looked close enough to know about the malfunction at all.

Today I want to briefly talk about how the design, selection and creation of shippable solutions for this malfunction happened, and why that has been so beautiful.

The story started some 6 months ago with a video from an independent developer that explained the actual issue, it showed a zoomed-in version of the mining data that was much richer than you find on a website, and suddenly with one video, the whole problem with the DAA became clear to everyone. And this really kicked off the journey to fix it.

A handful of enthusiasts started to investigate the issue early on, come up with solutions, work together and compare their results. It is important to realize that most of those people are closer to mathematicians than they are software developers, the problem they were solving was really a math problem, after all. The beauty of what happened is that those people were not employed to work on this. On top of that the research happened in the open, with published papers, test data and similar being shared between them. No company lawyers that wanted to keep things secret!

The next stage of the journey started when one guy put in the hours (including nights!) to use all these ideas from these mathematicians and he extended modeling software to find out what algorithms and options worked best. His report of findings blog was a turning point because he converted the work from theoretical into practical. He made things accessible to a much larger audience.

Where before there were a handful of people working on this problem, now we had an avalanche of helping hands. One of the deliverables is the C++ implementation, this is really not much code, yet it had half a dozen people make changes and fixes and clarifications, as a clear example of this collaboration.

This stage was where the effort to fix the DAA turned, for lack of a better word, global. Practically everyone that is active in BCH joined in, learning from others, making some fixes that nobody spotted yet, doing a video about it, answering questions on Reddit or even writing a blog to inform the people about progress and more.

The result is something I think everyone in the BCH community can be proud of. The ASERT algorithm is likely the most researched, proof-read and tested DAA-proposal in existence. And due to the massive engagement, a huge amount of people actually have more than passing knowledge about it, which is really amazing for something so technical. And it will be part of BCH come November at the scheduled Protocol Upgrade!

I personally went in skeptical, asked loads of questions, probably overwhelming some. But nobody got upset about questions, instead they rose to the occasion. They told me more, I got to understand the design. I became part of the movement. I even got some minor component in the spec to be renamed to something I think explains things better :-)

The aserti3-2d DAA is the first really proof-driven protocol change in BCH, chosen on merit not by one person but practically by everyone in the community. And not some design-by-committee either, no, the many developers had the opportunity to actually be part of this meritocratic process. And most jumped in and did.

As this is partly a personal story, my point of view, I want to add as a personal opinion that I believe that this is how governance of BCH can work and should work. A proof-driven process. Where people are less important than the work. Where the result is more important than ego or even a nodes’ market-share.

Because in Bitcoin Cash the fixes we make, the features we add, those make our coin more valuable to more people. As our economy grows this helps all of those working in and on Bitcoin Cash.