package ante import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/types" ibcante "github.com/cosmos/cosmos-sdk/x/ibc/ante" ibckeeper "github.com/cosmos/cosmos-sdk/x/ibc/keeper" ) // NewAnteHandler returns an AnteHandler that checks and increments sequence // numbers, checks signatures & account numbers, and deducts fees from the first // signer. func NewAnteHandler( ak AccountKeeper, bankKeeper types.BankKeeper, ibcKeeper ibckeeper.Keeper, sigGasConsumer SignatureVerificationGasConsumer, ) sdk.AnteHandler { return sdk.ChainAnteDecorators( NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first NewMempoolFeeDecorator(), NewValidateBasicDecorator(), NewValidateMemoDecorator(ak), NewConsumeGasForTxSizeDecorator(ak), NewSetPubKeyDecorator(ak), // SetPubKeyDecorator must be called before all signature verification decorators NewValidateSigCountDecorator(ak), NewDeductFeeDecorator(ak, bankKeeper), NewSigGasConsumeDecorator(ak, sigGasConsumer), NewSigVerificationDecorator(ak), NewIncrementSequenceDecorator(ak), ibcante.NewProofVerificationDecorator(ibcKeeper.ClientKeeper, ibcKeeper.ChannelKeeper), // innermost AnteDecorator ) }