When you’re prompted to update your digital banking app on your smartphone, you probably don’t even think twice. Maybe your phone auto-updates without you even noticing. It’s a necessary process, after all – if you don’t install the latest version of the software, you run the risk of being denied access to its services.
Who makes the decisions in a blockchain network?
Developers are responsible for creating and updating the code. For your typical coin, anyone can contribute to this process. The code is available publicly, so they can submit changes for other developers to review.
Full node users
You’ll often find overlap in these categories. You could, for instance, be a developer and a full node user, or a miner and full node user. You could be all three or none. In fact, many of what we consider to be cryptocurrency users don’t take on any of these roles. Instead, they opt to use light nodes or centralized services.
The developers aren’t breaking into your home and coercing you to download the Bitcoin Core binaries at gunpoint. If miners adopt a “my way or the highway” attitude to force an unwanted change on the users, well, the users will just take the highway.
What is a fork?
A software fork occurs at a point where software is copied and modified. The original project lives on, but it’s now separate from the new one, which takes a different direction. Suppose that the team of your favorite cryptocurrency content website had a major disagreement with how to proceed. One part of the team might replicate the site on a different domain. But going forward, they would post different types of content than the original.
The projects build off a common ground and share a history. Just like a single road that later splits into two, there’s now a permanent divergence in their paths.
Hard forks vs. soft forks
Despite having similar names and ultimately serving the same purpose, hard forks and soft forks differ significantly. Let’s take a look at each.
What is a hard fork?
Hard forks are backward-incompatible software updates. Typically, these occur when nodes add new rules in a way that conflicts with the rules of old nodes. New nodes can only communicate with others that operate the new version. As a result, the blockchain splits, creating two separate networks: one with the old rules, and one with the new rules.
Nodes turn blue when they update. The older yellow nodes reject them, while blue ones connect to each other.
So there are now two networks running in parallel. They’ll both continue to propagate blocks and transactions, but they’re no longer working on the same blockchain. All nodes had an identical blockchain until the point of the fork (and that history remains), but they’ll have different blocks and transactions afterward.
An increase in block size requires modification of the rules. This was before the SegWit soft fork (more on that shortly), so nodes would only accept blocks smaller than 1MB. If you created a 2MB block that was otherwise valid, other nodes would still reject it.
Only nodes having changed their software to allow blocks exceeding 1MB in size could accept those blocks. Of course, that would render them incompatible with the previous version, so only nodes with the same protocol modifications could communicate.
What is a Soft fork
However, doing so doesn’t automatically disconnect you from the network. You still communicate with nodes that aren’t implementing those rules, but you filter out some of the information they pass you.
Even two years after SegWit activation, not all nodes have upgraded. There are advantages to doing so, but there’s no real urgency since there’s no network-breaking change.
Hard forks vs. soft forks – which is better?
Fundamentally, both of the above types of forks serve different purposes. Contentious hard forks can divide a community, but planned ones allow the freedom to modify the software with everybody in agreement.
Soft forks are a gentler option. Generally speaking, you’re more limited in what you can do as your new changes can’t conflict with the old rules. That said, if your update can be crafted in such a way that it remains compatible, you don’t need to worry about fragmenting the network.
Hard forks and soft forks are crucial to the long-term success of blockchain networks. They allow us to make changes and upgrades in decentralized systems, despite the lack of a central authority.
Forks make it possible for blockchains and cryptocurrencies to integrate new features as they’re developed. Without these mechanisms, we’d need a centralized system with top-down control. Otherwise, we’d be stuck with the exact same rules for the lifetime of the protocol.