> This variant should be checked in `TransactionArgs.ToMessage`. I'm surprised it's still failing. because of this in `ToMessage`: ``` if args.Gas != nil { gas = uint64(*args.Gas) } ``` the pre-handling to set `args.Gas` as `0` activates this `if`, thus the gas limit is wrongly set as `0`. code: ``` tmp := hexutil.Uint64(b.RPCGasCap()) args.Gas = &tmp ``` btw, which do you think is better as a default value, the block gas limit or `uint64(math.MaxUint64 / 2)` like in `ToMessage`? _Originally posted by @colinlyguo in https://github.com/ethereum/go-ethereum/issues/28846#issuecomment-1903916798_ ```[tasklist] ### Tasks - [ ] https://github.com/ethereum/go-ethereum/pull/29115 - [ ] https://github.com/ethereum/go-ethereum/pull/29089 ```