- Trending Categories
- Data Structure
- Operating System
- C Programming
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What is Byzantine Fault Tolerance?
53 Lectures 9.5 hours
46 Lectures 3.5 hours
Satoshi Nakamoto created Bitcoin in 2008, and he made the network very strong as a distributed, peer to peer model which is maintained without any intermediaries. Since then many digital currencies are created, which follow the same system where all nodes are sharing same information (same copy of Block chain) and any node can communicate with any other node safely across the network, knowing that they are displaying same data.
Byzantine Fault Tolerance (BFT) is one of the most difficult challenges faced by the Block chain technology. All the participants of the cryptocurrency network need to agree, or give consensus regularly about the current state of the block chain. At least (2/3) two thirds or more reliable and honest nodes in the network make it a reliable network. If more than half of the nodes act maliciously, then the system has to face the 51% attack, which is discussed in a separate article.
The concept of Byzantine Fault Tolerance in a cryptocurrency is the feature of reaching an agreement or consensus about particular blocks based on the proof of work, even when some nodes are failing to respond or giving out malicious values to misguide the network. The main objective of BFT is to safeguard the system even when there are some faulty nodes. This will also help to reduce the influence of faulty nodes.
Byzantine Generals’ problem
The concept of Byzantine Fault Tolerance is derived from the Byzantine Generals’ problem which was explained in 1982, by Leslie Lamport, Robert Shostak and Marshall Please in a paper at Microsoft Research.
Imagine that several divisions of the Byzantine army are camped outside an enemy city, each division commanded by its own general. The generals can communicate with one another only by messenger. After observing the enemy, they must decide upon a common plan of action. However, some of the generals may be traitors, trying to prevent the loyal generals from reaching an agreement. The generals must decide on when to attack the city, but they need a strong majority of their army to attack at the same time. The generals must have an algorithm to guarantee that (a) all loyal generals decide upon the same plan of action, and (b) a small number of traitors cannot cause the loyal generals to adopt a bad plan. The loyal generals will all do what the algorithm says they should, but the traitors may do anything they wish. The algorithm must guarantee condition (a) regardless of what the traitors do. The loyal generals should not only reach agreement, but should agree upon a reasonable plan.
In a peer to peer network, consensus is achieved through a unanimous agreement of the loyal and non-faulty nodes. The basis of Byzantine Fault Tolerance is achieved when an incoming message is repeated by all the nodes. If a node is repeating the incoming message, that means it is not faulty or malicious. If all the recipients repeat the incoming message, the network rules out the issue of Byzantine nodes.
A Byzantine node is the tyrant node which can lie or intentionally mislead other nodes of the network, and also the nodes which are involved in a consensus protocol. As such the protocol should rise above the illicit intervention by the malicious nodes and should operate perfectly, despite these Byzantine nodes.
There can be two categories of Byzantine Failures –
There is genuinely a technical error in the node and it stops working or responding.
The other one is Arbitrary Node Failure. In case of arbitrary node failure, the node may fail to return a result or deliberately respond a misleading result. It may also throw a different result to the different parts of the system to mislead the system.
Byzantine Fault Tolerance is the way of overcoming these challenges by the Cryptocurrency Network.
- What is a segmentation fault in C/C++?
- What is a segmentation fault in C/C++ program?
- Tolerance Stack up
- Worst-Case Tolerance Analysis
- Is segmentation fault actual undefined behavior in C++?
- Core Dump (Segmentation fault) in C/C++
- Return True if two Numpy arrays are element-wise equal within a tolerance
- How to get the fault domain count of the Azure Availability set using PowerShell?
- What is Java API and what is its use?
- What is DatabaseMetaData in JDBC? What is its significance?
- What is ResultSetMetaData in JDBC? What is its significance?
- What is Account Balance and what is its significance?
- What is Scenario Analysis and what is its importance?
- What is Baseline Security? What is its Standard Framework?
- What is caching?