Nodes, Opcodes, and Satoshi’s Vision: Today’s Bitcoin Cash Hard Fork Explained Nodes, Opcodes, and Satoshi’s Vision: Today’s Bitcoin Cash Hard Fork Explained

Bitcoin Cash has existed for little more than a year, but it is already facing a bruising civil war. On November 15, the network will complete a “hard fork,” after which signs indicate it will split into two competing versions—one led by Craig “I Might Be Satoshi” Wright, the other by Roger “Bitcoin Jesus” Ver.

Because this is cryptocurrency we’re talking about, both sides have engaged in an intensely bitter social media shouting match that has divided the community and is (perhaps) responsible for a dramatic decline in crypto markets overall.

If you’re wondering WTF this is all about, and you want the signal in the noise, here’s a look at how hard forks happen and why this one is so contentious.

What’s a hard fork?
First, let’s talk about the fork part.

Software is made up of lines of code: hundreds, thousands, sometimes even millions of them. Large software projects have many contributors, especially in “open source” projects where the code is publicly available and users can suggest improvements.

Craig Wright

If there is no central authority governing how the software should be developed, sometimes disagreements occur, and different groups decide to split off on their own. So, to “fork” a project is the process of duplicating the code as it was at a certain point, then taking it in a new direction.

Though software forks are prevalent in the open source world, the hard/soft fork distinction is usually only found in blockchain technology, and differs slightly from other software forks. Where blockchain is concerned, the fork relates to the contents of the blocks that make up the blockchain.

In a soft fork, some nodes begin to accept blocks that are created according to a new set of rules, but continue to accept blocks produced under the old rules. This means that while there is some difference between the two, they are mutually compatible, and the validity of the blockchain as a whole is accepted by both rule sets.

In a hard fork, the change means that blocks made according to a new set of rules are considered invalid according to the old rules, and vice versa. This leads to a split in the blockchain: from that point, miners (who validate transactions) and users need to decide which set of rules to enforce. Effectively, there are now two versions of the cryptocurrency that cannot be reconciled.

Who’s involved in this one?
If we’re talking about the software, then the two competing versions are Bitcoin ABC and Bitcoin SV. But as far as the real drama is concerned, the two players are the giant egos at the head of each project: Roger Ver and Craig Wright, respectively.

Ver is a bitcoin veteran, investor in various startups during the early days of bitcoin and the man who became the face of the 2017 hard fork which created Bitcoin Cash in the first place. Wright is most famous for his dubious claims to be the creator of bitcoin. After a few years in the wild, he has re-emerged recently to become a prominent figure in the cryptocurrency scene.

Both are known for being vocal and volatile characters, and have succeeded in making the upcoming hard fork much more about them than about rival code implementations.

This expanded functionality concerned “purists” in the Bitcoin Cash community who want the cryptocurrency to remain close to the original blueprint

That said, while online discussion of the hard fork is largely a personality contest, there are technical differences between the two camps that have roots in Satoshi’s original ideas for bitcoin.

Bitcoin Cash started as a response to bitcoin’s perceived inability to scale, a criticism based on the high transaction fees and slow confirmation times that make it (currently) unsuitable for low value day-to-day transactions. To be useful as “cash,” Bitcoin Cash had to allow for a high volume of transactions, which it did by increasing the 1MB block size of the original bitcoin network to 8MB.

In the upcoming hard fork, both sides want to increase block size significantly again, with a question remaining over how much.

The ABC in Bitcoin ABC stands for Adjustable Blocksize Cap. In this model, node operators are able to specify the maximum block size they would like to process. A September post from the Bitcoin ABC blog suggests the team wants to remove the block size limit entirely, but it will start at 32MB after the fork.

The default block size for Bitcoin SV will be 128MB, four times the size of even the upgraded ABC blocks. This might seem like a significant difference, and indeed, it is—but it’s not the main point of contention between the two sides. To understand that, we need to look into the opcodes.

Roger Ver

What are opcodes?
The software that runs on bitcoin nodes is written in the programming language C++, but bitcoin transactions can also contain instructions written in a bitcoin-specific language called Script.

Whereas the Ethereum platform has a Turing-complete programming language that allows for decentralized applications and smart contracts, Script is a basic language that allows only for a small range of possible operations, constructed with a set of commands called opcodes.

When Satoshi built the first implementation of bitcoin as described in the whitepaper, s/he created a range of opcodes, not all of which are currently being used. In August, Bitcoin ABC had the audacity to release an update that included two new opcodes: OP_CHECKDATASIG and OP_CHECKDATASIGVERIFY.

The new opcodes create the possibility of verifying the data in non-transaction messages, such as input from a trusted external data source, or “oracle” (this could, for example, be used to automate conditional transactions, like “if company X is trading above Y dollars at Z point in time, send some bitcoin to the specified address”). These opcodes were designed by the Bitcoin ABC team to increase the functionality of Bitcoin Cash, but were not part of Satoshi’s original plan, which saw bitcoin as digital money and nothing else.

This expanded functionality concerned “purists” in the Bitcoin Cash community who want the cryptocurrency to remain close to the original blueprint. So along came Bitcoin SV—“Satoshi Vision.” SV was developed by nChain, a research company where Craig Wright is employed, after a request from Calvin Ayre. Ayre is CEO of the largest Bitcoin Cash mining pool, CoinGeek, and also happens to be building a $100 million luxury resort in Antigua with his cryptocurrency profits.

For anyone who just wants to invest, or find a bitcoin equivalent that works as well as cash, there are no real winners in a race like this.

Bitcoin SV does not use the new opcodes proposed by ABC. Instead, it proposes to restore two of the original “Satoshi opcodes,” which were proposed by Satoshi but deactivated in the current version of Bitcoin Cash, and fulfill some basic arithmetic functions rather than the more complex data validation of OP_CHECKDATASIG.

Even this part is not without controversy, but that’s another story.

So can’t they just get along?
You might think that technical differences between people who are both invested in the success of a cryptocurrency could be peacefully resolved, but apparently you’d be mistaken.

In fact, Craig Wright, whose SV project currently has the majority of Bitcoin Cash hash-power behind it, has publicly vowed to kill off Bitcoin ABC after the hard fork. Indeed, there is already a mining pool—SharkPool—that is dedicated solely to attacking the network by putting all of its hash power into mining empty Bitcoin ABC blocks. So peaceful coexistence looks unlikely.

Regardless of who comes out on top, the bitterness of the war has brought down the price of Bitcoin Cash substantially. For most outsiders, this looks less like a principled stand and more like a fight between two men who like to argue.

For anyone who just wants to invest, or find a bitcoin equivalent that works as well as cash, there are no real winners in a race like this.