fix: Allow VerifyVoteExtensions without ExtendVote (#17251)
This commit is contained in:
@@ -106,10 +106,11 @@ type ExtendVoteHandler func(sdk.Context, abci.RequestExtendVote) abci.ResponseEx
|
||||
type VerifyVoteExtensionHandler func(sdk.Context, abci.RequestVerifyVoteExtension) abci.ResponseVerifyVoteExtension
|
||||
```
|
||||
|
||||
A new execution state, `voteExtensionState`, will be introduced and provided as
|
||||
the `Context` that is supplied to both handlers. It will contain relevant metadata
|
||||
such as the block height and block hash. Note, `voteExtensionState` is never
|
||||
committed and will exist as ephemeral state only in the context of a single block.
|
||||
An ephemeral context and state will be supplied to both handlers. The
|
||||
context will contain relevant metadata such as the block height and block hash.
|
||||
The state will be a cached version of the committed state of the application and
|
||||
will be discarded after the execution of the handler, this means that both handlers
|
||||
get a fresh state view and no changes made to it will be written.
|
||||
|
||||
If an application decides to implement `ExtendVoteHandler`, it must return a
|
||||
non-nil `ResponseExtendVote.VoteExtension`.
|
||||
|
||||
@@ -90,7 +90,6 @@ Then, parameters used to define [volatile states](#state-updates) (i.e. cached s
|
||||
[`Commit`](#commit) and gets re-initialized on `FinalizeBlock`.
|
||||
* `processProposalState`: This state is updated during [`ProcessProposal`](#process-proposal).
|
||||
* `prepareProposalState`: This state is updated during [`PrepareProposal`](#prepare-proposal).
|
||||
* `voteExtensionState`: This state is updated during [`ExtendVote`](#extendvote) & [`VerifyVoteExtension`](#verifyvoteextension).
|
||||
|
||||
Finally, a few more important parameters:
|
||||
|
||||
@@ -130,7 +129,7 @@ Naturally, developers can add additional `options` based on their application's
|
||||
## State Updates
|
||||
|
||||
The `BaseApp` maintains four primary volatile states and a root or main state. The main state
|
||||
is the canonical state of the application and the volatile states, `checkState`, `prepareProposalState`, `processProposalState`, `voteExtensionState` and `finalizeBlockState`
|
||||
is the canonical state of the application and the volatile states, `checkState`, `prepareProposalState`, `processProposalState` and `finalizeBlockState`
|
||||
are used to handle state transitions in-between the main state made during [`Commit`](#commit).
|
||||
|
||||
Internally, there is only a single `CommitMultiStore` which we refer to as the main or root state.
|
||||
|
||||
Reference in New Issue
Block a user