Transaction Family SpecificationsΒΆ

Sawtooth includes several transaction families as examples for developing your own transaction family. These transaction families are available in the sawtooth-core repository unless noted below.

  • The BlockInfo Transaction Family provides a way to store information about a configurable number of historic blocks. The family name is block_info. The transaction processor is block-info-tp.

  • The Identity Transaction Family is an extensible role- and policy-based system for defining permissions in a way that can be used by other Sawtooth components. The family name is sawtooth_identity; the associated transaction processor is identity-tp (see identity-tp).

  • The IntegerKey Transaction Family (also called “intkey”) simply sets, increments, and decrements the value of entries stored in a state dictionary. The intkey command command provides an example CLI client.

    intkey is available in several languages, including Go, Java, and JavaScript (Node.js); see the sawtooth-sdk-{language} repositories under examples.

    The family name is intkey. The transaction processor is intkey-tp-{language}.

  • The Validator Registry Transaction Family provides a way to add new validators to the network. It is used by the PoET consensus algorithm implementation to keep track of other validators.

    This transaction family is in the sawtooth-poet repository.

    The family name is sawtooth_validator_registry. The transaction processor is poet-validator-registry-tp.

  • The Settings Transaction Family provides a methodology for storing on-chain configuration settings. The sawset command provides an example CLI client.

    The family name is sawtooth_settings. The transaction processor is settings-tp.


    In a production environment, you should always run a transaction processor that supports the Settings transaction family.

  • The Smallbank Transaction Family provides a cross-platform workload for comparing the performance of blockchain systems. The family name is smallbank. The transaction processor is smallbank-tp.

  • The XO Transaction Family allows two users to play a simple game of tic-tac-toe (see Playing with the XO Transaction Family). The xo command provides an example CLI client.

    XO is available in several languages. The Rust and Python implementations are in sawtooth-core/sdk/examples. The others are in separate sawtooth-sdk-{language} repositories under examples.

    The family name is xo. The transaction processor is xo-tp-{language}.