Byzantine Fault Tolerance
Practical Byzantine Fault Tolerance
Practical Byzantine Fault Tolerance (pBFT) represents the capacity for a distributed network to keep reaching consensus even if significant numbers of nodes are either failing to respond or are responding with wrong information. An example of pBFT in action is Tendermint, which underpins custom blockchains built with the Cosmos SDK.
- Practical Byzantine Fault Tolerance (pBFT) was first introduced in 1999 and arose from academia.
You can access the 1999 paper by Miguel Castro and Barbara Liskov on pBFT here (opens new window). There is also an intuitive presentation (opens new window)you can look at.
- In pBFT, a replica is a network node that maintains a full copy of the ledger state. pBFT is a three-phase protocol, in which the client sends a request to a so-called primary. In the first phase, the primary broadcasts the request with a sequence number to the replicas. Then the replicas agree on the sequence number and create a message.
- When a threshold of agreement is reached by the replicas, which is akin to sufficient co-signers, the message is verified. The replicas agree on the overall order of transactions within a view. The broader network is informed about transaction blocks when they are finalized. That is to say, they are signed by sufficient replicas.
- pBFT brings two main advantages to consensus on blockchains:
- Energy efficiency: consensus is achieved without having to conduct expensive computations such as in PoW algorithms.
- Transaction finality: once a block is finalized, it is immutable and with it all included transactions.