...
- 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
Documentation for configuration can be found here.
Now we can analyze each parameter with several criterias:
Parameter | Possible Values | Default Value | Should it be synchronized between Peers | Should it pass consensus | Can it be applied without restart | Will it affect clients | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| unsigned 32 bit integer | 4 | Yes? | Key Pair | Valid Key Hash | No | No | Yes | Yes | Kura Mode | No | |
| unsigned 128 bit integer | 10_000 | Yes | Yes | strict/fast | No | No | Yes | NoBlock Store Path | |||
| Valid Unix path | "./blocks" | No | No | With additional development | No | ||||||
| strict/fast | strict | No | Peer Id | Valid URL + Key Hash | Yes (Other Peers should update old Id to the new one) | No | With additional development | No | |||
| TRACE/INFO/DEBUG/WARN/ERROR | DEBUG | No | No | Yes | No | ||||||
| List of Trusted PeersValid | URL +Key Hash | No | No | Yes | Yes | ||||||
| unsigned 32 bit integer | 8192 | Yes | Yes | No | Yes | No | |||||
| unsigned 32 bit integer | 65536 | Yes | |||||||||
Block Time | unsigned 128 bit integer | 86400000(ms) | Yes | Yes | Yes | NoMaximum amount of Faulty Peers | ||||||
| unsigned 32 128 bit integer | 1000(ms) | Yes | Yes | Yes | NoCommit Time | ||||||
| unsigned 128 bit integer | 1000(ms) | Yes | Yes | Yes | NoTransaction Receipt Time | ||||||
| unsigned 128 32 bit integer | 0 | Yes | Yes | Yes | No | Client-side URL | Valid URL | No | No|||
| unsigned 32 bit integer | 4096 | Yes | Yes | ||||||||
| unsigned 32 bit integer | 1 | Yes | YesPeer-side URL | ||||||||
| Valid URL + Key Hash | Yes (Other Peers should update old Id to the new one) | No | With additional development | Yes | |||||||
No | Maintenance URL
| Valid URL + Key HashNo | [] | NoYes | Yes | YesGossip Period | No | |||||
| unsigned 128 bit integer | 200(ms) | Yes | Yes | Yes | No | ||||||
| Valid URL | "127.0.0.1:8080" | No | NoBatch Size | Yes | |||||||
| unsigned 32 bit integerYes? | 4096 | Yes | Yes | No | Maximum Transactions Block | ||||||
| unsigned 32 bit integer | Yes16384000 | Yes | Yes | No | |||||||
Transaction Time to Live | unsigned 128 bit integer | Yes | Yes | Yes | No | |||||||
| unsigned 32 bit integer | 32768 | Yes | |||||||||
| Valid URL | "127.0.0.1:1337" | Yes | No | No | |||||||
| Valid URL | Maximum Logging Level | TRACE/INFO/DEBUG/WARN/ERROR | No | No | Yes | No | |||||
Terminal Color Enabled | true/false | No | No | Yes | No | |||||||
| Byte size and UTF length | 4096, 1048576 | Yes | |||||||||
| Byte size and UTF length | 4096, 1048576 | Yes | |||||||||
| Range | [1; 128] | Yes | Date Time Format | String | No | No | Yes | No |
Solution
So solution may be to use Iroha Special Instructions for management consensus dependent parameters like "Gossip Period", storing set of parameters under a Peer entity in World State View and propagating these parameters and their updates into subsystems via Iroha channels.
...