diff --git a/app/ante/evm_checktx.go b/app/ante/evm_checktx.go index be23117907..1d80597fc1 100644 --- a/app/ante/evm_checktx.go +++ b/app/ante/evm_checktx.go @@ -253,11 +253,11 @@ func EvmCheckAndChargeFees(ctx sdk.Context, sender common.Address, ek *evmkeeper if txData.GetGasFeeCap().Cmp(GetMinimumFee(ctx, ek)) < 0 { return nil, sdkerrors.ErrInsufficientFee } + ethCfg := evmtypes.DefaultChainConfig().EthereumConfig(ek.ChainID(ctx)) if version >= derived.Cancun && len(txData.GetBlobHashes()) > 0 { // For now we are simply assuming excessive blob gas is 0. In the future we might change it to be // dynamic based on prior block usage. - chainConfig := evmtypes.DefaultChainConfig().EthereumConfig(ek.ChainID(ctx)) - if txData.GetBlobFeeCap().Cmp(eip4844.CalcBlobFee(chainConfig, ðtypes.Header{Time: uint64(ctx.BlockTime().Unix())})) < 0 { // nolint:gosec + if txData.GetBlobFeeCap().Cmp(eip4844.CalcBlobFee(ethCfg, ðtypes.Header{Time: uint64(ctx.BlockTime().Unix())})) < 0 { // nolint:gosec return nil, sdkerrors.ErrInsufficientFee } } @@ -268,9 +268,8 @@ func EvmCheckAndChargeFees(ctx sdk.Context, sender common.Address, ek *evmkeeper if err != nil { return nil, err } - cfg := evmtypes.DefaultChainConfig().EthereumConfig(ek.ChainID(ctx)) txCtx := core.NewEVMTxContext(emsg) - evmInstance := vm.NewEVM(*blockCtx, stateDB, cfg, vm.Config{}, ek.CustomPrecompiles(ctx)) + evmInstance := vm.NewEVM(*blockCtx, stateDB, ethCfg, vm.Config{}, ek.CustomPrecompiles(ctx)) evmInstance.SetTxContext(txCtx) st := core.NewStateTransition(evmInstance, emsg, &gp, true, false) if statelessChecks { diff --git a/x/evm/ante/fee.go b/x/evm/ante/fee.go index e710083682..d127a61bdd 100644 --- a/x/evm/ante/fee.go +++ b/x/evm/ante/fee.go @@ -54,14 +54,14 @@ func (fc EVMFeeCheckDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate b if txData.GetGasTipCap().Sign() < 0 { return ctx, sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "gas fee cap cannot be negative") } + ethCfg := evmtypes.DefaultChainConfig().EthereumConfig(fc.evmKeeper.ChainID(ctx)) // if EVM version is Cancun or later, and the transaction contains at least one blob, we need to // make sure the transaction carries a non-zero blob fee cap. if ver >= derived.Cancun && len(txData.GetBlobHashes()) > 0 { // For now we are simply assuming excessive blob gas is 0. In the future we might change it to be // dynamic based on prior block usage. - chainConfig := evmtypes.DefaultChainConfig().EthereumConfig(fc.evmKeeper.ChainID(ctx)) - if txData.GetBlobFeeCap().Cmp(eip4844.CalcBlobFee(chainConfig, ðtypes.Header{Time: uint64(ctx.BlockTime().Unix())})) < 0 { // nolint:gosec + if txData.GetBlobFeeCap().Cmp(eip4844.CalcBlobFee(ethCfg, ðtypes.Header{Time: uint64(ctx.BlockTime().Unix())})) < 0 { // nolint:gosec return ctx, sdkerrors.ErrInsufficientFee } } @@ -75,9 +75,8 @@ func (fc EVMFeeCheckDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate b if err != nil { return ctx, err } - cfg := evmtypes.DefaultChainConfig().EthereumConfig(fc.evmKeeper.ChainID(ctx)) txCtx := core.NewEVMTxContext(emsg) - evmInstance := vm.NewEVM(*blockCtx, stateDB, cfg, vm.Config{}, fc.evmKeeper.CustomPrecompiles(ctx)) + evmInstance := vm.NewEVM(*blockCtx, stateDB, ethCfg, vm.Config{}, fc.evmKeeper.CustomPrecompiles(ctx)) evmInstance.SetTxContext(txCtx) st := core.NewStateTransition(evmInstance, emsg, &gp, true, false) // run stateless checks before charging gas (mimicking Geth behavior)