Documentation ¶
Overview ¶
Package ante defines the SDK auth module's AnteHandler as well as an internal AnteHandler for an Ethereum transaction (i.e MsgEthereumTx).
During CheckTx, the transaction is passed through a series of pre-message execution validation checks such as signature and account verification in addition to minimum fees being checked. Otherwise, during DeliverTx, the transaction is simply passed to the EVM which will also perform the same series of checks. The distinction is made in CheckTx to prevent spam and DoS attacks.
Index ¶
- func NewAnteHandler(ak auth.AccountKeeper, evmKeeper EVMKeeper, sk types.SupplyKeeper) sdk.AnteHandler
- type AccountSetupDecorator
- type AccountVerificationDecorator
- type EVMKeeper
- type EthGasConsumeDecorator
- type EthMempoolFeeDecorator
- type EthSetupContextDecorator
- type EthSigVerificationDecorator
- type IncrementSenderSequenceDecorator
- type NonceVerificationDecorator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewAnteHandler ¶
func NewAnteHandler(ak auth.AccountKeeper, evmKeeper EVMKeeper, sk types.SupplyKeeper) sdk.AnteHandler
NewAnteHandler returns an ante handler responsible for attempting to route an Ethereum or SDK transaction to an internal ante handler for performing transaction-level processing (e.g. fee payment, signature verification) before being passed onto it's respective handler.
Types ¶
type AccountSetupDecorator ¶ added in v0.2.0
type AccountSetupDecorator struct {
// contains filtered or unexported fields
}
AccountSetupDecorator sets an account to state if it's not stored already. This only applies for MsgEthermint.
func NewAccountSetupDecorator ¶ added in v0.2.0
func NewAccountSetupDecorator(ak auth.AccountKeeper) AccountSetupDecorator
NewAccountSetupDecorator creates a new AccountSetupDecorator instance
func (AccountSetupDecorator) AnteHandle ¶ added in v0.2.0
func (asd AccountSetupDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error)
AnteHandle sets an account for MsgEthermint (evm) if the sender is registered. NOTE: Since the account is set without any funds, the message execution will fail if the validator requires a minimum fee > 0.
type AccountVerificationDecorator ¶
type AccountVerificationDecorator struct {
// contains filtered or unexported fields
}
AccountVerificationDecorator validates an account balance checks
func NewAccountVerificationDecorator ¶
func NewAccountVerificationDecorator(ak auth.AccountKeeper, ek EVMKeeper) AccountVerificationDecorator
NewAccountVerificationDecorator creates a new AccountVerificationDecorator
func (AccountVerificationDecorator) AnteHandle ¶
func (avd AccountVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error)
AnteHandle validates the signature and returns sender address
type EVMKeeper ¶ added in v0.2.0
EVMKeeper defines the expected keeper interface used on the Eth AnteHandler
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(ak auth.AccountKeeper, sk types.SupplyKeeper, ek EVMKeeper) EthGasConsumeDecorator
NewEthGasConsumeDecorator creates a new EthGasConsumeDecorator
func (EthGasConsumeDecorator) AnteHandle ¶
func (egcd EthGasConsumeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err 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 of 21000 plus any cost inccured by additional bytes of data supplied with the transaction.
type EthMempoolFeeDecorator ¶
type EthMempoolFeeDecorator struct {
// contains filtered or unexported fields
}
EthMempoolFeeDecorator validates that sufficient fees have been provided that meet a minimum threshold defined by the proposer (for mempool purposes during CheckTx).
func NewEthMempoolFeeDecorator ¶
func NewEthMempoolFeeDecorator(ek EVMKeeper) EthMempoolFeeDecorator
NewEthMempoolFeeDecorator creates a new EthMempoolFeeDecorator
func (EthMempoolFeeDecorator) AnteHandle ¶
func (emfd EthMempoolFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error)
AnteHandle verifies that enough fees have been provided by the Ethereum transaction that meet the minimum threshold set by the block proposer.
NOTE: This should only be run during a CheckTx mode.
type EthSetupContextDecorator ¶
type EthSetupContextDecorator struct{}
EthSetupContextDecorator sets the infinite GasMeter in the Context and wraps the next AnteHandler with a defer clause to recover from any downstream OutOfGas panics in the AnteHandler chain to return an error with information on gas provided and gas used. CONTRACT: Must be first decorator in the chain CONTRACT: Tx must implement GasTx interface
func NewEthSetupContextDecorator ¶
func NewEthSetupContextDecorator() EthSetupContextDecorator
NewEthSetupContextDecorator creates a new EthSetupContextDecorator
func (EthSetupContextDecorator) AnteHandle ¶
func (escd EthSetupContextDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error)
AnteHandle sets the infinite gas meter to done to ignore costs in AnteHandler checks. This is undone at the EthGasConsumeDecorator, where the context is set with the ethereum tx GasLimit.
type EthSigVerificationDecorator ¶
type EthSigVerificationDecorator struct{}
EthSigVerificationDecorator validates an ethereum signature
func NewEthSigVerificationDecorator ¶
func NewEthSigVerificationDecorator() 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 the signature and returns sender address
type IncrementSenderSequenceDecorator ¶
type IncrementSenderSequenceDecorator struct {
// contains filtered or unexported fields
}
IncrementSenderSequenceDecorator increments the sequence of the signers. The main difference with the SDK's IncrementSequenceDecorator is that the MsgEthereumTx doesn't implement the SigVerifiableTx interface.
CONTRACT: must be called after msg.VerifySig in order to cache the sender address.
func NewIncrementSenderSequenceDecorator ¶
func NewIncrementSenderSequenceDecorator(ak auth.AccountKeeper) IncrementSenderSequenceDecorator
NewIncrementSenderSequenceDecorator creates a new IncrementSenderSequenceDecorator.
func (IncrementSenderSequenceDecorator) AnteHandle ¶
func (issd IncrementSenderSequenceDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error)
AnteHandle handles incrementing the sequence of the sender.
type NonceVerificationDecorator ¶
type NonceVerificationDecorator struct {
// contains filtered or unexported fields
}
NonceVerificationDecorator checks that the account nonce from the transaction matches the sender account sequence.
func NewNonceVerificationDecorator ¶
func NewNonceVerificationDecorator(ak auth.AccountKeeper) NonceVerificationDecorator
NewNonceVerificationDecorator creates a new NonceVerificationDecorator
func (NonceVerificationDecorator) AnteHandle ¶
func (nvd NonceVerificationDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error)
AnteHandle validates that the transaction nonce is valid (equivalent to the sender account’s current nonce).