Bitcoin and cryptocurrency mining explained with the the Byzantine Generals Problem. The Byzantine Generals problem was first introduced in a computer science paper published in 1982. The problem discussed in the paper is that reliable computer systems must be able to function effectively in the presence of faulty components that may send conflicting information to different parts of the system. This issue is even more acute when discussing decentralized computer networks.
Imagine the following thought experiment: The Byzantine army has surrounded an enemy city. The army is organized into several units. Each unit is commanded by a general and they all need to come up with a coordinated plan of action. However, they are located away from each other and the only means to communicate among themselves is via messages. To make things more complicated, one or more of the generals are possibly traitors. The presence of disloyal generals means that misleading messages could be sent aiming to disrupt any coordinated plan of action, be it attack or retreat. To find a successful solution to this conundrum, the Byzantine army needs to find its path to coordinated action, one way or another. To achieve this, the Byzantine army needs an algorithm that works effectively towards a coordinated outcome where the loyal generals follow it and the traitors don’t. Now that you are familiar with the problem, let’s see its solution. It is called the Byzantine Fault Tolerance algorithm.
Over the years, there have been several proposed theoretical solutions involving game theory and math. The first practical implementation of Byzantine Fault Tolerance algorithm came with the Bitcoin’s Proof-of-Work. In this case the “generals” are nodes on the Bitcoin network, also known as “miners”. A network node is a connection point that can receive, create, store and send data across a network. In other words, nodes are the connected dots that make up a network. To simplify, think of it in the following way. In the image we traditionally use to depict a blockchain, every single computer is a separate node. They are all connected and can receive, create, store, and send data to each other.
In the context of the Byzantine Fault Tolerance algorithm, the important concept to grasp is that these mining nodes start from the assumption that nobody else on the network can be trusted. Proof-of-Work secures network consensus even in the presence of non-compliant nodes. That is, even if there are some Byzantine generals who are not acting in the army’s best interest, coordinated action can still be achieved. Let’s see how this mechanism works in Bitcoin. As we all know by now, Bitcoin is a peer-to-peer network where all activities are done by its users through appropriate software and hardware. These activities include making transactions, receiving transactions, and verifying and transmitting transactions. Now, this is where the concept of “mining” is introduced, which many of you have probably heard. Mining is an activity, carried out by network participants, which involves Proof-of-Work and results in generating new coins as a reward for the miner who successfully did this Proof-of-Work first for each new block.