Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC-009: Consensus Parameter Upgrades #7524

Merged
merged 8 commits into from
Jan 14, 2022
18 changes: 18 additions & 0 deletions docs/rfc/rfc-009-consensus-parameter-upgrades.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ parameters but does not verify that they are the same across all validators by
referencing them in the hash. This seems reasonably safe given the fact that
only a very far subset of the consensus parameters are currently verified at all.

#### Version The Consensus Parameter Hash Scheme

The upcoming work on [soft upgrades](https://github.com/tendermint/spec/pull/222)
proposes applying different hashing rules depending on the active block version.
The consensus parameter hash could be versioned in the same way. When different
block versions are used, a different set of consensus parameters will be included
in the hash.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is compatible with the original "defaults" based proposal, in that we still need some rule for how to bootstrap new consensus parameters. 👍🏼


### Developer Defined Values

This section discusses possible solutions to the problem of allowing application
Expand Down Expand Up @@ -103,6 +111,16 @@ consensus parameters is not liveness-breaking. This means that, at worst-case,
chains will experience a single slow height while waiting for the new values to
by applied.

#### Add a new `UpgradeChain` method

An additional method for allowing chains to update the consensus parameters that
do not yet exist is to add a new `UpgradeChain` method to ABCI. The upgrade chain
method would be called when the chain detects that the version of block that it
is about to produce does not match the previous block. This method would be called
after `EndBlock` and would return the set of ConsensusParameters to use at the
next height. It would therefore give an application the chance to set the new
Consensus parameters before running a height with these new parameter.

### References

[hashed-params]: https://github.com/tendermint/tendermint/blob/0ae974e63911804d4a2007bd8a9b3ad81d6d2a90/types/params.go#L49
Expand Down