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
-C, --connect CONNECT(Optional; default
tcp://localhost:5050)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(Optional)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(Optional; default
memory)Where to store PBFT’s state:
-u, --update-recv-timeout TIMEOUT(Optional; default 10 ms)Timeout for receiving an update from the validator
-v(Optional)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.
To display the existing settings, use sawtooth settings list.
To change a setting, use sawset proposal
This command requires a signing key (the
--key option) that specifies the
public key of a user or validator that has permission to change settings. See
sawtooth.identity.allowed_keys in Configuring Validator and Transactor
sawtooth.consensus.pbft.block_publishing_delay(Optional; default 1000 ms)How often to try to publish a block.
sawtooth.consensus.pbft.commit_timeout(Optional; default 10000 ms)How long to wait (after Pre-Preparing) for the node to commit the blockbefore determining that the primary node is faulty.
sawtooth.consensus.pbft.forced_view_change_interval(Optional; default 100 blocks)Number of blocks to commit before forcing a view change.
sawtooth.consensus.pbft.idle_timeout(Optional; default 30000 ms)How long to wait for the next
PrePreparemessagesbefore determining that the primary node is faulty. The idle timeout must belonger than the block publishing delay.
sawtooth.consensus.pbft.members(Required)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]
sawtooth.consensus.pbft.view_change_duration(Optional; default 5000 ms)How long to wait for a valid
NewViewmessage before starting the nextview change. For more information, see View Changing Mode.