What is practical Byzantine Fault Tolerance?
Practical Byzantine Fault Tolerance is a system that has a primary node and secondary nodes. These nodes work together to reach a consensus, making this system one of the solutions to the Byzantine Generals Problem.
Here's a basic breakdown of how practical Byzantine Fault Tolerance works:
- The client makes a request to the primary node.
- The primary node sends that request on to the secondary nodes.
- The nodes process the request, provide the service, and respond to the client.
- The client waits until it has received the same response from m+1 nodes, with m being the maximum number of faulty/malicious nodes the system allows.
In a practical Byzantine Fault Tolerance system, the maximum number of faulty/malicious nodes can't be equal to or greater than one-third of the system's total nodes.
Pros and cons to practical Byzantine Fault Tolerance
There are a few valuable benefits of practical Byzantine Fault Tolerance:
- It doesn't require significant computing power or energy usage because there aren't any miners solving complex equations for every block of transactions. This makes it much more environmentally friendly than proof of work.
- Transactions don't require multiple confirmations. If the nodes are in agreement about a block of transactions, then it's confirmed immediately.
- Since all nodes can get in on the action, they can all share in the rewards. There isn't such variance between which nodes earn rewards like there can be in proof of work and proof of stake.
No solution is perfect, and practical Byzantine Fault Tolerance also has some notable pitfalls:
- It's vulnerable to Sybil attacks (named after a book about a woman with a multiple personality disorder), where one party is able to get control of a large portion of nodes. The more nodes there are, the harder it is to launch a Sybil attack.
- It requires communication between nodes at every step of the process. This takes time, which can be a problem from a scalability standpoint.
A blockchain may not have every node working correctly at times, and there will always be bad actors who try to manipulate transactions. Each cryptocurrency has a consensus algorithm designed to help it achieve at least some degree of Byzantine Fault Tolerance. As a general rule, these algorithms allow the cryptocurrency to run normally as long as at least two-thirds of its nodes are functioning properly.