You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Status

 IN PROGRESS 

Stakeholders
Outcome
Due date

 

Owner

Background

Iroha has a lot of configuration options, such as `TORII_URL` for client and peer-side web addresses, `BLOCK_STORE_PATH` for path to the blockstore in the OS and `TRANSACTION_RECEIPT_TIME` for peer-to-peer messaging timeouts.

All this parameters should be configured and a lot of them should have an ability to be changed in runtime.

Problem

The problem is to define a concept for Iroha Configuration management. Because parameters differ in their aim, ability to be managed during runtime and other aspects, we may need to have different mechanism for their management which in turn will bring additional complexity to our solution. To keep it simple we need to have a minimum options and differences in it.

To find such a solution we need to make a list of possible configurations first:

  • Public and Private keys of Iroha Peer
  • Kura configuration:
    • Kura Mode (strict or fast)
    • Block Store Path
  • Sumeragi configuration:
    • Peer Id
    • Block Time
    • List of Trusted Peers
    • Maximum Amount of Faulty Peers
    • Commit Time
    • Transaction Receipt Time
  • Torii configuration
    • Client-side URL
    • Peer-side URL
    • Maintenance URL
  • Block synchronization configuration:
    • Gossip Period
    • Batch Size
  • Queue configuration:
    • Maximum transactions in block
    • Transactions time to live
  • Logger configuration:
    • Maximum Logging Level
    • Terminal Color Enabled
    • Date Time Format
  • Initial configuration is out-of-scope because will be solved in Genesis Block and Network Setup

Now we can analyze each parameter with several criterias:

ParameterPossible ValuesShould it be synchronized between PeersShould it pass consensusCan it be applied without restartWill it affect clients
Key PairValid Key HashNoNoYesYes
Kura Modestrict/fastNoNoYesNo
Block Store PathValid Unix pathNoNoWith additional developmentNo
Peer IdValid URL + Key HashYes (Other Peers should update old Id to the new one)NoWith additional developmentYes
List of Trusted PeersValid URL + Key HashYesYesYesNo
Block Timeunsigned 128 bit integerYesYesYesNo
Maximum amount of Faulty Peersunsigned 32 bit integerYesYesYesNo
Commit Timeunsigned 128 bit integerYesYesYesNo
Transaction Receipt Timeunsigned 128 bit integerYesYesYesNo
Client-side URLValid URLNoNoYesYes
Peer-side URLValid URLYesNoYesNo
Maintenance URLValid URLNoNoYesYes
Gossip Periodunsigned 128 bit integerYesYesYesNo
Batch Sizeunsigned 32 bit integerYes?YesYesNo
Maximum Transactions Blockunsigned 32 bit integerYes?YesYesNo
Transaction Time to Liveunsigned 128 bit integerYes?YesYesNo
Maximum Logging LevelTRACE/INFO/DEBUG/WARN/ERRORNoNoYesNo
Terminal Color Enabledtrue/falseNoNoYesNo
Date Time FormatStringNoNoYesNo

Solution

Decisions

Alternatives

Concerns

Assumptions

Risks

Additional Information

  • No labels