All in all, it is not easy to describe this technology in one sentence. Most often when we think Blockchain we think about crypto-currencies, in particular about Bitcoin. Of course, this makes sense because crypto-currency is the main reason for the creation of Blockchains.
Where did the idea for blockchain came from?
A bit of history
The Blockchain concept was first presented in 2008 by a person introducing himself as Satoshi Nakamoto (there were many attempts to reach this person and it turned out that in fact he does not exist, it is suspected that a group of people may be behind this nickname) in response to the crisis caused by financial institutions and the loss of confidence in these institutions. The concept has been described and made available on the Internet: http://www.bitcoin.org/bitcoin.pdf
The main purpose of blockchain platforms was to record changes in ownership rights without intermediaries such as financial institutions. At the beginning, this concerned only the crypto-currencies, currently Blockchain can be used to a much wider extent.
The current model of updating changes in ownership rights was based on intermediaries and central management of the property.
What is it actually about?
Let’s assume that we want to buy shares of a company. To do this, we need a few intermediaries: the bank allows payment for shares, the brokerage house will execute the order and the stock exchange will ensure its implementation. In such a simple scenario, we have 3 agents. Everyone charges a commission for such a transaction. We could make such a transaction into a Blockchains with no intermediaries, and at the same time with undeniable proof of ownership rights.
What is important in the blockchain concept is avoiding the creation of centralized solutions.
What is centralization?
If we look at a bank, for example, we will notice that each bank has its own IT system. Each account owner connects to this system if he wants to perform operations on his account. Of course, banks have many central systems, but the transaction system is the main one. This solution means that we have an institution that manages our funds. It is up to this institution whether and when we can use our own resources. If there is a failure of such a central system, we automatically do not have access to our funds. If the regulator (e.g. the State) introduces limits on withdrawals, also our own money is blocked and not available to us.
The solution to this problem is distributed software operating in the Peer to Peer (P2P) model. This means that we have many software nodes exchanging information, without the central point where all the transactions go to. Failure of one of the nodes does not affect the operation of the entire platform.
The concept of “double spending” was addressed in the blockchain concept.
What is double spending?
I will try to explain this on a very simplified example. Let’s assume that while having an account balance in the amount of X, I can make transfers from this account, for an amount exceeding X, if such an operation is successful, I have just caused double spending. Of course, this is a maximally simplified description of the problem. Double spending may occur as a result of a human error, an error in the information system or may be aimed at deliberate extortion of funds. Distributed systems are particularly vulnerable to the occurrence of such situations, because transactions are initiated on many nodes at the same time.
However, it turns out that in the traditional banking system there may also be a risk of double spending and in certain conditions it is possible to assign the same funds to different accounts at the same time. Without going into details, it is worth paying attention to many banking processes, including clearing and settlement. These processes are carried out during the so-called closing of the day, closing of the month and closing of the year. All these operations are used, among others, to reconcile accounts and to identify and correct any irregularities related to double spending. Therefore, there are also central clearing and settlement houses, which are necessary in the process of making settlements between banks.
The Blockchain, although it is a distributed system, thanks to its built-in mechanisms, is resistant to this type of problems and guarantees that we always have 100% confidence in who at any given time owns the funds, with access to the full history of changes in ownership of these funds.
How this has been achieved? I will try to explain later in the post.
What is Blockchain?
As for the definition of Blockchain itself, it all depends on the point of view and the specific platform used to build a blockchain. For some, it will be a distributed register, a decentralized data structure for another distributed state machine, a decentralized application or a global computer. In total, it is extremely difficult to define a Blockchain without mentioning its most important features immediately: distracted, safe, immutable, internally consistent.
To understand what Blockchain is, let’s look at its internal organization.
How is blockchain built?
As the name suggests “blockchain”, meaning linked blocks. Each block contains a transaction pool. Transactions are all events that change the state of data in the chain, e.g. transferring funds between accounts, i.e. changing ownership. Blocks are arranged in a chain chronologically and related in one-way, i.e. the new block indicates its predecessor in the chain. If we impose cryptographic mechanisms on the content of the transaction and the entire block, we will obtain a chain that is immutable and cryptographically safe, which means that it is impossible to make changes to the already existing and accepted blocks.
Fig.1. The concept of blockchain
From the above description we already know about non-modifiable blocks with transactions changing the state of data, blocks are related to each other chronologically, without the possibility of removing the block and adding a new one in a different place than at the end of the chain. And this is the key concept of blockchain, although described in a telegraphic shortcut.
Another common feature of blockchain is distribution.
What is the distribution of blockchain?
To understand this, we need to look from above on blockchain described so far. A node is the environment in which blockchain functions. We can imagine a node as a black box that stores related blocks and allows handling of events / transactions. The node is the blockchain management software. There can be many such nodes, each on a different computer and another user.
In traditional centralized architecture, nodes would require a connection to the central node. Below I showed a traditional centralized model of information systems architecture.
Fig.2. Centralized architecture
In blockchain, the nodes are associated only with each other. They can be interrelated in a many-to-many model, i.e. one node can connect to many other nodes and many different nodes can connect to one node. A network of connections is created from nodes, similar to the one shown in the figure below.
Fig.3. Example of distributed architecture
This network of connections can be presented in a more readable way:
Fig.4. Example of another presentation of distributed architecture
A feature of a distributed network of connected nodes is the ability to disable one or more nodes without negatively affecting the operation of the entire Blockchain. This allows us to avoid the risk of a single point of failure. What connects all the functioning nodes is the identical state of blockchain stored in them, regardless of where the node was extended (where the new block was added). This means that if a transaction has been added to one of the nodes, this transaction and the consequences of its execution will be found in all the nodes. On this occasion, it can be seen that blockchain also has negative features, in this case – redundancy (nodes on popular Blockchain platforms reach many GB of data, e.g. a single Bitcoin node currently contains approximately 200 GB). Each node stores a full copy of the chain. However, thanks to redundancy, blockchain has two very important positive features: availability and partition tolerance (these are two of the three features that cannot be achieved in distributed systems https://en.wikipedia.org/wiki/CAP_theorem, as it turns out, Blockchain is not subject to the CAP assertion). The third feature associated with the CAP statement that blockchain has – is consistency.
Now we come to a very important moment, that is, to understand the methods of maintaining consistency between all the nodes.
How does blockchain work?
If new blocks can be added to each node, they are arranged chronologically and linked to their predecessors, how does it make a coherent whole?
It can be said that blockchain pulsates according to the transactions appearing in it. This works in such a way: if a new transaction hits a node, it is immediately “broadcast” to all nodes, then the transactions go to blocks and from that moment the nodes are racing in closing and adding the block to the chain (like mining known from earning crypto-currencies). The first node that announces the new “correct” version of the chain wins and its version is considered as final. This is, of course, a very simplified description of what is really happening. Nevertheless, again, there is a large waste of resources, this time computing power, because all nodes do the same processing to win the race for the new block. Such redundancy is essential for the distributed block-based application to be immune to external attacks that could lead to malicious transactions entering the chain, which will be described in more detail below.
How do you ensure that blocks added by the fastest node are correct? What if several nodes announced different versions of blocks at a similar time? And if we have nodes in the network that deliberately introduce “wrong” blocks in order to extort?
For such situations, blockchain obviously has security features that are brilliant in their simplicity. Each node, when adding a block, must solve a certain “computational proof”. The degree of complexity of this computational proof is determined by the software of the node, which is identical on all operating nodes of a given platform. The computational proof has two goals, one of them is the ability to compare the results of the computational. Thanks to this, all nodes can verify whether the solution is correct.
The second goal is the so-called Proof of Work – PoW (there are also other less popular proofs, e.g. Proof of Stake – PoS). The correct result of the computational is an evidence of the work related to the preparation of the block. The more complicated the computational are, the more work (computing power) the nodes must perform to find a solution and then add the block to blockchain (the block added must have the correct solution).
How to check if the solution to the Proof of Work is correct?
Remember that blockchain is a distributed system without a central decision making and managing node. However, each node knows the algorithm that makes it possible to solve the computational proof (these are deterministic cryptographic methods). In order to verify the correctness of the solution, a consensus mechanism was introduced to blockchain platforms. It consists in the fact that the nodes solve the computational proof and “vote” for the found solutions. This solution, which has the majority of votes, is considered as final and allows you to add a block to the chain.
It follows that blockchain is updated on the basis of a consensus.
Being a user of such a system, we may have reasonable fears that someone dishonest, for their own purposes, will want to take control of the votes and the consensus mechanism, to obtain the majority of votes (the attack known as Sybil 51%). Theoretically, just run a lot of your own nodes, turn them on the network and manipulate the blockchain.
How to defend yourself against an attack?
Here we are again supported by the proof of work. The solution to the computational proof is so complicated that the energy expenditure needed to manipulate the blockchain would be financially unprofitable or impossible to obtain. For example, it is estimated that in order to break the Bitcoin Blockchain, the computing power of the 500 fastest computers currently available in the world would be needed. All of them would have to deal only with “mining” the crypto-currency. Which of course is not possible to obtain and, as you can see, the protection against attacks is very strong and the longer the blockchain is the stronger it gets (the more transactions were made).
While looking at the features of blockchain and the functions that it can perform, I think that this is one of the most important IT solutions in the history of IT. What is important is the fact that the concept is inventive, while the technologies used in it have been known for years, and this facilitates the understanding, implementation and integration of such platforms into existing IT ecosystems.
I was fascinated by the possibilities of blockchain platforms, especially in the case of the Ethereum platform, which is sometimes called (because of its features) the world computer. I am convinced that in the near future we will hear about the breakthrough applications of these platforms.
I hope that I have been able to explain in a reasonable way what Blockchain is. The most important thing is that after this explanation the reader should not be confused 🙂
Unfortunately, there are many generalities that were necessary in order to limit the length of this entry. I tried to create a less technical description, where I could avoid the technological jargon, and yet I am aware that it will not be understandable to everyone.
I encourage all readers interested in the subject and its development to contact me.