Bitcoin Cash’s Scheduled Hard Fork Tripped Up By Software Bug

two-forks
15 May 2019

A system-wide upgrade otherwise known as a hard fork appears to have split the bitcoin cash network in two.

Bitcoin Cash is the fourth largest cryptocurrency in the world and possesses a market capitalization of over $6 billion. The chain split occurred after the bitcoin cash network tried to upgrade to new software at block number 582,679, according to data from BitMEX Research’s Forkmonitor tool.

As noted by a user on Reddit, one version of the software by bitcoin cash developer group – Bitcoin ABC – carried a code bug affecting the bitcoin cash mempool that was unrelated to the upgrade itself.

Similar to the bitcoin blockchain, bitcoin cash requires miners to validate transactions and append new blocks. The mempool consists of all pending transactions on the blockchain awaiting approval by a miner.

As stated by Reddit user “FerriestaPatronum“:

“Looks like there was a small bug in the mempool-acceptance rules for after the [hard fork]…From what I currently understand, it looks like the operation count was being validated with the old rules, not the new one.”

Since then, however, developers have released new code to fix the bug. According to data from CoinDance and comments from observers, the bug resulted in a string of empty transaction blocks prior to the fix.

Vin Armani – CTO of bitcoin cash application CoinText – reaffirmed to CoinDesk: “Blocks were going in empty for about an hour and a half. Now the mempool is clear and transactions are going into blocks normally. All is back to normal.”

Yet it is unclear at this time how many nodes – that is, computer servers running Bitcoin ABC software – have upgraded to the fixed software.

In response to the issue, crypto exchange Poloniex announced that it was pausing withdrawals and deposits in light of the hard fork issue.

To this, Poloniex Exchange tweeted:

“BCH had an issue with the planned hard fork scheduled for today. As a result, we have disabled deposits and withdrawals for BCHABC until further notice. BCH core developers are working on it. Thank you for your patience.”

A form of centralization

According to the R&D team of mining and pool operations for blockchain startup Navier, the majority of bitcoin cash miners use Bitcoin ABC software as opposed to other bitcoin cash software implementations such as Bitcoin Unlimited (BU).

“The majority of bitcoin cash miners use the ABC client rather than the BU client, so people were creating transactions and submitting them to the mempool faster than they could be written to a block and most of those blocks were empty, “ explained David Steinberg, the vice president of Navier.

Steinberg emphasized that having a diversity of software implementations could prevent similar glitches in code from tripping up the blockchain network.

Steinberg told CoinDesk:

“Having a single type of node is a form of centralization – you’re trusting the codebase from the node type you’ve selected to keep working as expected. Ideally, miners would have multiple types of node available to submit to in case something like this happens again.”

Having “singularly popular protocol implementations,” according to Steinberg, are especially dangerous during hard forks.

“The fact the introduction of this bug coincided with the hard fork exacerbated the issue, since you must upgrade your node to participate in the fork,” explained Steinberg. “For normal incremental updates, not every node will be up to date as quickly, so a problem like this is more likely to affect only a small number of miners.”

As such, Steinberg concluded:

“I’d say the biggest takeaway here is that programmers make mistakes, and that even decentralized systems can be affected in unexpected ways by the tiniest bits of centralization, like relying on a single codebase.”

This is a developing story and will be updated. The excerpt of this story has been updated to clarify that the code bug was unrelated to the hard fork code itself.

Crossed fork image via Shutterstock