Blockchain is physically a software system ran on multiple computers at the same time. However, there are many ways to implement a software system. We begin our study of blockchain by finding out which major software systems there are, and which are applicable to blockchain (see Bashir 2018).
A software system can be
Figure 1.1. Distributed system architecture.
Description: Nodes connect to each other so that each node has at least one connection to the rest of the network.
In centralized systems, there is a one computer, which keeps the system up and running. In distributed systems, there are no such central component, but each computer that has the software running and connected to the network, takes care of keeping the system running. This might not seem as a big difference, but in order for distributed system to function, there cannot be that high degree of control on the system as there can be with centralized solution. After all, all the functions that the system has have to be available in both centralized and distributed systems.
Figures 1.1 and 1.2 show a graph of both distributed and centralised systems, respectively. Graph theory is part of mathematics, but for now we only need to know that the circles depict computers and lines connections between them. In graph theory, these are called nodes and routes, respectively. In centralized design, all computers have to be connected to the “mainframe” – that is, a central computer controlling the network. In distributed system all computers must be able to reach a computer already connected to the network. It should be noted that in distributed system not all computers need to connect with every other. It is enough to have a connection route between each computer.
The distributed systems are in many ways superior to centralized systems. In distributed systems, there is a possibility for more computations with lower cost and more reliably. In addition, the system can be enlarged easily by just plugging more computers to the network. Usually connected computers can compute efficiently together if they have a common software which allows this. Therefore, the more computers there are in a distributed system, the more computing power there is. Connected computers with added computing power can in some cases replace a much more expensive supercomputer with comparable number of computations in given time. If one computer in the network crashes, the network can survive and re-establish itself without a great delay. It is quite easy to connect new computers to a distributed network. The actual procedure depends on the network, but it can be as easy as establishing a Wi-Fi connection on a home laptop after installing the software.
Figure 1.2. Centralized system architecture.
Description: Each node connects to a central node.
Because of the above-mentioned advantages, it seems that distributed systems should be in use everywhere. However, there are also disadvantages with distributed systems, mostly related to security and resources wasted on coordinating the software on multiple computers. Also, distributed systems are dependent on networks. If the network has issues, then also the distributed system cannot work properly. These are issues that have their impact on blockchains as well, as we shall see in the coming chapters (see e.g. Trautman & Molesky 2019).
Decentralised networks, or distributed peer-to-peer systems, are like distributed systems, but it has nobody to coordinate the system. That is, distributed system may have operators inside the system with more say on how the system behaves, but peer-to-peer system has none of these, just peers, making the system function independently.
The blockchain can be employed also on a centralized system, but where it really can have an impact is in a distributed or distributed peer-to-peer software systems, where its functionalities can give an advantage compared to more traditionally organised software systems. These functionalities are discussed in the coming chapters.