Thursday, October 22nd, 23 days before the fork
I was asked in a comment to my last article what the difference is between Bitcoin Cash and Bitcoin ABC.
Simply put, Bitcoin Cash is the name of the cryptocurrency we all love to use here on read.cash and the network it is transacted on. Meanwhile, Bitcoin ABC is the name of a specific full node implementation that runs the Bitcoin Cash protocol, aka the software that is used by computers on the Bitcoin Cash network to process and validate transactions to insure they are valid under the consensus rules of BCH.
Since the consensus rules are what dictate whether or not a specific transaction is valid, if another node implementation enables a new rule that isn't agreed to by the rest of the network, what happens is known as a hard fork. A hard fork may or may not lead to a split of the chain. If all nodes follow the new consensus rules, it can just be seen as an upgrade, but if only some nodes follow the new rules and others follow the old rules, a split in the network will occur with anyone who held coins prior to the split now owning the same number of coins on both branches of the split (one branch following the old rules and one branch following the new).
Now that I've gotten that out of the way, how many full node implementations are there on the Bitcoin Cash network?
The above image shows all the various nodes that are running the BCH protocol. In this article I'd like to compare and contrast the 4 clients that are most prevalently used: Bitcoin Unlimited, Bitcoin ABC, BCHN, and BCHD.
Since I'm not a software engineer, this article is from a layman's perspective comparing these four teams based on publicly available information. If you're more interested in an analysis comparing the actual code, I highly recommend watching this presentation by Joannes Vermorel (I've also transcribed it here in case you'd prefer to read it instead).
So looking at things from an average joe's perspective, here are my general impressions of these four teams.
Let me start with BCHD, which is an alternative BCH implementation written in Go, while the other three implementations are written in the C++ programming language. BCHD is maintained by Chris Pacia (creator) and Josh Ellithorpe. Chris Pacia is of Open Bazaar fame, and Josh Ellithorpe is a software engineer working at Coinbase. My understanding is that BCHD is a great implementation to use for application developers though at the moment it isn't recommended to be used in mining. Since BCHD is written in a different programming language from the other clients, it also offers node diversity in a way that the others do not. The utility offered by BCHD isn't surprising since the two maintainers are people who have held legitimate jobs in the cryptocurrency industry, have been asked to speak at multiple conferences, and are generally well known and respected throughout the BCH community.
Next up is Bitcoin Unlimited. This is a group that has been around for ~5 years. They previously attempted to activate big blocks on BTC but failed to achieve that goal due to multiple bugs that made it evident their code was unreliable. Fortunately for BU, they were given a large donation of BTC before all this and before the big bull run of 2017 and have been surviving off of those donations ever since. They are led by their lead developer Andrew Stone, and their chief scientist Peter Rizun. My cursory research hasn't led to much information on what benefits BU currently provides the BCH community. It's also widely known that instead of heeding the warnings of people like Amaury Sechet and Gavin Andresen that their code was unreliable, they chose not to heed those warnings about poor development practices, which ultimately led to their failure to activate big blocks on BTC due to a number of bugs that were catastrophic.
Which leads us to Bitcoin ABC. The team is led by Amaury Sechet, who is arguably the person most responsible for the creation of Bitcoin Cash on August 1st, 2017. Bitcoin ABC is a fork of Bitcoin Core, the original codebase started by Satoshi Nakamoto. Besides Amaury, you have longtime contributors Jason Cox and Antony Zegers, and a total of 8 full-time software engineers, 1 technical operations manager, and 1 content marketing manager. Amaury has given countless interviews and presentations and is well-respected not only in the BCH community but in the cryptocurrency industry at large. Prior to working on BCH, he was previously a software engineer at Facebook for four years. Bitcoin ABC members have included people who have worked for companies such as the already mentioned Facebook, LinkedIn, Cloudflare, and Bitcoin.com. Bitcoin ABC is also the author of the technical roadmap that BCH has been operating under for the past three years, and it would be fair to say that since the inception of BCH, Bitcoin ABC was the de facto reference implementation of Bitcoin Cash until recently when that moniker has come in doubt.
Which leads us to Bitcoin Cash Node. BCHN is a relatively new full node implementation that was originally forked off the Bitcoin ABC codebase earlier this year as a reaction to the initial announcement of the IFP. Despite raising 978 BCH through their flipstarter campaign while stating: "The primary goal of the Bitcoin Cash Node initiative is to provide a safe and professional node implementation that will neutrally follow the longest Bitcoin Cash chain without contributing to the risk of a chain split", that announcement has since been taken down from their website. Below is an image from the way-back machine that shows what their site used to look like:
Unlike BCHD, ABC, and Unlimited, one thing that stands out with BCHN is that their lead maintainer is anonymous. I'm not saying you have to be a public person to run a node implementation, but I think there are aspects to knowing who the developers are that gives you a level of comfort and trust you don't get from anonymous contributors. And yes, I know Satoshi was as anonymous as they come, but it's hard not to wonder where we might be if Satoshi had been a known entity and was still around. I understand the argument that his anonymity was a feature, not a bug, but outside of a government agency kidnapping the man and holding him hostage, I think his public presence would have been an overall benefit to the project rather than a detriment. I have no problem with people disagreeing with ABC. This is a permissionless system where anyone is free to act in accordance with their own desires, but the reason for this article is to ask the question of whether it is wise for BCH stakeholders to hand over Bitcoin Cash development to such a new team that has yet to establish itself with a proven track record, or presented the greater community with a solid roadmap for the future. Below are some charts that help compare the github activity between Bitcoin ABC and BCHN over the past 42 weeks. The BCHN data starts from the point when the two codebases truly started to diverge:
Below is a chart comparing the number of commits between the two repositories over the same period of time:
As you can see, after an initial burst of activity for BCHN, the number of lines added or removed, and the number of commits, have drastically gone down over the past 12 weeks. Here are the averages for lines of code added, removed, and the number of commits over that same 12 week period:
I can understand if people think this article is meant to be an attack on BCHN. But all I'm trying to do is point out some data. The purpose of this article isn't to denigrate those who are working on BCHN, but to tell the BCH community that we need to consider all the facts as we approach this November hard fork. Why not give ABC an opportunity to show what they can do with proper funding? Why not let BCHN continue to build their reputation and challenge ABC when they've proven themselves? I believe the best case scenario would be a combination of the IFP and the donation model. Together they can be a killer combo that allows Bitcoin Cash to thrive with greater competition between all nodes.
Because more funding would exarcebate their already existing behaviours - they have shown very clearly that their words (we want multiple node implementations, for example) doesn't match their behaviour.
More money would mean further moving in the direction of their behaviour, not the direction of their stated goals.
As of november 15th, this will no longer be true, as ABC will implement the coinbase rule which does not have ecosystem consensus. As a result, they will split the network and will get to try out their experiement on their own chain, for better or worse.
Read.cash have already made it clear that they are following the non-IFP chain, so given the known circumstances I find the above quote inaccurate for the vast majority of the readers, although one could argue that it is technically correct at the time of writing.