Friday, September 11th, 2020
Recently people have been asking what the newest drama in the Bitcoin Cash community is all about, so here's a brief synopsis for those who haven't been paying attention.
On November 15th, BCH is set to undergo its regularly scheduled semi-annual upgrade. But what makes this hardfork not so regular is that it's expected to be a contentious one due to a disagreement within the community regarding the new coinbase rule known as the Infrastructure Funding Plan (IFP).
The team behind the IFP is Bitcoin ABC, the original implementation that created BCH on August 1, 2017. The IFP requires any new blocks mined using the ABC client to redirect 8% of the coinbase reward to an address controlled by Bitcoin ABC to fund infrastructure development. Any blocks mined that don't redirect 8% of the coinbase reward to ABC's address will be orphaned by ABC miners.
Earlier this year, those who opposed the IFP forked the ABC code and created a new node client known as BCH Node (BCHN). This new client is designed to follow the chain with the most accumulated proof of work, but does not include the coinbase rule, and anyone mining with BCHN will not redirect 8% of the coinbase reward to ABC's wallet address.
What this means is that miners using ABC will not consider BCHN blocks as valid and won't mine on top of blocks without the IFP. On the other hand, BCHN miners will mine on top of whatever chain has the most accumulated proof of work, whether the chain-tip is an ABC block or a BCHN block. So for example, let's say that the first block after the upgrade is mined by a BCHN miner (let's call this block 101BCHN). That block will not be seen as valid to an ABC miner so an ABC miner will continue looking for block 101ABC. Once an ABC miner finds block 101ABC, we now have two chains. If an ABC miner happens to find block 102ABC before a BCHN miner finds block 102BCHN, BCHN miners will orphan block 101BCHN as well and start mining on top of the 102ABC block.
Basically, miners using BCHN are at risk of wasting their money by throwing hash at a chain that could constantly be orphaned. Any coinbase rewards that are earned through mining BCHN blocks are at risk because the moment that block gets orphaned, those coins effectively disappear. ABC miners don't have that same concern since blocks mined using ABC code will not be orphaned by other ABC miners, even if they have the minority hash. On the other hand, for a BCHN chain to exist, they must always have the chain with the most accumulated proof of work. If at any point the ABC chain becomes the longer chain, BCHN nodes will consider the ABC chain as valid and orphan the BCHN branch, wiping out all transactions made on that chain including all the coinbase rewards earned by miners.
However the situation is further complicated by the 10 block rolling checkpoint that exists in both clients. This feature locks in all blocks that are more than ten blocks from the chain tip. As a minority sha256 chain, the checkpoint was put in place to prevent massive reorg attacks like the ones that have been recently happening to Ethereum Classic.
The 10 block rolling checkpoint is important because if BCHN miners are ever able to get 10 blocks ahead at any point, the BCHN chain will be locked in and a permanent chain split will occur. The only problem is if the ABC chain should ever catch up at some point afterward and become the longest chain, any new BCHN nodes that get spun up will end up on the ABC branch of the network instead of the BCHN branch.
I know it's confusing, but what it all comes down to is the miners. As of today, more than 50% of BCH blocks being mined are signaling they are using BCHN as their client, while the rest aren't signaling for any particular node implementation. This has given the BCHN faction confidence that they are indeed going to have the chain with the most proof of work after November 15. But we must keep in mind that signaling by changing the coinbase text doesn't necessarily mean a miner is actually using BCHN. They could still be using ABC because you can change the coinbase text to say anything you want regardless of what code you are using.
As I said, the situation is complicated. There are many different factors at play. For example, as a miner it would be to your advantage if a competitor were to waste resources mining BCHN blocks that constantly get orphaned. At the same time, if you are mining ABC blocks, while you don't run the same risk of wipeout as you would mining with BCHN, you still have no idea what the market will value the ABC coins if it happens to be the minority chain, though obviously the same concerns would apply to the BCHN chain as well.
The bottom line is nobody knows exactly how this is going to play out. Even the miners themselves can't possibly know what the outcome will be unless they can read the minds of their competitors, which is what makes this entire scenario so fascinating.
But there's a lot more to what's going on. The reason this is all happening is perhaps even more important than the different technical ramifications I've just described.
To give you a little background, as I've already mentioned, Bitcoin ABC is the team that effectively created Bitcoin Cash. Not only that, but they are the team who came up with a clear roadmap on how BCH should scale and have been working towards that goal for the past three years. Unfortunately, progress has been slow due to a lack of funding, which has limited ABC's ability to hire additional people who can insure the future of the network. Despite what some may believe, the network doesn't just magically continue working all on its own, and it certainly isn't going to magically scale all on its own, which is why more resources are needed to find talented developers to help move the chain forward.
There are essentially three ways to fund protocol development: 1) Donations 2) Venture Capital (i.e. Blockstream) 3) Diverting a % of the coinbase reward
For the past three years, Bitcoin ABC has tried to rely on donations alone to survive, but it has become evident that the donations they've received have not been enough. This could be due to a variety of factors such as the long bear market, a tragedy of the commons type situation, or as some ABC opponents suggest, due to ABC's own inability to prove their value to the community.
While the bear market certainly hasn't helped, I would argue the lack of infrastructure funding can't be blamed on market conditions alone. This is supported by the fact that the Bitcoin Core team has also suffered from the same funding problems despite the huge financial gains BTC investors have enjoyed since it's earliest days. Ultimately, BTC developers ended up being funded by companies like Blockstream and Chain Code Labs that chose to take the protocol in a direction that benefited their own purposes rather than the currency as a whole.
Sure you could argue that another team may have had the ability to raise sufficient funds through donations alone, but all the evidence thus far has shown otherwise. Bitcoin Core couldn't do it, Bitcoin ABC couldn't do it, and so far the money raised for all the other BCH node teams through flipstarter campaigns have been significantly less than what ABC raised on its own. The market has spoken, and a donation model doesn't appear to work.
Which leads us to Bitcoin ABC making the decision to move forward with the IFP this November. While some people in BCH argue the 8% is a tax, we must remember that miners are always free to mine using whatever software they choose, whether that's BTC, BSV, ABC. or BCHN.
The beauty of Bitcoin is that no one is forced to do anything in Bitcoin. It is a completely voluntary system that encourages everyone to act in their own self interest.
For Bitcoin ABC, this means charging miners to use their software to validate blocks. To me, this is an elegant solution to the funding problem that aligns the incentives of all parties involved. ABC gets additional funding and is incentivized to make BCH more valuable without having to seek out venture capital that may require them to take the network in a direction that might be damaging to its future. Miners who believe ABC can successfully scale the network are incentivized to mine with ABC software because if they don't, they will risk losing a valuable development team that can scale the network. Without scaling the network and enabling massive transaction volume, the future of BCH will look increasingly grim with each additional halving. The fact that miners using ABC code will in reality only be losing out on less than .2% of revenue rather than 8% makes the situation all the more attractive.
The argument being made by those who oppose the IFP is that it gives too much power to a single developer team. My counter to that would be by not doing the IFP you leave BCH vulnerable to capture the same way BTC was compromised by venture capital money wanting to stifle development to serve their own purposes. I'm also not afraid of the IFP giving ABC too much power because should ABC show themselves to be malicious or incompetent, it will be easy for a team to fork the ABC code as BCHN did, remove the IFP, and have miners use that code and fire ABC in the process. As Amaury has said himself, you can't fire someone you never hired. By effectively hiring ABC, you are incentivizing ABC to work hard to maintain job security.
I think the IFP is as capitalistic as it gets, and an organization seeking to profit from their work without intervention is the very definition of a free market system. Not allowing them to do so would be the exact opposite.
Finally, let's say you have no problem with ABC going the IFP route but you don't think they deserve to keep the BCH ticker. To this I ask on what grounds? Bitcoin ABC created BCH and has spent the last three years maintaining the network. In that time, others have voluntarily joined the community and contributed in different ways, but does that automatically entitle them to steal the BCH brand? Let's say I volunteered at my friend's sandwich shop for three years. Let's call this shop BCH Sandwiches. Just because I helped market the shop and grow its customer base, does that entitle me to take my friend's recipe, open a competing shop, and call it BCH Sandwiches while forcing my friend to change his shop to some other name? In what world does that make any sense?
Please feel free to share your thoughts in the comments below. Do you support Bitcoin ABC's right to profit off their work and keep the BCH brand they built over the past three years? Or do you think it's right for another party to prevent Bitcoin ABC from changing their software as they see fit as well as take the BCH brand because they disagree with the direction ABC is taking?