diff --git a/internal/ethapi/transaction_args.go b/internal/ethapi/transaction_args.go index c84dea80b5..a06a499b98 100644 --- a/internal/ethapi/transaction_args.go +++ b/internal/ethapi/transaction_args.go @@ -398,7 +398,18 @@ func (args *TransactionArgs) CallDefaults(globalGasCap uint64, baseFee *big.Int, } args.Gas = (*hexutil.Uint64)(&gas) } else { - if globalGasCap > 0 && globalGasCap < uint64(*args.Gas) { + // Gas set for system calls + systemCallGas := (hexutil.Uint64)(uint64(math.MaxUint64 / 2)) + + gas := globalGasCap + if gas == 0 { + gas = uint64(math.MaxUint64 / 2) + } + if args.Gas != nil && *args.Gas != systemCallGas { + gas = uint64(*args.Gas) + } + + if globalGasCap > 0 && globalGasCap < gas { log.Warn("Caller gas above allowance, capping", "requested", args.Gas, "cap", globalGasCap) args.Gas = (*hexutil.Uint64)(&globalGasCap) }