chore: change prepare and process proposal to be NoOps by default (#16407)
Co-authored-by: Sergio Mena <sergio@informal.systems> Co-authored-by: Aleksandr Bezobchuk <alexanderbez@users.noreply.github.com>
This commit is contained in:
parent
b590b09107
commit
efdc955ad9
@ -179,7 +179,7 @@ func NewDefaultProposalHandler(mp mempool.Mempool, txVerifier ProposalTxVerifier
|
||||
// FIFO order.
|
||||
func (h DefaultProposalHandler) PrepareProposalHandler() sdk.PrepareProposalHandler {
|
||||
return func(ctx sdk.Context, req *abci.RequestPrepareProposal) (*abci.ResponsePrepareProposal, error) {
|
||||
// If the mempool is nil or a no-op mempool, we simply return the transactions
|
||||
// If the mempool is nil or NoOp we simply return the transactions
|
||||
// requested from CometBFT, which, by default, should be in FIFO order.
|
||||
_, isNoOp := h.mempool.(mempool.NoOpMempool)
|
||||
if h.mempool == nil || isNoOp {
|
||||
@ -236,6 +236,13 @@ func (h DefaultProposalHandler) PrepareProposalHandler() sdk.PrepareProposalHand
|
||||
// is used in both steps, and applications must ensure that this is the case in
|
||||
// non-default handlers.
|
||||
func (h DefaultProposalHandler) ProcessProposalHandler() sdk.ProcessProposalHandler {
|
||||
// If the mempool is nil or NoOp we simply return ACCEPT,
|
||||
// because PrepareProposal may have included txs that could fail verification.
|
||||
_, isNoOp := h.mempool.(mempool.NoOpMempool)
|
||||
if h.mempool == nil || isNoOp {
|
||||
return NoOpProcessProposal()
|
||||
}
|
||||
|
||||
return func(ctx sdk.Context, req *abci.RequestProcessProposal) (*abci.ResponseProcessProposal, error) {
|
||||
for _, txBytes := range req.Txs {
|
||||
_, err := h.txVerifier.ProcessProposalVerifyTx(txBytes)
|
||||
|
||||
@ -43,7 +43,8 @@ all transactions, it can provide greater control over transaction ordering.
|
||||
Allowing the application to handle ordering enables the application to define how
|
||||
it would like the block constructed.
|
||||
|
||||
Currently, there is a default `PrepareProposal` implementation provided by the application.
|
||||
The Cosmos SDK defines the `DefaultProposalHandler` type, which provides applications with
|
||||
`PrepareProposal` and `ProcessProposal` handlers.
|
||||
|
||||
```go reference
|
||||
https://github.com/cosmos/cosmos-sdk/blob/v0.47.0-rc1/baseapp/baseapp.go#L868-L916
|
||||
@ -116,6 +117,9 @@ A no-op mempool is a mempool where transactions are completely discarded and ign
|
||||
When this mempool is used, it assumed that an application will rely on CometBFT's transaction ordering defined in `RequestPrepareProposal`,
|
||||
which is FIFO-ordered by default.
|
||||
|
||||
> Note: If a NoOp mempool is used, PrepareProposal and ProcessProposal both should be aware of this as
|
||||
> PrepareProposal could include transactions that could fail verification in ProcessProposal.
|
||||
|
||||
### Sender Nonce Mempool
|
||||
|
||||
The nonce mempool is a mempool that keeps transactions from an sorted by nonce in order to avoid the issues with nonces.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user