diff --git a/tests/app/ante.go b/tests/app/ante.go index e2d92e0..69d0e4d 100644 --- a/tests/app/ante.go +++ b/tests/app/ante.go @@ -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), diff --git a/tests/app/app.go b/tests/app/app.go index ee28ab3..a4e37ce 100644 --- a/tests/app/app.go +++ b/tests/app/app.go @@ -7,10 +7,6 @@ import ( "os" "path/filepath" - "github.com/skip-mev/feemarket/x/feemarket" - feemarketkeeper "github.com/skip-mev/feemarket/x/feemarket/keeper" - feemarkettypes "github.com/skip-mev/feemarket/x/feemarket/types" - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" "cosmossdk.io/client/v2/autocli" @@ -31,9 +27,6 @@ import ( upgradetypes "cosmossdk.io/x/upgrade/types" abci "github.com/cometbft/cometbft/abci/types" dbm "github.com/cosmos/cosmos-db" - "github.com/cosmos/gogoproto/proto" - "github.com/spf13/cast" - "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" @@ -104,6 +97,12 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" 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" + feemarketkeeper "github.com/skip-mev/feemarket/x/feemarket/keeper" + feemarkettypes "github.com/skip-mev/feemarket/x/feemarket/types" ) const appName = "SimApp" diff --git a/x/feemarket/ante/fee.go b/x/feemarket/ante/fee.go index aff6034..0033e8f 100644 --- a/x/feemarket/ante/fee.go +++ b/x/feemarket/ante/fee.go @@ -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" ) @@ -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) @@ -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. diff --git a/x/feemarket/ante/suite/suite.go b/x/feemarket/ante/suite/suite.go index daf9371..3489583 100644 --- a/x/feemarket/ante/suite/suite.go +++ b/x/feemarket/ante/suite/suite.go @@ -106,10 +106,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), }