About the author of the following guest post: Ariel Horwitz is a Bitcoin activist, educator, consultant and writer for 99bitcoins. He has been involved with the Israeli Bitcoin Association, The Bitcoin Embassy in Tel Aviv, and has founded AlefBit — the first Bitcoin education website in Hebrew.

There has been much talk about the “Bitcoin fork” lately. So I thought it would be appropriate to explain some of technical stuff behind this obscure phrase.

The word ‘fork’ in this context originates from open source software. Open source software is computer code, which is intended to be openly accessible and liberally used by anyone reading it. Open source software can be coded communally (such as with the GitHub platform), or alternatively can be copied locally and coded separately.

The development of software like this would allow to draw trees: each time the code was copied separately there would be a new branch. This would be called ‘forking’, since the same code would then develop in two parallel directions.

As we know, the Blockchain is decentralized, which by definition means there is no absolutely “correct” chain. Each node in the network downloads all the blocks to connect a chain, verifies them against the laws of math and Bitcoin and chooses the correct chain accordingly. For instance, if there is a block that has an invalid cryptographic signature, any chain including that block is invalid.

A block will also be invalid if there is a violation of the Bitcoin rules such as, for instance, if a miner rewards themselves with 26 coins instead of 25 as per protocol. Either way, it is up to the individual to verify the validity of the blockchain. Therefore, it seems, if there are two conflicting chains, one is valid and the other is malicious.

However, small forks happen in the blockchain naturally quite often. If two miners find a new block at the exact same second, they will both have valid and legitimate blocks, and neither will have a reason to toss it out. Both blocks are linked to the last one, but the block after will have to be linked to one of these two. Technically, this is a fork in the blockchain.

This happens every so often in the blockchain with no malintent. Miners tend to quickly converge on one chain and discard the other because of profit-related motives, and so these discarded chains are usually only one block long and are considered a statistical loss. While technically these are forks, they are short and not intentional, so they are referred to as “orphaned blocks”.

What we’re hearing in the news these days is a whole different beast.

There is a heated technical discussion on a significant issue for a few years: how Bitcoin deals with scalability and high load. Only recently has the discussion become a more broadly discussed matter, seeing as how nothing has been done and with all the growth lately, the blockchain has been under stress and experiencing delays and higher costs for transactions. The technical discussion is immense and interesting, and any summary will not do it justice.

In one sentence, the issue revolves around block size: currently limited to 1MB per block of transaction. A measure put in place years ago to prevent DOS attacks, but kicking the can down the road for how to scale Bitcoin and allow for more widespread use of the system.

The most interesting recent developments involved a few developers writing a new version of the Bitcoin software. The project named BitcoinXT is lead by Mike Hearn and Gavin Andresen, and it takes a practical stand on the issue, allowing for bigger blocks. This is not the first time a new version of the Bitcoin software is written, but it is the first time one is created with the intention of allowing the blockchain to fork.

How does the blockchain fork?

Bitcoin-Feature

For a very long time, this discussion has been a topic mostly for the core developers, those contributing and volunteering time to work on the Bitcoin core code. However, Bitcoin is not under their control, and neither under the control of miners. While there are smart minds on either side of the debate, the blockchain is apathetic to opinions.

The new software allows for something that the old software does not. Something the old software would consider a violation of the rules of Bitcoin: blocks larger than 1MB. As a decentralized system, there is no higher authority which will make a decision, rather each node chooses for itself what are the rules of Bitcoin (a.k.a “The Bitcoin Protocol”). This is why recent developments are so interesting: using the new software is a way of choosing new Bitcoin rules.

Obviously, the developers of this software are not interested in breaking the rules, and they would only take effect if 75 percent of recent blocks signal that they are in favor of these new rules, a form of voting for support and consensus. Once we see the first block with the new rules – those who have not accepted them will consider the block invalid and will ignore while those who have accepted the new rules will consider the block valid and will add new blocks on top of it. This is where the blockchain forks.

What happens when the blockchain forks?

It’s actually quite simple: you get two chains with a shared genesis and are identical up until the forking point, after which they exist exclusively in parallel (unless one is completely abandoned), creating two separate networks.

Coins in my possession (all transactions leading up to that) before the fork remain mine on both chains after the fork, and both chains agree on those transactions since they were all before the fork. After the fork, each transaction takes place exclusively on each separate chain. It would be expected that each chain and the coins on each of those chains would get its own name (like Bitcoin vs. BitcoinXT).

The economies around each of these chains inherit the economies from the shared economy before the fork, so even though there are now twice as many coins, there is not twice as much value. In fact, the economy would split along with the networks. Therefore, when considering when and how to split, one should consider both technical and economic majorities. Even if 75 percent of the recent blocks were in favor of a fork, it is possible that less or more than 75 percent of the economy is in favor.

It may sound confusing, but this system allows for maximum individual freedom and minimum collateral damage. In the eyes of many, Bitcoin is still too young and it’s still too early in the experiment to split into two separate networks and two separate currencies (which is why waiting for a larger consensus before forking the Blockchain is a good idea).

If the new software would only wait for 50 percent of the network showing support before forking, it is possible that there would be no clear winner: both chains would compete and panic would ensue. Theoretically, though, the network can fork with only 20 percent support, taking along only a minority if they wish.

How is it even possible to do this?

This is a big principle in Bitcoin: there is no need to trust anyone, and everyone should enforce their own rules. Whether or not the new software gets support from 75 percent of miners, this is an interesting story to follow in the news, but now that you know what a fork is and how significant it is, you will understand why it is such a heated debate and why recent developments are so controversial.

The most recent developments

BitcoinXT is actually an implementation of the the BIP101 proposal – Mike Hearn and Gavin Andresen’s proposal for how to increase blocksize. That being said, there are other proposals for increasing blocksize, all curiously named BIP100, BIP102, and BIP103. As of writing these lines BIP100 – a proposal to allow miners to vote on blocksize with a 32MB maximum – seems to have the widest support among mining hashing power.

It seems that the mining industry is, generally speaking, wary of BitcoinXT, however they are supportive of the ability to increase the blocksize to 8MB. Some mining pools are allowing their miners to individually vote. Considering all these proposals are carefully designed to take time as well as gain consensus, all this can and will still change as the proposals and discussions are developing.