AnteHandlers
The x/auth
module presently has no transaction handlers of its own, but does expose the special AnteHandler
, used for performing basic validity checks on a transaction, such that it could be thrown out of the mempool. The AnteHandler
can be seen as a set of decorators that check transactions within the current context, per ADR 010.
Note that the AnteHandler
is called on both CheckTx
and DeliverTx
, as Tendermint proposers presently have the ability to include in their proposed block transactions which fail CheckTx
.
Decorators
The auth module provides AnteDecorator
s that are recursively chained together into a single AnteHandler
in the following order:
SetUpContextDecorator
: Sets theGasMeter
in theContext
and wraps the nextAnteHandler
with a defer clause to recover from any downstreamOutOfGas
panics in theAnteHandler
chain to return an error with information on gas provided and gas used.RejectExtensionOptionsDecorator
: Rejects all extension options which can optionally be included in protobuf transactions.MempoolFeeDecorator
: Checks if thetx
fee is above local mempoolminFee
parameter duringCheckTx
.ValidateBasicDecorator
: Callstx.ValidateBasic
and returns any non-nil error.TxTimeoutHeightDecorator
: Check for atx
height timeout.ValidateMemoDecorator
: Validatestx
memo with application parameters and returns any non-nil error.ConsumeGasTxSizeDecorator
: Consumes gas proportional to thetx
size based on application parameters.DeductFeeDecorator
: Deducts theFeeAmount
from first signer of thetx
. If thex/feegrant
module is enabled and a fee granter is set, it deducts fees from the fee granter account.SetPubKeyDecorator
: Sets the pubkey from atx
's signers that does not already have its corresponding pubkey saved in the state machine and in the current context.ValidateSigCountDecorator
: Validates the number of signatures intx
based on app-parameters.SigGasConsumeDecorator
: Consumes parameter-defined amount of gas for each signature. This requires pubkeys to be set in context for all signers as part ofSetPubKeyDecorator
.SigVerificationDecorator
: Verifies all signatures are valid. This requires pubkeys to be set in context for all signers as part ofSetPubKeyDecorator
.IncrementSequenceDecorator
: Increments the account sequence for each signer to prevent replay attacks.