pbft is a consensus algorithm given by Barbara Liskov and Miguel Castro in 1999 in order to prevent malicious attacks as malicious attacks and software errors can cause faulty nodes to exhibit Byzantine (i.e., arbitrary) behavior. pBFT was designed to work efficiently in asynchronous systems as compared to previous bft algorithms which only worked on synchronous systems.
here is the research paper which states that
Practical algorithm for state machine replication that tolerates
Byzantine faults. The algorithm offers both liveness and safety
provided at most ⌊n-1 / 3⌋ out of a total of replicas are
simultaneously faulty. This means that clients eventually receive
replies to their requests and those replies are correct according to
linearizability. The algorithm works in asynchronous systems like the
Internet and it incorporates important optimizations that enable it to
perform efficiently
The algorithm works roughly as follows:
- A client sends a request to invoke a service operation to the primary
- The primary multicasts the request to the backups
- Replicas execute the request and send a reply to the client
- The client waits for 1 replies from different replicas with the
same result; this is the result of the operation.
Like all state machine replication techniques, two requirements are imposed on replicas:
- They must be deterministic
- They must start in the same state.
Given these two requirements, the algorithm
ensures the safety property by guaranteeing that all nonfaulty replicas agree on a total order for the execution of
requests despite failures.
Limitations of pbft:
The pbft consensus algorithm works efficiently only when the number of nodes in the distributed network are less.
Hyperledger Fabric:
According to Hyperledger Fabric v1.4 the consensus mechanisms which are currently used include SOLO, Kafka, and Raft.
Hyperledger Sawtooth:
According to Hyperledger Sawtooth, how pbft is used is well explained here