FAQ Appendix: Configuration Settings

This is an unofficial list of some Transaction Family (TF) settings. There is no central registry, most or all of these can be found on github.

The following are some Sawtooth settings. Since Sawtooth settings are extensible and include transaction family-specific settings, this list is incomplete.


Example setting--never used. To set authorization type, use command line option sawtooth-validator --network-auth {trust|challenge}


Pluggable consensus algorithm name. These include PoET, Devmode, raft, and pbft. The default is devmode for Sawtooth 1.1 or earlier, with no default for the (unreleased) nightly build.


Consensus algorithm version. Currently 0.1 for PoET, Devmode, PBFT, and Raft.


Lists validation rules to use in deciding what blocks to add to the blockchain. See https://sawtooth.hyperledger.org/docs/core/nightly/master/architecture/injecting_batches_block_validation_rules.html


Maximum devmode consensus wait time, in seconds


Minimum devmode consensus wait time, in seconds


JSON list of public keys belonging to each node that is a member of the PBFT network. Only required PBFT setting. Key is from /etc/sawtooth/keys/validator.pub . Example: ["0276f8fed116837eb7646f800e2dad6d13ad707055923e49df08f47a963547b631",\ "035d8d519a200cdb8085c62d6fb9f2678cf71cbde738101d61c4c8c2e9f2919aa"]

For details on this and other PBFT settings, see https://github.com/hyperledger/sawtooth-pbft/blob/master/src/config.rs


How often to try to publish a block. Optional, default 1000 ms.


How long to wait for the next (BlockNew + PrePrepare) before determining primary is faulty. Must be longer than block_publishing_delay. Optional, default 30000 ms


How long to wait (after Pre-Preparing) for the node to commit the block before starting a view change Optional, default 10000 ms


How long to wait for a valid NewView message before starting the next view change. If a node on view v starts a change to view (v + n), the timeout before starting a new change to view (v + n + 1) will be (n * view_change_duration) Optional, default 5000 ms


How many blocks to commit before forcing a view change for fairness Optional, default 100 blocks


RAFT consensus election tick, in seconds. E.g., 1500


RAFT consensus heartbeat tick, in seconds. E.g., 150


JSON list of each peer node's public key. Only required RAFT setting. Key is from /etc/sawtooth/keys/validator.pub . Example: ["0276f8fed116837eb7646f800e2dad6d13ad707055923e49df08f47a963547b631",\ "035d8d519a200cdb8085c62d6fb9f2678cf71cbde738101d61c4c8c2e9f2919aa"]


RAFT consensus period, in seconds. E.g., 3. Higher settings cause larger blocks, small settings have faster performance with smaller, quicker block publication, but causes more network traffic.


List of public keys for allowed block publishers. For devmode


Expiration time for the Gossip node communication protocol


List of keys allowed to make identity transactions to the identity TP


Python module name implementing the PoET enclave. Set to sawtooth_poet_sgx.poet_enclave_sgx.poet_enclave


For C Test: initial time to wait in seconds before proposing a block (e.g., 25; default is 3000)


For C Test: block claim delay in blocks. Set to 1 to prevent most reasonable attacks. Set to 2 or 3 if you want more aggressive protection. Default is 1.


For K Test: maximum number of blocks a validator may claim with a PoET keypair before it needs to refresh its signup information. I recommend bumping up so each key is good for 100000 blocks. A big number reduces the likelihood that validator keys will expire simultaneously and deadlock the network. Default is 250


Sample size, in blocks, to compute the local mean wait time (default 50). The local mean wait time multiplied by random_float(0,1) yields the PoET duration time. For production, we recommend 500 to get stable population estimates. Most enterprise networks have stable populations and so a long sample length is preferable.


Public key used by Validator Registry TP to verify attestation reports. From /etc/sawtooth/ias_rk_pub.pem or (for PoET CFT) /etc/sawtooth/simulator_rk_pub.pem


Target time to wait in seconds before proposing a block (e.g., 5; default 20)


Adds the enclave basename for your enclave to the blockchain for the validator registry transaction processor to use to check signup information. From poet enclave --enclave-module sgx basename


Adds the enclave measurement for your enclave to the blockchain for the validator registry transaction processor to use to check signup information. From poet enclave --enclave-module sgx measurement or (for PoET CFT) poet enclave measurement


For Z Test: minimum win count, to test a node is not winning too frequently. For test networks, disable by setting to 999999999, which gives you several decades before the Z test kicks in (16 years * 5 validators @ 30 seconds/block). This test is meant to catch rogue validators who have broken their enclave and are publishing too frequently. The Z Test doesn't work on small networks because all validators publish often


Maximum batches allowed per block (e.g., 100)


Minimum number of votes required to accept or reject a proposal (default 1)


List of public keys for authorized voters for on-chain settings. The initial setting is in the Genesis Block, Block 0


List of proposals to make changes to settings (base64-encoded SettingCandidates protobuf)


List of public keys for authorized administrators to create, change, or delete Sabre contract and namespace registries.


Comma-separated list of batch injectors to load. Parsed by validator at beginning of block publishing for each block


On-chain validation rules; enforced by the block validator


Maximum transactions allowed per block


List of permitted transaction families. If not set, all transaction families are permitted. Example setting: [{"family":"sawtooth_settings", "version":"1.0"}, {"family":"xo", "version":"1.0"}] Dan's ProTip: sawtooth_settings is a required TF. sawtooth_validator_registry is required if you use PoET.


Public keys of authorized signers (of any kind, batch or transaction)


Public keys of authorized batch signers


Public keys of authorized transaction signers

transactor.transaction_signer.<transaction family name>

Public keys of authorized transaction signers for a transaction processor. For a partial list of transaction family names, see https://github.com/danintel/sawtooth-faq/blob/master/prefixes.rst


Public keys of authorized intkey TF signers


Public keys of authorized sawtooth_identity TF signers


Public keys of authorized settings TF signers


Public keys of authorized validator_registry TF signers


Public keys of authorized xo TF signers