As a cryptocurrency and blockchain tech educator, the question I most often receive is not at all surprising: “What, exactly, is a blockchain?”. From my wife to even fellow computer scientists, the answer to this question is curiously elusive; one would think that given the accessibility of information on the internet, this question could be alleviated with a quick Google query — maybe an animated video on YouTube, complete with free-license ukulele music and clever illustrations furnished with Adobe Illustrator.
And yet, it’s not. You’ll get plenty of vague definitions and explanations, but never an understanding. Unfortunately, there’s a rift between the blockchain “community” — the developers, programmers, entrepreneurs, enthusiasts, et al — and the layman. There is no Lingua Franca in the blockchain space, no common tongue that is accessible from any and every vantage-point.
This is a problem in the space that is often perpetuated by intimidating technical papers, explanations comprised of terms which require yet even further explanation (suddenly, that “five-minute read” to understand blockchain has transformed into an impressive and ever-growing genealogy of Wikipedia tabs), and the arrogant “l33t” attitude of the bulk of the cryptocurrency community on Reddit (let’s not even get into that right now). This is a problem because the most disruptive and revolutionary technological innovation since the internet is insulated by its own purveyors.
That said, I’m not going to “sell” you blockchain today (for the record, “selling” things within the blockchain space is a scourge in which I proudly do not partake). In this article, I won’t explain why blockchain is the most rapidly-growing field in tech. The reason for this is two-fold:
- I shouldn’t have to. If blockchain is explained properly, you’ll delineate its value on your own and extrapolate ways in which it can impact your life and career.
- This isn’t an opinion piece; to remain impartial when talking about blockchain is to break the mold of nearly every article, video, public talk, or conversation about the topic.
And to ‘break the mold’ in this context is to spare you the dense, over-complicated, often intimidating on-ramps to understanding what a blockchain is.
Today, we’re going to make blockchain simple. Please note: simple does not mean brief, sorry. If you’d rather be able to recite a definition in passing conversation, here: “a system in which a record of transactions made in a cryptocurrency are maintained across several computers that are linked in a peer-to-peer network”.
That’s the answer provided when querying “blockchain definition” on Google, and it’s pitiful; it only refers to one use case of one aspect of blockchain technology.
If you want to truly understand blockchain, continue reading. This article is long, it is technical, but it’s simple. I promise that not one computer-science term will be name-dropped without an accompanying explanation, and I’ll avoid said name-dropping as much as possible. This article is designed to help you understand blockchain on a fundamental level, not just recite vague definitions.
Note: If blockchain technology fascinates you, I’ll have an entire series about implementations thereof waiting for you. Otherwise, let us continue and take an unadulterated, impartial look at what a blockchain is…
Looking at the Big Picture
To understand blockchain, we first need to understand a few principles regarding the architecture of softwares, because blockchain is, after all, a type of software architecture. Then, we discover where, in the big picture of software architecture, blockchain exists. This contextual approach is crucial to understanding blockchain, especially when you are not a computer scientist or “tech-savvy”.
But just moments ago, I denounced “explanations comprised of terms which require yet even further explanation”! Look, I’m no fan of unexplained jargon or technical terms that alienate instead of educate, so let’s look at software architecture with a metaphor:
I’m going to assume that you’ve purchased a car. If not, you’ve probably driven one, or have at the least been in one. We know that cars are equipped with different types of engines: diesel, gasoline, electric. Here is a technology that performs the same functions but uses different means of doing so. In the context of software architecture, this is known as modularity. Cars are modular technologies; they can run on different types of engines, they have different architectures.
There’s a unique allowance of choice with modular technologies: two cars that appear identical have drastic differences in regards to performance, cost, fuel consumption (and the type of fuel). The ‘architectures’ of different cars — or automobiles at-large — serve different functions and have an associated contingency of risks, costs, benefits, et cetera.
So what does a car have to do with software? Softwares have modularity and therefore different architectures, just as cars may be the same class of vehicle and yet run on different types of engines. There are myriad ways to implement a software system and its architecture — or the way in which that system’s components are organized and relate to each other. These architectures can be simplified down to two broad categories.
Centralized and Distributed Systems
There are two major approaches to the architecture of software systems: centralized and distributed. In a centralized software system, its components are located around and connected to a single, central component. Meanwhile, a distributed system is a network of inter-connected components…but there is no central component, no coordinative control element.
In software systems architecture, these components are called “nodes”. A centralized system has nodes that each connect to a single, central node. These nodes do not connect to one another, just the central node; they can perceivably interact through — and only through — the central node. A distributed system is quite different: there is no central node, just a series of nodes that are connected to one another.
Because a blockchain is a type of distributed system, we need to look at the advantages of a distributed system as leveraged against a single computer. This will help to further contextualize what a blockchain is.
Advantages of a Distributed System
In a distributed system, computing power is the result of combining the computing power of all connected computers (nodes). Thus, the distributed system has more computing power than any one individual computer. In most instances, even an isolated super computer has less computing power than a distributed system comprised of computers of low computing power in and of themselves. Think of the old aphorism “The whole is greater than the sum of its parts” (which, by the way, is not an Aristotle quote).
The single-system most comparable to a distributed system in terms of power is a super computer. The cost of creating, maintaining, and operating a super computer is astronomically higher than that of creating, maintaining, and operating a distributed system. Additionally, because a distributed system does not rely solely on any one node within its network, replacing individual computers (the nodes) in said system is of negligible consequence to the overall system.
To segue from the aforementioned point, if any one computer (node) in a distributed system crashes, the network is relatively unaffected. That is, distributed systems have no single point of failure. A single super computer does; a centralized system — while less susceptible to system failures given it is a network of nodes — can suffer the failure of its central node, which can be catastrophic.
We have established that the power of a distributed system is consequence of the aggregated computing power of its constituents. Thus, the entire system can be rendered yet more powerful by the simple addition of new nodes. As more computers are connected to a distributed system, its computing power grows. From the perspective of regulated growth, this is crucial: we have an incremental and controlled method of network growth. Meanwhile, individual computers must be replaced by more powerful computers, resulting in discontinuous growth.
The Disadvantages of a Distributed System
Now, it would be a disservice to the impartial ethos I adopted so very long ago (per the standard length of articles in 2019, you’ve been reading for eons — thank you) to present a model of the advantageous distributed system without recognizing its flaws. Besides, the flaws of a distributed system at-large will ultimately lead us to the blockchain, which in many ways exists to address these flaws.
Coordination and Communication
Because a distributed system does not have a central node to coordinate its members, those members must coordinate the system themselves. There are costs associated with this: the members must expend effort to coordinate, and they must create a protocol to communicate. Communication in computer systems costs computing power and money — for example, when you are waiting for a website to load, this is because you have sent a data packet to their server requesting the information that is the website. That website information needs to be hosted on a server, and that hosting costs money. In short, communicating within a system requires a way to transmit, store, and receive that communication. Because the system is distributed and has no central node, the nodes therein must be able to communicate.
In a distributed system, there is always the potential of “bad actors”, untrustworthy entities that may act against the consensus of the overall system. For example, to communicate with each other, nodes in a distributed system must rely on a network; the accessibility of this network is directly proportionate to the potential for its exploitation. The untrustworthy node may use the communications network as a means to exploit the system for personal gain at the expense of the system and its goals.
Distributed Peer-to-Peer Systems
Now that we understand the distributed system architecture, we need to learn about a specific type of distributed system called a “peer-to-peer network” (Note: peer-to-peer is often denoted as ‘P2P’).
We’ve to some degree already discussed peer-to-peer systems by using “nodes” and “computers” interchangeably, however in a peer-to-peer system, nodes are often operated by individuals participant in the system — individuals like you and me. One of the largest and most scalable peer-to-peer systems is the BitTorrent network, a file-sharing network that uses individuals’ computers around the world to host pieces of a single file other individuals on the network are trying to download. By connecting to multiple peers, the file transfer is much faster for the downloader. The downloader can then become a peer host of the file for other downloaders. It’s a mutually beneficial system.
In a peer-to-peer system, these individual computers make available to the system at-large their computational resources (e.g. processing power, storage capacity, bandwidth, etc). There is, of course, no central point of coordination; each node is of equal rights within the system. This system is coordinated by set “rules” defined by and enforced by the BitTorrent software. As demonstrated by the BitTorrent network, all nodes are both consumers and resources.
As an educator, I am known for being thorough. In my personal experience discovering and learning about blockchain, I realized that without a foundation of certain information, I would never truly understand this technology. I don’t want you to fall into the same trap that can take someone years to learn their way out of. Millions of people can talk Bitcoin and Ethereum (or even something like Hyperledger) all day long without really understanding the purpose of having a blockchain in the first place.
Whatever your reason for wanting to understand blockchain, you have to understand why blockchains are used, instead of some other technology. To know the answer to “Why blockchain?” is to understand blockchain; it necessitates understanding distributed systems.
We now know the potential disadvantages of a distributed system. They have been both illustrated and implied: the dire reality of a system failure becomes apparent when learning about distributed peer-to-peer systems, where actual people are the nodes affected by “bad actors” within such a system. This brings us to integrity. Integrity is the core of the blockchain; a blockchain is a tool for achieving integrity in a distributed system.
Integrity and Trust in a Distributed Peer-to-Peer System
Blockchains are a tool for achieving integrity in a distributed system — most commonly, those of the peer-to-peer variety. We can imagine the massive potential of a peer-to-peer network, and so, too, can we imagine the massive potential of malicious peers in these networks. We now know that a blockchain is supposed to fix this — but how?
In the context of software systems, integrity means that the system is safe; it is complete and consistent, it is correct and without corruption or error. Trust refers to our belief in the reliability of a given system — often without proofs or evidence. When deciding to use a system, and moreover participate in that system, trust is given and then modified contingent on our experiences with the system.
In a peer-to-peer system, people will continue to join and contribute insofar as trust is maintained, and this is done by the system having integrity. When a system does not have integrity — when its nodes/peers are not trustworthy, for instance — people abandon the system. Remember, distributed systems’ power is contingent on the amount of nodes within that system.
Blockchain as an Integrity and Trust Solution
We have reached the finale of this marathon. Here, all the pieces of the puzzle come together and comprise this elusive idea called “blockchain”. A blockchain is really a suite of technologies — a compilation of data structuring, cryptographic algorithms, and security protocols that are presented as a solution to the integrity/trust problem in distributed peer-to-peer systems. I’ll break down each of these parts:
This is the aspect of blockchain that people often (erroneously) refer to as wholly comprising it: the “ledger”. In computer science, a data structure is a method of organizing data, its informational content notwithstanding. What this means is that the data is organized in a structure regardless of what that data refers to (this is a big deal when we begin to think of the possibilities of blockchain).
In a blockchain, the data structure is quite literally a block chain, or chain of blocks (spin it however you like). Data is stored in units called ‘blocks’, which are connected to one another like a chain, hence ‘blockchain’. Let’s think of this like pages in a book: words and sentences are written (or stored) in these blocks; each page of the book is a single block, and they are indeed numbered. If a page were removed, this would be problematic because there would be a missing page number in the book. Furthermore, the information on the pages is ordered.
This is where the ledger gets interesting: it is ‘append-only’ and ‘immutable’. Information (blocks) can only be added to the blockchain, never modified or removed. There are many different types of blockchains, but the first implementation of a blockchain, the Bitcoin network, is a decentralized, public one. That is, its ledger or data structure can be seen by everyone, thereby producing absolute transparency.
Regardless of the type of blockchain, everyone within the network has a copy of the blockchain; it is distributed across all nodes on the network and updated in real-time. This means if someone on the network tries to update the blockchain with information that is inaccurate, it won’t sync up with everyone else’s copy and thus be deemed invalid.
This all begets a good question: How does information get added to the blockchain?
Blockchains rely on software instead of people or central nodes. This includes a sequence of instructions that negotiate the informational content within the ledger. This is a process called consensus: different blockchains use different types of consensus algorithms in order to validate additions to the blockchain. For example, in the Bitcoin network, a ‘proof-of-work’ consensus algorithm is used whereby nodes in the network must solve increasingly difficult cryptographic proofs to validate transactions of the currency that runs on the network, eponymously known as bitcoins.
These types of schematics mean we have a distributed peer-to-peer system that is immutable. It is extremely difficult to defraud.
Note: When I say ‘extremely’, I mean it — defrauding a blockchain would require an immense amount of computing power or a coordinated “51% Attack”, where more than half of the network decides to ‘brute force’ control over the blockchain…these scenarios are almost pure speculative science fiction. Unless you have a quantum computer, don’t get too excited about ‘hacking’ a blockchain (even then, blockchain technologies are evolving to become immune to the threats of quantum computing).
So…What Does it Do?
You may have noticed I’ve only mentioned Bitcoin in passing, as an illustrative tool. I haven’t even delved into cryptocurrency…and I won’t — not today, anyway. That’s because managing ownership of digital currencies and decentralizing finance is but one of infinite applications of blockchain technology.
Blockchains can be used to store any type of information or data. Let’s look at some of the outstanding implementations of blockchain technology.
On a blockchain, one can build and deploy smart contracts. These are applications that run precisely as programmed, without any possibility of failure, censorship, fraud, or third-party interference, enabling people to create markets, store registries of debts or promises, move funds in accordance with instructions given long in the past (like a will or a futures contract) and many other things, all without a middle-man or third party.
One can use smart contracts in decentralized applications, or dApps. Originally created and coined by the Ethereum Foundation, dApps are categorized as three over-arching types:
I. Applications that manage money;
II. Applications in which money is involved as a central factor, but which require information from outside the blockchain; and
III. ‘Other’ application types, including voting systems, governance systems, and DAOs (we’ll get to these in a moment)
Let’s further clarify this with examples:
In a Type I dApp, a network user may need to exchange a digital currency as a means to settle a contract with another network user, using the network’s distributed computer nodes as a way to facilitate the distribution of this data. This could be an escrow contract whereby the funds are exchanged on the network in accordance to the execution or a service or provision.
A Type II dApp — as we discussed earlier — combines money with information from outside the blockchain. What does this look like?
Perhaps we have a crop insurance application that is dependent on an online weather feed. A farmer buys a derivative that automatically pays him if there’s a drought that impacts his work. dApps incorporate smart contracts, which again are simple agreements written in code and stored on the blockchain, to carry out various functions.
To execute a Type II dApp, the smart contracts rely on ‘oracles’ that relay real-time information from and about the outside world.
Type III dApps would make a great article (stick around; I’m going to write it). For now, I’ve promised to explain DAOs, namely because this is an incredibly fascinating implementation of blockchain technology that will diversify our survey of what blockchains are capable of.
By now, you’ve probably recognized that one of the most profound aspects of many blockchains is decentralization, or the removal of a third party (e.g. banks). Cryptocurrencies like Bitcoin remove financial authorities from finance and provide a system architecture wherein global/borderless, decentralized currencies, markets, and economies can be created. The central goal of Bitcoin is to create a scalable peer-to-peer payment system that does not require a third party’s mediation.
Where cryptocurrencies like Bitcoin remove third parties from finance, what if the same could be done to entire companies?
DAOs, or “decentralized autonomous organizations” are entire entities that do just that. The purpose of a DAO is to form a leaderless company or corporate entity. The structure of these companies are pre-programmed and pre-determined much akin to the macrocosmic blockchains that host them. This is a mind-boggling idea, examples of which are well-expressed in this video by Andreas Antonopoulos.
Blockchain technology is being used to put the power of banking back in the hands of people. As of 2018, some 30% of the world did not have access to banking, and we can argue that our (those of us in developed countries) current banking systems have some issues with integrity and trust, but I’ll save that for an opinion piece. What can be agreed upon is situations such as that in Venezuela have become untenable: their national currency — due to hyperinflation — is literally worth dirt. They have thus resorted to using cryptocurrencies as a de facto national currency.
People in developing nations are able to use Bitcoin and other cryptocurrency platforms for remittance payments in the stead of expensive, slow, and often inaccessible third party solutions.
Large and small companies (including banks) are using blockchain as well. These technologies create transparent, infallible ledger-networks that are used for everything from supply chain management (e.g. keeping track of food sourcing) to police reports and law enforcement.
With blockchain technologies, we are looking ahead to a world that is built on an architecture of integrity and trust.
Postface: A Note from the Author
It wasn’t a short read, but it wasn’t a B.S. read. I commend you for staying with me this far and taking the time to learn about a technology that will invariably affect the way you live and experience the world sooner than you may think. My hope is that you now have a working understanding of what a blockchain is, and not just a pitiful definition that can lead to some awkward conversation should you get caught tossing it around without the foreknowledge to back it up!
In the computer science and moreover blockchain community, we speak often of ‘adoption’. That is, we want to see these technologies find large-scale usage because we believe they can benefit ours and others’ lives and help us move toward a more trustworthy, smarter tech-ecosystem.
I sincerely believe that it won’t be a small bunch of computer scientists or Bitcoin maximalists who produce mass adoption of this tech, but normal, everyday people. Therefore, educational resources about blockchain technologies is of critical importance. These resources must be accessible, non-intimidating, free of condescension, and understandable to the non-tech savvy and computer scientist alike.
If you found this article interesting and would like to learn more about blockchain technologies such as cryptocurrencies and other projects, give me a ‘follow’; I’ll be publishing my “Exploring Cryptocurrency” series (which is also a podcast) in the coming days and weeks.