Documentation ¶
Index ¶
- func NewDynamicFeeChecker(k DynamicFeeEVMKeeper) anteutils.TxFeeChecker
- type CanTransferDecorator
- type DynamicFeeEVMKeeper
- type EVMKeeper
- type EthBasicValidationDecorator
- type EthEmitEventDecorator
- type EthGasConsumeDecorator
- type EthIncrementSenderSequenceDecorator
- type EthMempoolFeeDecorator
- type EthMinGasPriceDecorator
- type EthSetupContextDecorator
- type EthSetupExecutionDecorator
- type EthSigVerificationDecorator
- type EthValidateBasicDecorator
- type ExternalOwnedAccountVerificationDecorator
- type FeeMarketKeeper
- type SingleEthTxDecorator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewDynamicFeeChecker ¶
func NewDynamicFeeChecker(k DynamicFeeEVMKeeper) anteutils.TxFeeChecker
NewDynamicFeeChecker returns a `TxFeeChecker` that applies a dynamic fee to Cosmos txs using the EIP-1559 fee market logic. This can be called in both CheckTx and deliverTx modes. a) feeCap = tx.fees / tx.gas b) tipFeeCap = tx.MaxPriorityPrice (default) or MaxInt64 - when `ExtensionOptionDynamicFeeTx` is omitted, `tipFeeCap` defaults to `MaxInt64`. - when london hardfork is not enabled, it falls back to SDK default behavior (validator min-gas-prices). - Tx priority is set to `effectiveGasPrice / DefaultPriorityReduction`.
Types ¶
type CanTransferDecorator ¶
type CanTransferDecorator struct {
// contains filtered or unexported fields
}
CanTransferDecorator checks if the sender is allowed to transfer funds according to the EVM block context rules.
func NewCanTransferDecorator ¶
func NewCanTransferDecorator(evmKeeper EVMKeeper) CanTransferDecorator
NewCanTransferDecorator creates a new CanTransferDecorator instance.
func (CanTransferDecorator) AnteHandle ¶
func (ctd CanTransferDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error)
AnteHandle creates an EVM from the message and calls the BlockContext CanTransfer function to see if the address can execute the transaction.
type DynamicFeeEVMKeeper ¶
type DynamicFeeEVMKeeper interface { ChainID() *big.Int GetParams(ctx sdk.Context) evmtypes.Params GetBaseFee(ctx sdk.Context, ethCfg *ethparams.ChainConfig) *big.Int }
DynamicFeeEVMKeeper is a subset of EVMKeeper interface that supports dynamic fee checker
type EVMKeeper ¶
type EVMKeeper interface { statedb.Keeper DynamicFeeEVMKeeper NewEVM(ctx sdk.Context, msg core.Message, cfg *statedb.EVMConfig, tracer vm.EVMLogger, stateDB vm.StateDB) *vm.EVM DeductTxCostsFromUserBalance(ctx sdk.Context, fees sdk.Coins, from common.Address) error GetBalance(ctx sdk.Context, addr common.Address) *big.Int SetupExecutionContext(ctx sdk.Context, txGas uint64, txType uint8) sdk.Context GetTxCountTransient(ctx sdk.Context) uint64 GetParams(ctx sdk.Context) evmtypes.Params }
EVMKeeper defines the expected keeper interface used on the AnteHandler
type EthBasicValidationDecorator ¶ added in v12.2.5
type EthBasicValidationDecorator struct{}
EthBasicValidationDecorator performs some validation for Ethereum transaction
func NewEthBasicValidationDecorator ¶ added in v12.2.5
func NewEthBasicValidationDecorator() EthBasicValidationDecorator
NewEthBasicValidationDecorator creates a new EthBasicValidationDecorator.
func (EthBasicValidationDecorator) AnteHandle ¶ added in v12.2.5
func (bvd EthBasicValidationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error)
AnteHandle handles basic validation for the Ethereum transaction:
- Value is not negative
type EthEmitEventDecorator ¶
type EthEmitEventDecorator struct {
// contains filtered or unexported fields
}
EthEmitEventDecorator emit events in ante handler in case of tx execution failed (out of block gas limit).
func NewEthEmitEventDecorator ¶
func NewEthEmitEventDecorator(evmKeeper EVMKeeper) EthEmitEventDecorator
NewEthEmitEventDecorator creates a new EthEmitEventDecorator
func (EthEmitEventDecorator) AnteHandle ¶
func (eeed EthEmitEventDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error)
AnteHandle emits some basic events for the eth messages
type EthGasConsumeDecorator ¶
type EthGasConsumeDecorator struct {
// contains filtered or unexported fields
}
EthGasConsumeDecorator validates enough intrinsic gas for the transaction and gas consumption.
func NewEthGasConsumeDecorator ¶
func NewEthGasConsumeDecorator( bankKeeper anteutils.BankKeeper, distributionKeeper anteutils.DistributionKeeper, evmKeeper EVMKeeper, stakingKeeper anteutils.StakingKeeper, maxGasWanted uint64, ) EthGasConsumeDecorator
NewEthGasConsumeDecorator creates a new EthGasConsumeDecorator
func (EthGasConsumeDecorator) AnteHandle ¶
func (egcd EthGasConsumeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error)
AnteHandle validates that the Ethereum tx message has enough to cover intrinsic gas (during CheckTx only) and that the sender has enough balance to pay for the gas cost.
Intrinsic gas for a transaction is the amount of gas that the transaction uses before the transaction is executed. The gas is a constant value plus any cost incurred by additional bytes of data supplied with the transaction.
This AnteHandler decorator will fail if: - the message is not a MsgEthereumTx - sender account cannot be found - transaction's gas limit is lower than the intrinsic gas - user has neither enough balance to deduct for the transaction fees (gas_limit * gas_price) - transaction or block gas meter runs out of gas - sets the gas meter limit - gas limit is greater than the block gas meter limit
type EthIncrementSenderSequenceDecorator ¶
type EthIncrementSenderSequenceDecorator struct {
// contains filtered or unexported fields
}
EthIncrementSenderSequenceDecorator increments the sequence of the signers.
func NewEthIncrementSenderSequenceDecorator ¶
func NewEthIncrementSenderSequenceDecorator(ak evmtypes.AccountKeeper) EthIncrementSenderSequenceDecorator
NewEthIncrementSenderSequenceDecorator creates a new EthIncrementSenderSequenceDecorator.
func (EthIncrementSenderSequenceDecorator) AnteHandle ¶
func (issd EthIncrementSenderSequenceDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error)
AnteHandle handles incrementing the sequence of the signer (i.e. sender). If the transaction is a contract creation, the nonce will be incremented during the transaction execution and not within this AnteHandler decorator.
type EthMempoolFeeDecorator ¶
type EthMempoolFeeDecorator struct {
// contains filtered or unexported fields
}
EthMempoolFeeDecorator will check if the transaction's effective fee is at least as large as the local validator's minimum gasFee (defined in validator config). If fee is too low, decorator returns error and tx is rejected from mempool. Note this only applies when ctx.CheckTx = true If fee is high enough or not CheckTx, then call next AnteHandler CONTRACT: Tx must implement FeeTx to use MempoolFeeDecorator
func NewEthMempoolFeeDecorator ¶
func NewEthMempoolFeeDecorator(ek EVMKeeper) EthMempoolFeeDecorator
NewEthMempoolFeeDecorator creates a new NewEthMempoolFeeDecorator instance used only for Ethereum transactions.
func (EthMempoolFeeDecorator) AnteHandle ¶
func (mfd EthMempoolFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error)
AnteHandle ensures that the provided fees meet a minimum threshold for the validator. This check only for local mempool purposes, and thus it is only run on (Re)CheckTx. The logic is also skipped if the London hard fork and EIP-1559 are enabled.
type EthMinGasPriceDecorator ¶
type EthMinGasPriceDecorator struct {
// contains filtered or unexported fields
}
EthMinGasPriceDecorator will check if the transaction's fee is at least as large as the MinGasPrices param. If fee is too low, decorator returns error and tx is rejected. This applies to both CheckTx and DeliverTx and regardless if London hard fork or fee market params (EIP-1559) are enabled. If fee is high enough, then call next AnteHandler
func NewEthMinGasPriceDecorator ¶
func NewEthMinGasPriceDecorator(fk FeeMarketKeeper, ek EVMKeeper) EthMinGasPriceDecorator
NewEthMinGasPriceDecorator creates a new MinGasPriceDecorator instance used only for Ethereum transactions.
func (EthMinGasPriceDecorator) AnteHandle ¶
func (empd EthMinGasPriceDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error)
AnteHandle ensures that the effective fee from the transaction is greater than the minimum global fee, which is defined by the MinGasPrice (parameter) * GasLimit (tx argument).
type EthSetupContextDecorator ¶
type EthSetupContextDecorator struct {
// contains filtered or unexported fields
}
EthSetupContextDecorator is adapted from SetUpContextDecorator from cosmos-sdk, it ignores gas consumption by setting the gas meter to infinite
func NewEthSetUpContextDecorator ¶
func NewEthSetUpContextDecorator(evmKeeper EVMKeeper) EthSetupContextDecorator
func (EthSetupContextDecorator) AnteHandle ¶
type EthSetupExecutionDecorator ¶
type EthSetupExecutionDecorator struct {
// contains filtered or unexported fields
}
EthSetupExecutionDecorator update some information to transient store.
func NewEthSetupExecutionDecorator ¶
func NewEthSetupExecutionDecorator(evmKeeper EVMKeeper) EthSetupExecutionDecorator
NewEthSetupExecutionDecorator creates a new EthSetupExecutionDecorator
func (EthSetupExecutionDecorator) AnteHandle ¶
func (sed EthSetupExecutionDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error)
AnteHandle emits some basic events for the eth messages
type EthSigVerificationDecorator ¶
type EthSigVerificationDecorator struct {
// contains filtered or unexported fields
}
EthSigVerificationDecorator validates an ethereum signatures
func NewEthSigVerificationDecorator ¶
func NewEthSigVerificationDecorator(ek EVMKeeper) EthSigVerificationDecorator
NewEthSigVerificationDecorator creates a new EthSigVerificationDecorator
func (EthSigVerificationDecorator) AnteHandle ¶
func (esvd EthSigVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error)
AnteHandle validates checks that the registered chain id is the same as the one on the message, and that the signer address matches the one defined on the message. It's not skipped for RecheckTx, because it set `From` address which is critical from other ante handler to work. Failure in RecheckTx will prevent tx to be included into block, especially when CheckTx succeed, in which case user won't see the error message.
type EthValidateBasicDecorator ¶
type EthValidateBasicDecorator struct {
// contains filtered or unexported fields
}
EthValidateBasicDecorator is adapted from ValidateBasicDecorator from cosmos-sdk, it ignores ErrNoSignatures
func NewEthValidateBasicDecorator ¶
func NewEthValidateBasicDecorator(ek EVMKeeper) EthValidateBasicDecorator
NewEthValidateBasicDecorator creates a new EthValidateBasicDecorator
func (EthValidateBasicDecorator) AnteHandle ¶
func (vbd EthValidateBasicDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error)
AnteHandle handles basic validation of tx
type ExternalOwnedAccountVerificationDecorator ¶
type ExternalOwnedAccountVerificationDecorator struct {
// contains filtered or unexported fields
}
ExternalOwnedAccountVerificationDecorator validates an account balance checks
func NewExternalOwnedAccountVerificationDecorator ¶
func NewExternalOwnedAccountVerificationDecorator(ak evmtypes.AccountKeeper, bk evmtypes.BankKeeper, ek EVMKeeper) ExternalOwnedAccountVerificationDecorator
NewExternalOwnedAccountVerificationDecorator creates a new ExternalOwnedAccountVerificationDecorator
func (ExternalOwnedAccountVerificationDecorator) AnteHandle ¶
func (avd ExternalOwnedAccountVerificationDecorator) AnteHandle( ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler, ) (newCtx sdk.Context, err error)
AnteHandle validates checks that the sender balance is greater than the total transaction cost. The account will be set to store if it doesn't exist, i.e. cannot be found on store. This AnteHandler decorator will fail if: - any of the msgs is not a MsgEthereumTx - from address is empty - account balance is lower than the transaction cost
type FeeMarketKeeper ¶
type SingleEthTxDecorator ¶
type SingleEthTxDecorator struct{}
SingleEthTxDecorator check if the transaction contains one and only one EthereumTx
func NewSingleEthTxDecorator ¶
func NewSingleEthTxDecorator() SingleEthTxDecorator