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.name
andsawtooth.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.0
for the version setting.
- The PBFT consensus engine name is
- The on-chain configuration setting
sawtooth.consensus.pbft.members
must list all PBFT member nodes in the network. For more information, see PBFT On Chain Settings.
For the procedure to configure PBFT, see the Hyperledger 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.