Some checks failed
Build SimApp / build (amd64) (push) Waiting to run
Build SimApp / build (arm64) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Build & Push / build (push) Waiting to run
Run Gosec / Gosec (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Checks dependencies and mocks generation / Check go mod tidy (push) Waiting to run
Checks dependencies and mocks generation / Check up to date mocks (push) Waiting to run
System Tests / setup (push) Waiting to run
System Tests / test-system (push) Blocked by required conditions
System Tests / test-system-legacy (push) Blocked by required conditions
Tests / Code Coverage / split-test-files (push) Waiting to run
Tests / Code Coverage / tests (00) (push) Blocked by required conditions
Tests / Code Coverage / tests (01) (push) Blocked by required conditions
Tests / Code Coverage / tests (02) (push) Blocked by required conditions
Tests / Code Coverage / tests (03) (push) Blocked by required conditions
Tests / Code Coverage / test-integration (push) Waiting to run
Tests / Code Coverage / test-e2e (push) Waiting to run
Tests / Code Coverage / repo-analysis (push) Blocked by required conditions
Tests / Code Coverage / test-sim-nondeterminism (push) Waiting to run
Tests / Code Coverage / test-clientv2 (push) Waiting to run
Tests / Code Coverage / test-core (push) Waiting to run
Tests / Code Coverage / test-depinject (push) Waiting to run
Tests / Code Coverage / test-errors (push) Waiting to run
Tests / Code Coverage / test-math (push) Waiting to run
Tests / Code Coverage / test-schema (push) Waiting to run
Tests / Code Coverage / test-collections (push) Waiting to run
Tests / Code Coverage / test-cosmovisor (push) Waiting to run
Tests / Code Coverage / test-confix (push) Waiting to run
Tests / Code Coverage / test-store (push) Waiting to run
Tests / Code Coverage / test-log (push) Waiting to run
Tests / Code Coverage / test-x-tx (push) Waiting to run
Tests / Code Coverage / test-x-nft (push) Waiting to run
Tests / Code Coverage / test-x-circuit (push) Waiting to run
Tests / Code Coverage / test-x-feegrant (push) Waiting to run
Tests / Code Coverage / test-x-evidence (push) Waiting to run
Tests / Code Coverage / test-x-upgrade (push) Waiting to run
Tests / Code Coverage / test-tools-benchmark (push) Waiting to run
Build & Push SDK Proto Builder / build (push) Has been cancelled
61 lines
2.7 KiB
Go
61 lines
2.7 KiB
Go
package ante
|
|
|
|
import (
|
|
errorsmod "cosmossdk.io/errors"
|
|
storetypes "cosmossdk.io/store/types"
|
|
txsigning "cosmossdk.io/x/tx/signing"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
|
|
"github.com/cosmos/cosmos-sdk/types/tx/signing"
|
|
"github.com/cosmos/cosmos-sdk/x/auth/types"
|
|
)
|
|
|
|
// HandlerOptions are the options required for constructing a default SDK AnteHandler.
|
|
type HandlerOptions struct {
|
|
AccountKeeper AccountKeeper
|
|
BankKeeper types.BankKeeper
|
|
ExtensionOptionChecker ExtensionOptionChecker
|
|
FeegrantKeeper FeegrantKeeper
|
|
SignModeHandler *txsigning.HandlerMap
|
|
SigGasConsumer func(meter storetypes.GasMeter, sig signing.SignatureV2, params types.Params) error
|
|
TxFeeChecker TxFeeChecker
|
|
// SigVerifyOptions are the options for the signature verification decorator.
|
|
// This allows for modification of signature verification behavior, such as how long an unordered transaction can
|
|
// be valid, or how much gas to charge for unordered transactions.
|
|
SigVerifyOptions []SigVerificationDecoratorOption
|
|
}
|
|
|
|
// NewAnteHandler returns an AnteHandler that checks and increments sequence
|
|
// numbers, checks signatures & account numbers, and deducts fees from the first
|
|
// signer.
|
|
func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
|
|
if options.AccountKeeper == nil {
|
|
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "account keeper is required for ante builder")
|
|
}
|
|
|
|
if options.BankKeeper == nil {
|
|
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "bank keeper is required for ante builder")
|
|
}
|
|
|
|
if options.SignModeHandler == nil {
|
|
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder")
|
|
}
|
|
|
|
anteDecorators := []sdk.AnteDecorator{
|
|
NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first
|
|
NewExtensionOptionsDecorator(options.ExtensionOptionChecker),
|
|
NewValidateBasicDecorator(),
|
|
NewTxTimeoutHeightDecorator(),
|
|
NewValidateMemoDecorator(options.AccountKeeper),
|
|
NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
|
|
NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker),
|
|
NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators
|
|
NewValidateSigCountDecorator(options.AccountKeeper),
|
|
NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer),
|
|
NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler, options.SigVerifyOptions...),
|
|
NewIncrementSequenceDecorator(options.AccountKeeper),
|
|
}
|
|
|
|
return sdk.ChainAnteDecorators(anteDecorators...), nil
|
|
}
|