Blockchain is a disruptive technology that is changing the world in a variety of ways. Cryptocurrencies are the most obvious example. This article compares and contrasts this technique with open source, another revolutionary technology that has transformed software development. We’ll look at how these systems differ in their approaches and qualities, as well as why open source development is the key to rapid blockchain adoption.
In 1991, a group of researchers and scientists set out to create a technique that would allow them to timestamp documents in an immutable format so that these could not be tampered with or backdated. They came up with a solution that was simple and straightforward. Each timestamp would be saved in a block. A timestamp, a unique hash value to identify the timestamp, and the hash value of the previous block holding the previous timestamp would be included in each block. These blocks would be programmed to be immutable, making it nearly impossible to modify their values. Figure 1 gives a graphic representation of this.
The researchers had no idea that they were laying the groundwork for a technology that might one day revolutionise a variety of sectors. Satoshi Nakamoto (a person or group of persons) founded Bitcoin in 2008 using blockchain technology. The aim was to change the way we use money. Bitcoin can solve the problem of ‘double spending’ without the need for a central authority or figure. All transactions are transparent and consensual, ensuring that all parties involved have equal power and access. This also solves the problem of inflation that happens commonly with cash based currencies.
Blockchain technology, as it is now known, is being used to revolutionise the way many sectors operate. Its implementation in cryptocurrencies is the most essential of these. Bitcoin, the most popular cryptocurrency in this field, is mined and collected all around the world. El Salvador has recently adopted Bitcoin as legal tender, and many more countries appear to be following suit.
Medical record systems, voting mechanisms, tax collection and a variety of other initiatives that require transparency, consensus and security are increasingly incorporating blockchain technology.
How does blockchain work?
Let’s now spend a few minutes attempting to figure out how the technology works. Wrapping your head around blockchain is a piece of cake if you’ve studied data structures and/or are familiar with the ‘linked list’ data structure. If you don’t understand something, you may need to read it again.
The notion of blockchain, like other breakthrough technologies, is really simple and straightforward. As seen in Figure 2, each block consists of three major parts. We have the data we want to store, as well as a hash code that uniquely identifies the block, and the hash code of the block before it in the chain. The data you want to save is determined by the technology for which you’re trying to use the blockchain. For example, if blockchain is used to hold data for a cryptocurrency, each block would have information such as the sender’s ID, receiver’s ID, amount transacted, and so on. A new block is created each time a transaction occurs.
So, why do we refer to blockchains as ‘immutable’? Figure 3 displays the formation of a blockchain and the contents of each block. When you add another block to the chain in Figure 3, a new hash is generated in addition to the previous block’s hash.
The important thing to know is that every time you edit the data within a block, the hash value of that block is updated. If you tamper with or change the data in an existing block, the hash code of that block will change as well. This hash code is unrecognisable to its successor, who has stored the prior block’s original hash, resulting in the blockchain being broken. The chain is broken when any block is tampered with (see Figure 4).
Blockchains are believed to be immutable for the reason that data remains intact once it is saved. So, given this constraint, how do blockchains handle adding new blocks? This issue is addressed with a notion known as ‘proof of work’. In essence, the process of adding blocks is slow and a block is only added after the transaction has been verified by enough individuals in the network. A proof of work is established once the transaction is verified, and the block is added to the chain. The time it takes to complete this operation varies depending on the blockchain implementation. In the case of Bitcoin, it takes roughly 10 minutes.
The decentralisation of blockchain technology is widely appreciated. But what exactly does that imply? How are blockchains able to function without a central authority? This is accomplished through the use of a ‘distributed ledger’. When you are a part of a blockchain, such as Bitcoin, what you are, in reality, is a node in a vast network of other nodes engaged in monetary transactions. Instead of having a single node control and maintaining the primary ledger, blockchain distributes a copy of the ledger to all nodes in the network. So, if you have Bitcoin software installed on your computer, you are a node in the Bitcoin network and your computer has a ledger of the entire blockchain.
As shown in Figure 5, any time a new block is added to the chain, all nodes in the network are notified of the change, and are required to verify and accept the new block as a legal transaction, building a consensus among all parties involved. Because no single node has complete control over the chain, blockchain is referred to as a decentralised network. Instead, each node has equal power, and all modifications are reflected in the ledgers of all nodes in the network, ensuring that all transactions are completely transparent and secure.
What is open source software and why does it matter?
Simply put, open source software is software for which the source code is publicly available. The term ‘open source’ is used primarily in conjunction with software, but it is a methodology that can be applied to anything. In fact, open source is used for collaborative development of many different technologies apart from software, such as Web development frameworks, high/low level computer languages, bots, plugins and, most importantly, blockchains.
From a distance, the incentive for creating open source software is similar to the rationale for creating a blockchain. The founders of the open source movement aimed to make the software development process more transparent. If a software’s source code is made public, essential information such as security issues, the type of user data collected and saved by the software, and the many frameworks and programming languages used to create the software are all made public. This grants the engineers the freedom to read and understand the program at a granular level, and to contribute or modify it to meet their own needs and objectives.
Linus Torvalds’ operating system, Linux, rose to prominence in the late 1990s. Linux is now found in everything — from cell phones to televisions and the Mars Rover. It was, nevertheless, a simple yet ground-breaking piece of technology unlike any other at the time. Its source code was open source and freely available. Publishing your source code openly was unthinkable to many in the computer business at the time, but the benefits began to outweigh the drawbacks, and soon enough, more and more organisations joined the bandwagon. Netscape was the first significant name in the business to open up the source code of its Web browser. Soon after, in 1998, a meeting was convened in Palo Alto, California, at which the term ‘open source’ was first coined, and the Open Source Initiative was born. Almost every piece of software you can think of nowadays is open source.
So, how do open source programs get created and maintained? This was a difficult problem to solve at first. It was a huge undertaking to create and collaborate on open source projects. The majority of the software was packaged into tarballs and distributed via Web portals. The problem with this strategy was that it was impossible to keep track of who in the project was making which file changes. The code was frequently problematic and collaboration was difficult. To combat this, developers began developing version control software that could track changes and log the versions of each software release. CVS and Subversion were two of the first widely used version control systems. However, they were not without defects, and some of the most pressing issues with open source collaboration still needed to be addressed.
Finally, in 2005, Linus Torvalds produced another ground-breaking piece of software to aid with the maintenance of his earlier Linux software. Git is the name he gave to this version control system. Git was the first non-linear, distributed version control system of its kind, capable of easily and quickly managing a project with thousands of collaborators. Figure 6 depicts the fundamentals of Git’s operation.
You can use Git to compile project files into what is known as a project ‘repository’. This is the project’s main repository. A collaborator can then ‘fork’ this repository, which is a fancy way of stating that he can make a local copy of it on his computer. The collaborator can then ‘commit’ the code to his local repository, which is a technique of updating and storing the changes made to the repository, after making any necessary revisions. The collaborator then sends a ‘pull request’ to the main repository’s moderator. The moderator has the ability to examine the modifications made by the collaborator to the project and to ‘merge’ the collaborator’s changes with the main repository. That is, once a pull request is sent, the project moderator can either accept or reject the changes made to the project.
Git includes a number of other intriguing characteristics, such as ‘branching’, that make it a very strong and widely used open source tool. Such subtleties, however, are beyond the scope of this article.
Characteristics of blockchain
We have discussed blockchain at length in the previous sections. Let us summarise our discussion by listing the characteristics of blockchain.
Immutability: A hallmark feature of blockchain is that it is incorruptible. Data once saved in a block cannot be changed without breaking the chain.
Decentralisation: Blockchain does not require a central authority to maintain the ledger. All nodes in the network have a copy of the ledger that gets updated with every transaction.
Enhanced security: Decentralisation and consensus mechanisms built into blockchain make it highly secure, as every transaction has to be verified with ‘proof of work’.
Distributed: The blockchain ledger is not a singular entity in the hands of a few; instead it is a shared entity that is accessible and maintained by everyone in the network.
Transparency: Every addition to the blockchain requires consensus from all nodes in the peer-to-peer network. This makes every transaction transparent and public.
Characteristics of open source
Similarly, let us summarise our understanding of open source by listing its characteristics.
Transparency: The founding principle of open source is to make the source code of the project public. This enhances the transparency of the project, as every detail that goes into its development can be freely accessed by anyone.
Enhanced security: Finding security loopholes in the software is way easier when the code is non-proprietary and is publicly available. This naturally enhances the security of the software or, at the very least, can help raise public awareness about the potential security related pitfalls.
Collaboration: The primary purpose of open source software is to encourage other developers to collaborate and contribute to the development of the software. This makes open source development, by nature, a community experience.
Modifiability: Open source software can be modified and re-distributed to solve different problems. This is the case with Linux, as its modified ‘distributions’ are used in various different gadgets and computers.
Decentralisation: One can argue that open source software is not inherently decentralised as making changes to the main project still requires approval of the project moderator(s) and owner(s). But if perceived from a different angle, given that the source code can be modified and re-distributed under proper licensing, this gives the developer the autonomy to use the software as and how desired thus making the process decentralised.
Blockchain and open source software are two distinct technologies with different themes and techniques for solving different challenges. However, when we compare the qualities of blockchain with open source, we begin to see parallels.
The expression ‘convergent evolution’ is used in evolutionary biology to describe the phenomenon in which different organisms from various time periods or epochs gain identical features. This occurs at the molecular level, as well as in animal morphology and even plant morphology. This is equally true of technological advancements. Every day, we create new technologies to meet a variety of issues; nevertheless, there are hidden patterns in the motivations that drive the development of these technologies.
Open source technology has been around for a lot longer than blockchain. The emergence of open source technology, in my opinion, has had a direct impact on the birth of blockchain. Both technologies are centred on transferring power from the hands of a few to the hands of a large number of people. Both aim to improve product security and transparency, as well as encourage fairness and collaboration. While open source and blockchain have a wide range of uses, the motivations for their inception are similar. I believe it is safe to conclude that open source and blockchain share many qualities in common and are hence the result of convergent evolution in the world of technology.
How open source is driving the blockchain revolution
In this article, I hypothesised that blockchain and open source technologies are a product of convergent evolution. They share similar characteristics. But is open source also being used in the development of blockchain related technologies? The answer is a resounding YES.
1) Almost all the prominent cryptocurrencies in the market, including Bitcoin and Ethereum, are open source. Their design and codebases are available in the public domain.
2) ‘Hyperledger’, an initiative of the Linux Foundation, is leading the race in enabling the development of enterprise level private and permissioned blockchains for various different industries.
3) ‘Status’ is an open source project that uses Ethereum’s codebase to create a secure messaging and eWallet app built on blockchain.
4) ‘Storj’ uses blockchain to build a secure and decentralised cloud storage system.
5) ‘High Fidelity’ employs blockchain to implement a virtual reality platform for hosting virtual events.
6) ‘Cosmos’ connects various services in different applications by implementing a blockchain to create a decentralised form of Internet.
7) ‘Aragon’ is built on Ethereum and uses blockchain to help create decentralised organisations.
8) ‘Original Protocol’ utilises Ethereum and IPFS to create decentralised online marketplaces using blockchain.
9) ‘Trust Wallet’ is a multi-platform cryptocurrency wallet built on blockchain.
10) ‘Augur’ is a market prediction platform developed on blockchain for placing wagers on market futures.
The projects listed above are some of the open source blockchain projects that are driving the most developer activity. These are some of the hundreds if not thousands of ways that blockchain is being implemented with the help of open source collaboration amongst developers across the world.
There’s no doubting that open source is a major driving force behind the rapid development and deployment of blockchains across a variety of industries. The creation of blockchains on such a vast scale would have been impossible without open source management systems like GitHub and BitBucket, as well as a version control system like Git. The blockchain revolution is being powered by open source.