Using PBFT Consensus
Sawtooth PBFT consensus provides Byzantine fault tolerance for a network with restricted membership. It has the following requirements:
- A network using PBFT consensus must have at least four nodes. A network with fewer nodes will fail; a new network with less than four nodes will not start.
- A PBFT network must be fully peered; that is, all nodes must be directly connected to all other nodes. Static peering is recommended.
- Each node on the network must install and run the PBFT consensus
engine.
- Package:
sawtooth-pbft-engine - Executable:
pbft-engine - Service:
sawtooth-pbft-engine.service
- Package:
- Each node must run the Settings transaction processor (or an equivalent) to handle the PBFT and Sawtooth on-chain settings.
- The genesis block must specify the PBFT consensus engine name and
version, using the on-chain settings
sawtooth.consensus.algorithm.nameandsawtooth.consensus.algorithm.version.- The PBFT consensus engine name is
pbft. - The version number is in the file
sawtooth-pbft/Cargo.toml(see the sawtooth-pbft repository) asversion = "{major}.{minor}.{patch}". Use only the first two digits (major and minor release numbers); omit the patch number. For example, if the version is 1.0.4, use1.0for the version setting.
- The PBFT consensus engine name is
- The on-chain configuration setting
sawtooth.consensus.pbft.membersmust list all PBFT member nodes in the network. For more information, see PBFT On Chain Settings.
For the procedure to configure PBFT, see the Sawtooth documentation:
- Developers: Creating a Sawtooth Network shows how to create a test network with PBFT consensus for an application development environment.
- Sawtooth administrators: Setting Up a Sawtooth Node explains how to create a Sawtooth network with PBFT consensus, plus how to add or remove nodes for an existing network.