Theory of Operations
The #B distributed sawtooth transaction processor families provides:
- Setting (hashblock-setting) - Registry for #B operational control (e.g. authorizations, voting thresholds)
- Asset (hashblock-asset) - Propose, Vote and Publish Assets on-chain data.
- Unit (hashblock-unit) - Propose, Vote and Publish Units of Measure on-chain data.
- Commit (hashblock-commit) - Manage Pederson commitments (zero-knowledge) for exchange of minted quantities.
- Exchange (hashblock-exchange) - Balance verification and matching of on-chain exchanges of economic resources between two partner transactions and the prevention of double-matching in a transaction block.
The #B system operates in both a validation consensus network, which is responsible for ensuring distributed fault tolerent ledger synchronization, and a voting consortium whereas additions of Unit and Assets are voted on by members of a consortium before being approved/set on the block-chain.
The validator (or validator network) needs to be aware of the transaction family. When any of the transaction processors (TP) start up, it registers itself to the validator. In order to support a fault tolerant and distributed implementation the TP is registered on each applicable peer validator in the network.
In the #B system, the genesis block contains the batch necessary to support execution of transactions. The genesis block is bootstrapped in one, and only one, node of a validation peer network and contains transactions to:
- Establish
hashblock-setting
data on the block - Create
hashblock-asset
andhashblock-unit
proposal containers on the block- Populate Units sourced from UCUM
- Populate Currency source from ISO4217
- Create
hashblock-commit
containers on the block
Hashblock data is read from/written to the block (sawtooth Merkle Trie to be precise) using a standard addressing scheme described Here
Understanding the operational model starts with a description of the hashblock-setting
family capabilities.
The hashblock-setting
family TP is provided to support containment of settings, currently focused on Units and Assets, that include:
- Voting authorization keys
- Accept/Reject voting thresholds
A source of supply, support, or aid, especially one that can be readily drawn upon when needed.
The hashblock-asset
family TP is oriented around voting operational data on the block. Asset data exist to support exchange of value transactions, such as replying to an RFQ.
Assets are defined as: S/K/V where:
- S = System of measure
- K = Key name of resource
- V = Value of resource (unique prime number in the resource domain)
Refer to the asset.proto
file in the /hashblock/protos
folder for details.
The asset processor manages the proposing and voting for assets to be added to the distributed ledger. When the voting consortium reaches the number of acceptance votes threshold, the asset is added to the block.
Supported asset transactions include:
- Proposals - For either the creation or modification of a new asset
- Voting - Accepting, Rejecting or Rescinding a previously made vote.
Measurement is a process that uses prime numbers to describe some physical quantity based on what we can observe. This is done to be able to compare them to each other. We can measure how big things are, how warm they are, how heavy they are, and lots of other features as well. Units of Measurement provide standards for comparisons, so that the numbers from measurements refer to the same thing.
The hashblock-unit
family TP is oriented around voting operational data on the block. Unit data exist to support exchange of value transactions, such as replying to an RFQ.
The unit data block itself is defined as S/K/V where:
- S = System of measure
- K = Key name of unit
- V = Value of unit (unique prime number in the unit domain)
The unit processor manages the proposing and voting for units of measure to be added to the distributed ledger. When the voting consortium reaches the number of acceptance votes threshold, the unit is added to the block.
Supported unit transactions include:
- Proposals - For either the creation or modification of a new unit
- Voting - Accepting, Rejecting or Rescinding a previously made vote.
Refer to the unit.proto
file in the /hashblock/protos
folder for details.
Under constructions.