Introduction to the Blockchain
Blockchain Technology didn't just pop up overnight. So how did we get here?
Decentralization and Distributed Ledgers
Components of a Block
Coming Soon: Mining and Consensus
Coming Soon: Blockchains vs. Cryptocurrency
Coming Soon: How is Ethereum Different than Bitcoin?
Coming Soon: Scaling and Goverance
Coming Soon: Private Blockchains
The Byzantine Generals’ Problem
The Byzantine Generals’ Problem is a classic problem faced by any distributed computer system network. It addresses the question of how a distributed computer network can reach a reliable consensus even when some of the nodes (computers) on the network are nefarious.
Imagine that the powerful Byzantine Empire has decided to capture a city. Of course, there is fierce resistance from within the city. The Byzantine Army has completely encircled the city. A good strategy, however, this has separated the Byzantine army into separate encampments. In order to ensure that the army can surround the city, the army has to split up into groups led by different generals. It now has many divisions with each division being commanded by its own general. The generals communicate between each other as well as all under their command only through messengers. How can the generals efficiently and accurately communicate without fear of their message or plans being compromised?
- All of the commanding generals have to agree upon one of the two plans of action: All attack at one particular time, or if faced by fierce resistance, conduct a full-on retreat. The army cannot hold on forever in this separated state; a decision must be made. If the attack or retreat is without full strength (consensus), then the Byzantine army will experience massive casualties.
- If all generals and messengers were trustworthy then there is no problem, a consensus is absolute. However, some of the messengers and even a few generals/commanders could be traitors. If they are spies or enemy soldiers, there is a very high chance that they will not follow orders; they will pass on the incorrect message. There has to be some form of verification in order to make sure that the information has not been compromised by enemies.
- The network of generals is able to communicate with each other in order to verify the messages being transmitted. If there is a discrepancy, it is easy to identify who is the traitor. Bitcoin uses the same exact method of checking transactions. Instead of decision-making generals communicating a plan of attack, Bitcoin nodes communicate the validity of transactions. Nodes make up a peer-to-peer network that checks the validity of the messages that other nodes are sending; the nodes that make up the Bitcoin network are constantly double checking other nodes.
In the computer science world, this problem refers to the possibility of having to cope with the failure of some of the components (nodes/the generals) in the system. This term is used frequently in the blockchain world as it refers to the problem of reaching consensus in a public blockchain, where not all parties can be assumed to be trustworthy.