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
.
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.