Skip to content

Commit

Permalink
refactor: generic fallback ante decorator (#102)
Browse files Browse the repository at this point in the history
(cherry picked from commit 04c7e6f)

# Conflicts:
#	tests/app/app.go
  • Loading branch information
Alex Johnson authored and mergify[bot] committed Jun 10, 2024
1 parent e2fce16 commit d51c9c6
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 15 deletions.
10 changes: 6 additions & 4 deletions tests/app/ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,12 @@ func NewAnteHandler(options AnteHandlerOptions) (sdk.AnteHandler, error) {
authante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
feemarketante.NewFeeMarketCheckDecorator( // fee market check replaces fee deduct decorator
options.FeeMarketKeeper,
options.AccountKeeper,
options.BaseOptions.BankKeeper,
options.BaseOptions.FeegrantKeeper,
options.BaseOptions.TxFeeChecker,
authante.NewDeductFeeDecorator(
options.AccountKeeper,
options.BaseOptions.BankKeeper,
options.BaseOptions.FeegrantKeeper,
options.BaseOptions.TxFeeChecker,
),
), // fees are deducted in the fee market deduct post handler
authante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators
authante.NewValidateSigCountDecorator(options.AccountKeeper),
Expand Down
31 changes: 31 additions & 0 deletions tests/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,32 @@ import (
"path/filepath"
"reflect"

<<<<<<< HEAD

Check failure on line 11 in tests/app/app.go

View workflow job for this annotation

GitHub Actions / golangci-lint

missing import path (typecheck)

Check failure on line 11 in tests/app/app.go

View workflow job for this annotation

GitHub Actions / test-integration

missing import path

Check failure on line 11 in tests/app/app.go

View workflow job for this annotation

GitHub Actions / test-unit

missing import path
"cosmossdk.io/depinject"
dbm "github.com/cometbft/cometbft-db"
"github.com/cometbft/cometbft/libs/log"
=======

Check failure on line 15 in tests/app/app.go

View workflow job for this annotation

GitHub Actions / golangci-lint

missing import path (typecheck)
autocliv1 "cosmossdk.io/api/cosmos/autocli/v1"
reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1"
"cosmossdk.io/client/v2/autocli"
"cosmossdk.io/core/appmodule"
"cosmossdk.io/log"
storetypes "cosmossdk.io/store/types"
"cosmossdk.io/x/circuit"
circuitkeeper "cosmossdk.io/x/circuit/keeper"
circuittypes "cosmossdk.io/x/circuit/types"
evidencetypes "cosmossdk.io/x/evidence/types"
"cosmossdk.io/x/feegrant"
feegrantkeeper "cosmossdk.io/x/feegrant/keeper"
feegrantmodule "cosmossdk.io/x/feegrant/module"
"cosmossdk.io/x/nft"
"cosmossdk.io/x/tx/signing"
"cosmossdk.io/x/upgrade"
upgradekeeper "cosmossdk.io/x/upgrade/keeper"
upgradetypes "cosmossdk.io/x/upgrade/types"
abci "github.com/cometbft/cometbft/abci/types"
dbm "github.com/cosmos/cosmos-db"
>>>>>>> 04c7e6f (refactor: generic fallback ante decorator (#102))

Check failure on line 36 in tests/app/app.go

View workflow job for this annotation

GitHub Actions / golangci-lint

missing import path (typecheck)
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
Expand Down Expand Up @@ -60,11 +83,19 @@ import (
slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
"github.com/cosmos/cosmos-sdk/x/staking"
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
<<<<<<< HEAD
"github.com/cosmos/cosmos-sdk/x/upgrade"
upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client"
upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper"

feemarketmodule "github.com/skip-mev/feemarket/x/feemarket"
=======
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
"github.com/cosmos/gogoproto/proto"
"github.com/spf13/cast"

"github.com/skip-mev/feemarket/x/feemarket"
>>>>>>> 04c7e6f (refactor: generic fallback ante decorator (#102))

Check failure on line 98 in tests/app/app.go

View workflow job for this annotation

GitHub Actions / golangci-lint

illegal character U+0023 '#' (typecheck)
feemarketkeeper "github.com/skip-mev/feemarket/x/feemarket/keeper"
feemarkettypes "github.com/skip-mev/feemarket/x/feemarket/types"
)
Expand Down
20 changes: 13 additions & 7 deletions x/feemarket/ante/fee.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
sdkmath "cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/x/auth/ante"

feemarkettypes "github.com/skip-mev/feemarket/x/feemarket/types"
)
Expand All @@ -32,22 +31,23 @@ func newFeeMarketCheckDecorator(fmk FeeMarketKeeper) feeMarketCheckDecorator {
//
// CONTRACT: Tx must implement FeeTx interface
type FeeMarketCheckDecorator struct {
feemarketKeeper FeeMarketKeeper
feemarketKeeper FeeMarketKeeper

feemarketDecorator feeMarketCheckDecorator
cosmosDecorator ante.DeductFeeDecorator
fallbackDecorator sdk.AnteDecorator
}

func NewFeeMarketCheckDecorator(fmk FeeMarketKeeper, ak AccountKeeper, bk BankKeeper, fgk FeeGrantKeeper, txfc ante.TxFeeChecker) FeeMarketCheckDecorator {
func NewFeeMarketCheckDecorator(fmk FeeMarketKeeper, fallbackDecorator sdk.AnteDecorator) FeeMarketCheckDecorator {
return FeeMarketCheckDecorator{
feemarketKeeper: fmk,
feemarketDecorator: newFeeMarketCheckDecorator(
fmk,
),
cosmosDecorator: ante.NewDeductFeeDecorator(ak, bk, fgk, txfc),
fallbackDecorator: fallbackDecorator,
}
}

// AnteHandle calls the feemarket internal antehandler if the keeper is enabled. If disabled, the Cosmos SDK
// AnteHandle calls the feemarket internal antehandler if the keeper is enabled. If disabled, the fallback
// fee antehandler is fallen back to.
func (d FeeMarketCheckDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) {
params, err := d.feemarketKeeper.GetParams(ctx)
Expand All @@ -57,7 +57,13 @@ func (d FeeMarketCheckDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate
if params.Enabled {
return d.feemarketDecorator.anteHandle(ctx, tx, simulate, next)
}
return d.cosmosDecorator.AnteHandle(ctx, tx, simulate, next)

// only use fallback if not nil
if d.fallbackDecorator != nil {
return d.fallbackDecorator.AnteHandle(ctx, tx, simulate, next)
}

return next(ctx, tx, simulate)
}

// anteHandle checks if the tx provides sufficient fee to cover the required fee from the fee market.
Expand Down
10 changes: 6 additions & 4 deletions x/feemarket/ante/suite/suite.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,12 @@ func (s *TestSuite) SetupHandlers(mock bool) {
authante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first
feemarketante.NewFeeMarketCheckDecorator( // fee market replaces fee deduct decorator
s.FeeMarketKeeper,
s.AccountKeeper,
s.BankKeeper,
s.FeeGrantKeeper,
nil,
authante.NewDeductFeeDecorator(
s.AccountKeeper,
s.BankKeeper,
s.FeeGrantKeeper,
nil,
),
),
authante.NewSigGasConsumeDecorator(s.AccountKeeper, authante.DefaultSigVerificationGasConsumer),
}
Expand Down

0 comments on commit d51c9c6

Please sign in to comment.