Introduction to Sawtooth PBFTΒΆ

This guide describes a practical Byzantine fault tolerant (PBFT) consensus algorithm for Hyperledger Sawtooth.

Practical Byzantine Fault Tolerance, a paper written in 1999 by Miguel Castro and Barbara Liskov, describes a consensus algorithm that solves the Byzantine Generals Problem, while still remaining computationally feasible. This implementation of PBFT consensus for Hyperledger Sawtooth is based off the methodology described in the 1999 paper, and adapted for use in a blockchain context.

The Sawtooth PBFT algorithm is a voting-based consensus mechanism with Byzantine fault tolerance. This algorithm ensures safety and liveness of a network, provided at most \lfloor \frac{n - 1}{3} \rfloor nodes are faulty, where n is the total number of nodes in the network. The Sawtooth PBFT algorithm is also inherently crash fault tolerant. Another advantage of PBFT is that blocks committed by nodes are final, so there are no forks in the network. This is verified by a “Consensus Seal,” which is appended to the following block and used to verify that the block was added correctly.

For implementation details, see the Sawtooth PBFT rustdocs.

Note

Sawtooth PBFT is currently a prototype. For project status, see README.md in the Sawtooth PBFT repository.