docs/spec/blockchain: specify consensus params in state.md

This commit is contained in:
Ethan Buchman 2018-09-06 12:41:57 -04:00
parent bdf3238710
commit e0fa827a53
1 changed files with 57 additions and 2 deletions

View File

@ -60,7 +60,7 @@ type Validator struct {
}
```
The `state.Validators` and `state.LastValidators` must always by sorted by validator address,
The `state.Validators`, `state.LastValidators`, and `state.NextValidators`, must always by sorted by validator address,
so that there is a canonical order for computing the SimpleMerkleRoot.
We also define a `TotalVotingPower` function, to return the total voting power:
@ -77,4 +77,59 @@ func TotalVotingPower(vals []Validators) int64{
### ConsensusParams
This section is forthcoming. See [this issue](https://github.com/tendermint/tendermint/issues/1152).
ConsensusParams define various limits for blockchain data structures.
Like validator sets, they are set during genesis and can be updated by the application through ABCI.
```
type ConsensusParams struct {
BlockSize
TxSize
BlockGossip
EvidenceParams
}
type BlockSize struct {
MaxBytes int
MaxGas int64
}
type TxSize struct {
MaxBytes int
MaxGas int64
}
type BlockGossip struct {
BlockPartSizeBytes int
}
type EvidenceParams struct {
MaxAge int64
}
```
#### BlockSize
The total size of a block is limitted in bytes by the `ConsensusParams.BlockSize.MaxBytes`.
Proposed blocks must be less than this size, and will be considered invalid
otherwise.
Blocks should additionally be limitted by the amount of "gas" consumed by the
transactions in the block, though this is not yet implemented.
#### TxSize
These parameters are not yet enforced and may disappear. See [issue
#2347](https://github.com/tendermint/tendermint/issues/2347).
#### BlockGossip
When gossipping blocks in the consensus, they are first split into parts. The
size of each part is `ConsensusParams.BlockGossip.BlockPartSizeBytes`.
#### EvidenceParams
For evidence in a block to be valid, it must satisfy:
```
block.Header.Height - evidence.Height < ConsensusParams.EvidenceParams.MaxAge
```