Skip to content

Theory of Operations

Frank V. Castellucci edited this page Aug 8, 2018 · 26 revisions

Overview

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.

Validation Consensus and Voting Consortiums

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.

Transaction Processor Registration

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.

Genesis Block

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 and hashblock-unit proposal containers on the block
    • Populate Units sourced from UCUM
    • Populate Currency source from ISO4217
  • Create hashblock-commit containers on the block

Data Addressing

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.

Setting

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

Asset

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.

Asset Data

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.

Asset Operations

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.

Unit of Measure (Unit for short)

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.

Unit Data

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)

Unit Operations

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.

Commit

Under constructions.