14 - Upgrades
Do you remember back in the day when AOL was the primary way that you would get online? Hopefully some– if not all– of my readers can relate to that reference. For the uninitiated, AOL was a proverbial gateway to the internet. It was a subscription web browser, email service, and instant messaging platform all wrapped up into one. In order to “get” AOL, you had to obtain a physical CD, put it into your computer, and follow the instructions on how to “download” the software. You obtained the software from a physical device; and when AOL came out with a new version, you had to get the next CD and update the software you had originally downloaded. CDs have since gone the way of the dodo bird, but the internet has continued to deliver on its promise to efficiently distribute data– the core characteristics of what we described as Web1. Over time, we have moved from a system of CD’s into one where upgrades to software take a much different form.
Traditional software updates
AOL used CDs because the internet was new and not yet powerful enough for anyone to send much data through its infrastructure. Today, if you want to download software, you can often do so through the company's website. The modern internet is able to transfer data so efficiently that it takes minutes– if not seconds– to get the software you want. Updates happen faster too; and in some cases, software companies don’t even tell you that they are updating your software. Users don’t even realize an application has changed until they open their favorite app and notice that it is different.
Updating software is challenging. Using Amazon as an example, imagine if the marketplace wanted to make changes to the way a customer checks out. Any changes that get made to the check out code will impact the entire process of checking out. Even something as simple as changing what the click of a button will do could have unforeseen impacts on other areas of the process. Imagine a website as a large engine. If I clip a wire that I believe does one thing, it might also impact another part of the engine I don’t even know about and will only realize when I experience a problem.
Updating or changing an application also has cross functional coordination problems. You have to market the changes to your application and educate users as to why the change was made. Fielding any questions about the change requires great communication. If companies do not communicate well internally, the rollout of a new product or upgrade to an existing product can fall flat and result in major issues for the company. Considering how hard it is for companies like Amazon to coordinate software rollouts or upgrades, how does a network without any centralized leadership like Bitcoin do this?
Upgrading the chain
Like your Youtube or Facebook application, blockchains are collections of code accessible to anyone in the world. How the nodes communicate, blocks get created, and transactions are submitted are all outlined in the code. In order to make changes to the way a blockchain operates, the entire network needs to make changes to this code. Unlike Amazon, blockchains don’t have formal organizations. Traditional technology companies provide a framework by which all the company stakeholders communicate with each other and effectively execute a plan. Blockchain participants do not have any centralized organization telling them how to make these changes. Instead blockchains use forums and the network itself to coordinate these changes. As the first blockchain, Bitcoin pioneered the way to make these upgrades through what are known as “bitcoin improvement proposals” (BIPs).
BIPs are suggestions made by the bitcoin community as to changes that can be made to Bitcoin’s code to improve how the blockchain works. Anyone is able to submit a BIP and request that a change to the network be made. Changes could be requested including how transaction fees are calculated, how hard it is for a miner to find a block, or what kind of information needs to be included in a block. Determining what to include in an upgrade and when to implement it takes the entire blockchain community.
Once a BIP has been submitted, it will be discussed by the entire Bitcoin community. Bitcoin, along with most other blockchains, use open forums to discuss the changes being made. It is important that these discussions occur in public forums because of all the different parties that could potentially be impacted. Node operators, miners, wallet providers, exchanges and end users are all affected by these changes and should have a seat at the table to discuss whether or not to accept a proposed upgrade.
Signaling your agreement
Once there has been a general understanding of the change and a discussion has occurred, actually getting commitments from everyone to perform the upgrade is challenging. There are many opinions about how to properly do this. If we think about blockchains from a technical level, miners and nodes are really the two main players that need to get on board with an upgrade for it to occur. At the end of the day, a blockchain is a collection of nodes passing blocks created by miners back and forth. Wallet providers and users have a voice because they are the ones who give blockchain networks value by using them; but nodes and miners are actually the two parties that implement these changes at a code level.
Bitcoin has created a few different ways to get an understanding of how the network feels about a particular upgrade. When an upgrade has been agreed to by the community, the Bitcoin network requests that miners indicate their support for a proposal through a message added to every block they create. These messages indicate their support or dissent for a particular upgrade. Once a certain amount (95%) of miners signal their support at a predetermined time, the upgrade will take place. All the miners will make the change and from that point on, the network will operate based on the new rules. To learn more about this process you can check out BIP8 and BIP9.
Conclusion
The Bitcoin upgrade process is complicated and time consuming. Companies have core groups of people who make decisions about what to change in a product and what to keep. Blockchain networks do not. Instead they use a combination of public forms and network signaling to coordinate upgrades. The process is not efficient, but it is effective. For an upgrade to be accepted, it requires agreement from a vast majority of a network. However, unlike companies, in a blockchain network, any dissenters have a valid and viable course of action if an upgrade they disagree with passes. We will discuss that alternative option in next week’s article.
Editing support: Matt (Rocco) Lucciola