mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 23:02:16 +00:00
Apply ConsensusParamChanges to state/State
This commit is contained in:
parent
4265a94bfe
commit
d21f39160f
@ -251,17 +251,22 @@ func (s *State) SetBlockAndValidators(header *types.Header, blockPartsHeader typ
|
|||||||
// Update validator accums and set state variables
|
// Update validator accums and set state variables
|
||||||
nextValSet.IncrementAccum(1)
|
nextValSet.IncrementAccum(1)
|
||||||
|
|
||||||
|
nextParams := s.Params.ApplyChanges(
|
||||||
|
abciResponses.EndBlock.ConsensusParamChanges)
|
||||||
|
|
||||||
s.setBlockAndValidators(header.Height,
|
s.setBlockAndValidators(header.Height,
|
||||||
header.NumTxs,
|
header.NumTxs,
|
||||||
types.BlockID{header.Hash(), blockPartsHeader},
|
types.BlockID{header.Hash(), blockPartsHeader},
|
||||||
header.Time,
|
header.Time,
|
||||||
prevValSet, nextValSet)
|
prevValSet, nextValSet,
|
||||||
|
nextParams)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *State) setBlockAndValidators(height int64,
|
func (s *State) setBlockAndValidators(height int64,
|
||||||
newTxs int64, blockID types.BlockID, blockTime time.Time,
|
newTxs int64, blockID types.BlockID, blockTime time.Time,
|
||||||
prevValSet, nextValSet *types.ValidatorSet) {
|
prevValSet, nextValSet *types.ValidatorSet,
|
||||||
|
nextParams types.ConsensusParams) {
|
||||||
|
|
||||||
s.LastBlockHeight = height
|
s.LastBlockHeight = height
|
||||||
s.LastBlockTotalTx += newTxs
|
s.LastBlockTotalTx += newTxs
|
||||||
@ -269,6 +274,7 @@ func (s *State) setBlockAndValidators(height int64,
|
|||||||
s.LastBlockTime = blockTime
|
s.LastBlockTime = blockTime
|
||||||
s.Validators = nextValSet
|
s.Validators = nextValSet
|
||||||
s.LastValidators = prevValSet
|
s.LastValidators = prevValSet
|
||||||
|
s.Params = nextParams
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetValidators returns the last and current validator sets.
|
// GetValidators returns the last and current validator sets.
|
||||||
|
@ -2,6 +2,8 @@ package types
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
|
abci "github.com/tendermint/abci/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -16,6 +18,42 @@ type ConsensusParams struct {
|
|||||||
BlockGossipParams `json:"block_gossip_params"`
|
BlockGossipParams `json:"block_gossip_params"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ApplyChanges returns a new param set, overriding any
|
||||||
|
// parameter that is non-zero in argument
|
||||||
|
func (p ConsensusParams) ApplyChanges(c *abci.ConsensusParams) ConsensusParams {
|
||||||
|
if c == nil {
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
res := p
|
||||||
|
// we must defensively consider any structs may be nil
|
||||||
|
if c.BlockSizeParams != nil {
|
||||||
|
|
||||||
|
if c.BlockSizeParams.MaxBytes != 0 {
|
||||||
|
res.BlockSizeParams.MaxBytes = int(c.BlockSizeParams.MaxBytes)
|
||||||
|
}
|
||||||
|
if c.BlockSizeParams.MaxTxs != 0 {
|
||||||
|
res.BlockSizeParams.MaxTxs = int(c.BlockSizeParams.MaxTxs)
|
||||||
|
}
|
||||||
|
if c.BlockSizeParams.MaxGas != 0 {
|
||||||
|
res.BlockSizeParams.MaxGas = int(c.BlockSizeParams.MaxGas)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if c.TxSizeParams != nil {
|
||||||
|
if c.TxSizeParams.MaxBytes != 0 {
|
||||||
|
res.TxSizeParams.MaxBytes = int(c.TxSizeParams.MaxBytes)
|
||||||
|
}
|
||||||
|
if c.TxSizeParams.MaxGas != 0 {
|
||||||
|
res.TxSizeParams.MaxGas = int(c.TxSizeParams.MaxGas)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if c.BlockGossipParams != nil {
|
||||||
|
if c.BlockGossipParams.BlockPartSizeBytes != 0 {
|
||||||
|
res.BlockGossipParams.BlockPartSizeBytes = int(c.BlockGossipParams.BlockPartSizeBytes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
// BlockSizeParams contain limits on the block size.
|
// BlockSizeParams contain limits on the block size.
|
||||||
type BlockSizeParams struct {
|
type BlockSizeParams struct {
|
||||||
MaxBytes int `json:"max_bytes"` // NOTE: must not be 0 nor greater than 100MB
|
MaxBytes int `json:"max_bytes"` // NOTE: must not be 0 nor greater than 100MB
|
||||||
|
Loading…
x
Reference in New Issue
Block a user