Sawtooth PBFT is configured in two ways:
- Local settings - Command-line (CLI) options when running the PBFT executable or service
- Network settings - On-chain settings that are defined for the Sawtooth network
PBFT Command-Line Options
Sawtooth PBFT uses command-line options to provide local configuration.
These options only affect the local behavior of a PBFT node, not the
network as a whole. The PBFT consensus engine,
pbft-engine, has the
following command-line options:
-C, --connect CONNECT
Connection endpoint for validator
-b, --exponential-retry-base BASE
(Optional; default 100 ms)
Base timeout for exponential backoff used for validator requests
-m, --exponential-retry-max MAX
(Optional; default 60000 ms)
Max timeout for exponential backoff used for validator requests
-L, --log-config LOG_CONFIG
Path to logging config file; if not present, console logging is used
-l, --max-log-size MAX_LOG_SIZE
(Optional; default 10000 messages)
How large the PBFT log is allowed to get before being pruned
-s, --storage-location STORAGE_LOCATION
Where to store PBFT's state:
-u, --update-recv-timeout TIMEOUT
(Optional; default 10 ms)
Timeout for receiving an update from the validator
Increase output verbosity
PBFT On-Chain Settings
Sawtooth PBFT includes on-chain settings for network-wide configuration on a Hyperledger Sawtooth network. These settings affect how the whole network operates, so it is desirable that they be the same on all nodes. The Settings transaction processor (or an equivalent) is required to process these settings.
** Tip **
To display the existing settings, use sawtooth settings list. To change a setting, use sawset proposal create. This command requires a signing key (the
--keyoption) that specifies the public key of a user or validator that has permission to change settings. See
sawtooth.identity.allowed_keysin Configuring Validator and Transactor Permissions.
(Optional; default 1000 ms)
How often to try to publish a block.
(Optional; default 10000 ms)
How long to wait (after Pre-Preparing) for the node to commit the block before determining that the primary node is faulty.
(Optional; default 100 blocks)
Number of blocks to commit before forcing a view change.
(Optional; default 30000 ms)
How long to wait for the next
PrePreparemessages before determining that the primary node is faulty. The idle timeout must be longer than the block publishing delay.
List of validator public keys for the member nodes in the PBFT network, as a comma-separated list (in a JSON-formatted string):
[public-key-1, public-key-2, ..., public-key-n]
(Optional; default 5000 ms)
How long to wait for a valid
NewViewmessage before starting the next view change. For more information, see View Changing Mode.