diff --git a/app/ante/cosmos_checktx.go b/app/ante/cosmos_checktx.go index f92d8ca7fb..9a562cc1a7 100644 --- a/app/ante/cosmos_checktx.go +++ b/app/ante/cosmos_checktx.go @@ -73,7 +73,7 @@ func CosmosCheckTxAnte( ) (returnCtx sdk.Context, returnErr error) { oracleVote, err := CosmosStatelessChecks(tx, ctx.BlockHeight(), ctx.ConsensusParams()) if err != nil { - return ctx, err + return SetGasMeter(ctx, 0, pk), err } defer func() { @@ -81,11 +81,14 @@ func CosmosCheckTxAnte( returnErr = HandleOutofGas(r, tx.(GasTx).GetGas(), ctx.GasMeter().GasConsumed()) } }() - gasMeter, isGasless, err := GetGasMeter(ctx.WithGasMeter(storetypes.NewNoConsumptionInfiniteGasMeter()), tx, oraclek, ek, pk) + ctx = ctx.WithGasMeter(storetypes.NewNoConsumptionInfiniteGasMeter()) + isGasless, err := antedecorators.IsTxGasless(tx, ctx, oraclek, ek) if err != nil { return ctx, err } - ctx = ctx.WithGasMeter(gasMeter) + if !isGasless { + ctx = SetGasMeter(ctx, tx.(GasTx).GetGas(), pk) + } authParams := accountKeeper.GetParams(ctx) @@ -236,21 +239,14 @@ func CosmosStatelessChecks(tx sdk.Tx, height int64, consensusParams *tmproto.Con return oracleVote, nil } -func GetGasMeter( - ctx sdk.Context, tx sdk.Tx, oracleKeeper oraclekeeper.Keeper, - evmKeeper *evmkeeper.Keeper, - paramsKeeper paramskeeper.Keeper, -) (sdk.GasMeter, bool, error) { - // TODO: may not be necessary for CheckTx - isGasless, err := antedecorators.IsTxGasless(tx, ctx, oracleKeeper, evmKeeper) - if err != nil { - return nil, false, err - } - if !isGasless { - cosmosGasParams := paramsKeeper.GetCosmosGasParams(ctx) - return storetypes.NewMultiplierGasMeter(tx.(GasTx).GetGas(), cosmosGasParams.CosmosGasMultiplierNumerator, cosmosGasParams.CosmosGasMultiplierDenominator), isGasless, nil +func SetGasMeter(ctx sdk.Context, gasLimit uint64, paramsKeeper paramskeeper.Keeper) sdk.Context { + cosmosGasParams := paramsKeeper.GetCosmosGasParams(ctx) + + if ctx.BlockHeight() == 0 { + return ctx.WithGasMeter(storetypes.NewInfiniteMultiplierGasMeter(cosmosGasParams.CosmosGasMultiplierNumerator, cosmosGasParams.CosmosGasMultiplierDenominator)) } - return ctx.GasMeter(), isGasless, nil + + return ctx.WithGasMeter(storetypes.NewMultiplierGasMeter(gasLimit, cosmosGasParams.CosmosGasMultiplierNumerator, cosmosGasParams.CosmosGasMultiplierDenominator)) } func CheckAndChargeFees(ctx sdk.Context, tx sdk.Tx, accountKeeper authkeeper.AccountKeeper, bankKeeper bankkeeper.Keeper, feegrantKeeper *feegrantkeeper.Keeper, paramsKeeper paramskeeper.Keeper, isGasless bool) (priority int64, err error) { diff --git a/app/ante/cosmos_delivertx.go b/app/ante/cosmos_delivertx.go index 5f0b0074b7..24959c968d 100644 --- a/app/ante/cosmos_delivertx.go +++ b/app/ante/cosmos_delivertx.go @@ -8,6 +8,7 @@ import ( bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" + "github.com/sei-protocol/sei-chain/app/antedecorators" evmkeeper "github.com/sei-protocol/sei-chain/x/evm/keeper" oraclekeeper "github.com/sei-protocol/sei-chain/x/oracle/keeper" ) @@ -24,7 +25,7 @@ func CosmosDeliverTxAnte( feegrantKeeper *feegrantkeeper.Keeper, ) (returnCtx sdk.Context, returnErr error) { if _, err := CosmosStatelessChecks(tx, ctx.BlockHeight(), ctx.ConsensusParams()); err != nil { - return ctx, err + return SetGasMeter(ctx, 0, pk), err } defer func() { @@ -32,11 +33,14 @@ func CosmosDeliverTxAnte( returnErr = HandleOutofGas(r, tx.(GasTx).GetGas(), ctx.GasMeter().GasConsumed()) } }() - gasMeter, _, err := GetGasMeter(ctx.WithGasMeter(storetypes.NewNoConsumptionInfiniteGasMeter()), tx, oraclek, ek, pk) + ctx = ctx.WithGasMeter(storetypes.NewNoConsumptionInfiniteGasMeter()) + isGasless, err := antedecorators.IsTxGasless(tx, ctx, oraclek, ek) if err != nil { return ctx, err } - ctx = ctx.WithGasMeter(gasMeter) + if !isGasless { + ctx = SetGasMeter(ctx, tx.(GasTx).GetGas(), pk) + } authParams := accountKeeper.GetParams(ctx)