-
Notifications
You must be signed in to change notification settings - Fork 21.6k
internal/ethapi: skip tx gas limit check for calls #32641
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Related to this, I wonder if we need to add special logic to estimateGas for capping the gas to the protocol-defined limit. |
|
It looks like the diff --git a/eth/tracers/api.go b/eth/tracers/api.go
index b50a532b60..a05b7a7a4a 100644
--- a/eth/tracers/api.go
+++ b/eth/tracers/api.go
@@ -984,7 +984,7 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc
return nil, err
}
var (
- msg = args.ToMessage(blockContext.BaseFee, true, true)
+ msg = args.ToMessage(blockContext.BaseFee, true)
tx = args.ToTransaction(types.LegacyTxType)
traceConfig *TraceConfig
)
diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go
index 554f525290..ebb8ece730 100644
--- a/internal/ethapi/api.go
+++ b/internal/ethapi/api.go
@@ -699,15 +699,15 @@ func doCall(ctx context.Context, b Backend, args TransactionArgs, state *state.S
} else {
gp.AddGas(globalGasCap)
}
- return applyMessage(ctx, b, args, state, header, timeout, gp, &blockCtx, &vm.Config{NoBaseFee: true}, precompiles, true)
+ return applyMessage(ctx, b, args, state, header, timeout, gp, &blockCtx, &vm.Config{NoBaseFee: true}, precompiles)
}
-func applyMessage(ctx context.Context, b Backend, args TransactionArgs, state *state.StateDB, header *types.Header, timeout time.Duration, gp *core.GasPool, blockContext *vm.BlockContext, vmConfig *vm.Config, precompiles vm.PrecompiledContracts, skipChecks bool) (*core.ExecutionResult, error) {
+func applyMessage(ctx context.Context, b Backend, args TransactionArgs, state *state.StateDB, header *types.Header, timeout time.Duration, gp *core.GasPool, blockContext *vm.BlockContext, vmConfig *vm.Config, precompiles vm.PrecompiledContracts) (*core.ExecutionResult, error) {
// Get a new instance of the EVM.
if err := args.CallDefaults(gp.Gas(), blockContext.BaseFee, b.ChainConfig().ChainID); err != nil {
return nil, err
}
- msg := args.ToMessage(header.BaseFee, skipChecks, skipChecks)
+ msg := args.ToMessage(header.BaseFee, true)
// Lower the basefee to 0 to avoid breaking EVM
// invariants (basefee < feecap).
if msg.GasPrice.Sign() == 0 {
@@ -858,7 +858,7 @@ func DoEstimateGas(ctx context.Context, b Backend, args TransactionArgs, blockNr
if err := args.CallDefaults(gasCap, header.BaseFee, b.ChainConfig().ChainID); err != nil {
return 0, err
}
- call := args.ToMessage(header.BaseFee, true, true)
+ call := args.ToMessage(header.BaseFee, true)
// Run the gas estimation and wrap any revertals into a custom return
estimate, revert, err := gasestimator.Estimate(ctx, call, opts, gasCap)
@@ -1301,7 +1301,7 @@ func AccessList(ctx context.Context, b Backend, blockNrOrHash rpc.BlockNumberOrH
statedb := db.Copy()
// Set the accesslist to the last al
args.AccessList = &accessList
- msg := args.ToMessage(header.BaseFee, true, true)
+ msg := args.ToMessage(header.BaseFee, true)
// Apply the transaction with the access list tracer
tracer := logger.NewAccessListTracer(accessList, addressesToExclude)
diff --git a/internal/ethapi/simulate.go b/internal/ethapi/simulate.go
index 362536bcb5..e26e5bd0e9 100644
--- a/internal/ethapi/simulate.go
+++ b/internal/ethapi/simulate.go
@@ -287,7 +287,7 @@ func (sim *simulator) processBlock(ctx context.Context, block *simBlock, header,
tracer.reset(txHash, uint(i))
sim.state.SetTxContext(txHash, i)
// EoA check is always skipped, even in validation mode.
- msg := call.ToMessage(header.BaseFee, !sim.validate, true)
+ msg := call.ToMessage(header.BaseFee, !sim.validate)
result, err := applyMessageWithEVM(ctx, evm, msg, timeout, sim.gp)
if err != nil {
txErr := txValidationError(err)
diff --git a/internal/ethapi/transaction_args.go b/internal/ethapi/transaction_args.go
index f80ef6d080..80938ac955 100644
--- a/internal/ethapi/transaction_args.go
+++ b/internal/ethapi/transaction_args.go
@@ -443,7 +443,7 @@ func (args *TransactionArgs) CallDefaults(globalGasCap uint64, baseFee *big.Int,
// core evm. This method is used in calls and traces that do not require a real
// live transaction.
// Assumes that fields are not nil, i.e. setDefaults or CallDefaults has been called.
-func (args *TransactionArgs) ToMessage(baseFee *big.Int, skipNonceCheck, skipEoACheck bool) *core.Message {
+func (args *TransactionArgs) ToMessage(baseFee *big.Int, skipNonceCheck bool) *core.Message {
var (
gasPrice *big.Int
gasFeeCap *big.Int
@@ -491,7 +491,7 @@ func (args *TransactionArgs) ToMessage(baseFee *big.Int, skipNonceCheck, skipEoA
BlobHashes: args.BlobHashes,
SetCodeAuthorizations: args.AuthorizationList,
SkipNonceChecks: skipNonceCheck,
- SkipFromEOACheck: skipEoACheck,
+ SkipFromEOACheck: true,
}
}And then rename the |
|
If we decide not to do that, the current code also SGTM |
This disables the tx gaslimit cap for eth_call and related RPC operations.
Also move EIP-7825 check earlier.
SkipFromEOACheck was always passed as true, so the parameter can be removed.
624f572 to
ed5fc16
Compare
|
@MariusVanDerWijden I have applied your suggestion. Good observation that |
MariusVanDerWijden
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
TMapviun973wuRMASRofEDB1NbyJmoc7v2 |
|
Pull request TMapviun973wuRMASRofEDB1NbyJmoc7v2 |
This disables the tx gaslimit cap for eth_call and related RPC operations. I don't like how this fix works. Ideally we'd be checking the tx gaslimit somewhere else, like in the block validator, or any other place that considers block transactions. Doing the check in StateTransition means it affects all possible ways of executing a message. The challenge is finding a place for this check that also triggers correctly in tests where it is wanted. So for now, we are just combining this with the EOA sender check for transactions. Both are disabled for call-type messages.
Cplus360
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Viewed
…thereum#1842) * first working version of new state sync tx * remove logs * fix lint * fix integration tests * test fixes * lint fix * fix parallel processor * type improvement and unit tests * remove duplicates * ignore data test output * fixing method calls and fields * build fix * remove bor filter for after hf blocks * sort logs just when necessary * ssTxs: fix receiptsHash mismatch (ethereum#1829) * ssTxs: fix receiptsHash mismatch * chore: remove block hash and number * revert: add block number * core(tx): fix Hash method for StateSyncTxType (ethereum#1830) * eth: fixes in receipt handling via p2p post HF (ethereum#1825) * eth: include bor receipts in ReceiptHash post HF * eth: rename to receiptListHash * eth: extrat typecasting logic for better testing, fix type matching issue * eth: add e2e tests for receipt delivery * eth/protocols/eth: apply HF logic while handling receipt query over eth69 * core: skip split receipts post HF * tests/bor: extend e2e test to check presence of state-sync in block * core/types: return nil for chainID() call over state-sync tx * internal/ethapi: handle bor txs and receipts post HF (ethereum#1834) * fix: cumulativeGasUsed in insertStateSyncTransactionAndCalculateReceipt (ethereum#1835) * fix: sort logs and remove duplicate append in Finalize (ethereum#1836) * fix: append tx only in FinalizeAndAssemble and use state instead of wrappedState * consensus/bor: sort logs before extracting state-sync logs * chore: revert statedb changes --------- Co-authored-by: Manav Darji <[email protected]> * chore: nit (ethereum#1838) * chore: typos * fix: lint * Renaming to Madhugiri HF * chore: nits * (fix): handle pointers to receipt list received via p2p * (chore): rename tests with HF name * chore: more nits * core: implement eip7883 * core: implement eip7825 * fix lint * fix isOsaka condition * fix lint and add comment for int test failing * fix failing test / address comments * core: add blocktime in bor receipt logs (ethereum#1848) * core/types: derive bloom for bor receipts * prioritize ss hf / remove todo * fix lint * split precompiled contracts and addresses for madhugiri HF from osaka * revert err msg to align with geth * eth/gasestimator: check ErrGasLimitTooHigh conditions (ethereum#32348) This PR makes 2 changes to how [EIP-7825](ethereum#31824) behaves. When `eth_estimateGas` or `eth_createAccessList` is called without any gas limit in the payload, geth will choose the block's gas limit or the `RPCGasCap`, which can be larger than the `maxTxGas`. When this happens for `estimateGas`, the gas estimation just errors out and ends, when it should continue doing binary search to find the lowest possible gas limit. This PR will: - Add a check to see if `hi` is larger than `maxTxGas` and cap it to `maxTxGas` if it's larger. And add a special case handling for gas estimation execute when it errs with `ErrGasLimitTooHigh` --------- Co-authored-by: Gary Rong <[email protected]> * internal/ethapi: skip tx gas limit check for calls (ethereum#32641) This disables the tx gaslimit cap for eth_call and related RPC operations. I don't like how this fix works. Ideally we'd be checking the tx gaslimit somewhere else, like in the block validator, or any other place that considers block transactions. Doing the check in StateTransition means it affects all possible ways of executing a message. The challenge is finding a place for this check that also triggers correctly in tests where it is wanted. So for now, we are just combining this with the EOA sender check for transactions. Both are disabled for call-type messages. * internal/ethapi: use gas from gaspool for call defaults * eth/gasestimator: check for madhugiri HF * consensus/bor: honour MaxTxGas for system calls --------- Co-authored-by: Lucca Martins <[email protected]> Co-authored-by: kamuikatsurgi <[email protected]> Co-authored-by: Krishang Shah <[email protected]> Co-authored-by: Manav Darji <[email protected]> Co-authored-by: Minhyuk Kim <[email protected]> Co-authored-by: Gary Rong <[email protected]> Co-authored-by: Felix Lange <[email protected]>
* Parallel block import (ethereum#1662) * core: naive first implmenetation of parallel block import in InsertChainStateless * core: add logic to handle dependency while parallel import * core: handle unknown ancestor + init some UTs * core: implement alternative way to check for unknown ancestor * core: defer ValidateWitnessPreState * zero commit * core: do sequential insert if the importing chain is small * core: fix error handling * core: update UTs * core,eth,internal/cli: add config to enable/disable parallel import + refactor * core: add metrics for seq and parallel import * internal/cli: moved parallelstatelessimport flag to the witness config * core: changed debug import log to info * core: added 2 new metrics to track the number of blocks processed in sequential and parallel stateless imports * core: init benchmarks * core: fix benchmarks * core: use worker pool for parallel block import * core: try parallel import for smaller batch * core: dedup header verification logic * zero commit * core,eth,internal/cli: improvements based on comments * core: add adversarial tests for stateless insert * core: re-add empty chain insertion case * zero commit to trigger CI * core,eth/catalyst: report correct execution stats for stateless insert * CI: temp update for running stateless tests * zero commit to trigger CI * zero commit to trigger CI * CI: try running on stateless branch * Revert "CI: try running on stateless branch" This reverts commit 98b5704fabcc6855225cc03e8f84e77f913fda08. * zero commit to trigger CI * core: add log for deferred exec of blocks due to invalid root err in parallel import * core: changed log to debug * core,eth,internal/ethapi: suppress error log for state sync when parallel import is enabled * eth/filters: fix gomock * eth: add missing configs * core: retry execution in parallel import for block validator errors * core: commit block before retrying failed execution * core: rm redundant witness in execResult * core: try flushing state db asap post execution * core: add temp log when committing code * core: enable retry for first block in batch * Revert "core: add temp log when committing code" This reverts commit cf63cc344ce7c0981c3410320dea04ba74dc448f. * core: cap workers spun * Revert "core: cap workers spun" This reverts commit 96367eebfe94dfc76e74dced4d55b71ce8a50896. * core: ensure statedb cleanup * core: add temp debug logs * core: add temp debug logs * core: add temp log to track sidechain * core: add temp log for contract code in commitAndFlush * core: add retry for all processing and internal state db errors * core: add state db error validation during deferred exec * core: add TestParallelStateless_ContractDeployedThenCalled * Revert "core: add temp log for contract code in commitAndFlush" This reverts commit 174765f14ced2ccff8cd8570935b04bda478342c. * Revert "core: add temp log to track sidechain" This reverts commit 29b33667a61016a7f2e71817c2bd287a27852f06. * Revert "core: add temp debug logs" This reverts commit 2c4f8407de9c4535565d092a4310576e6aab87b0. * internal/cli: turn off parallel import by default * internal/cli: update flag identation * CI: update comment * zero commit to trigger CI * internal/cli: rm witness prune flags --------- Co-authored-by: Pratik Patil <[email protected]> * emit event when write block in stateless node (ethereum#1840) * Address Biased Trie Cache (ethereum#1837) * Address-biased trie cache * Stop preload early * Print more stats * Increase cache size * Store by depth * More customizable * Add metrics * Fix key format * Async preload * Simplify * Fix linter * Allow interrupt * Remove free disk step in CI (ethereum#1843) Remove this step since the runner has 600G of disk space. * chore: bump kurtosis-pos (ethereum#1845) * chore: bump kurtosis-pos * chore: bump to v1.2.1 * PIP-74: state-sync txs inclusion (ethereum#1726) * first working version of new state sync tx * remove logs * fix lint * fix integration tests * test fixes * lint fix * fix parallel processor * type improvement and unit tests * remove duplicates * ignore data test output * fixing method calls and fields * build fix * remove bor filter for after hf blocks * sort logs just when necessary * ssTxs: fix receiptsHash mismatch (ethereum#1829) * ssTxs: fix receiptsHash mismatch * chore: remove block hash and number * revert: add block number * core(tx): fix Hash method for StateSyncTxType (ethereum#1830) * eth: fixes in receipt handling via p2p post HF (ethereum#1825) * eth: include bor receipts in ReceiptHash post HF * eth: rename to receiptListHash * eth: extrat typecasting logic for better testing, fix type matching issue * eth: add e2e tests for receipt delivery * eth/protocols/eth: apply HF logic while handling receipt query over eth69 * core: skip split receipts post HF * tests/bor: extend e2e test to check presence of state-sync in block * core/types: return nil for chainID() call over state-sync tx * internal/ethapi: handle bor txs and receipts post HF (ethereum#1834) * fix: cumulativeGasUsed in insertStateSyncTransactionAndCalculateReceipt (ethereum#1835) * fix: sort logs and remove duplicate append in Finalize (ethereum#1836) * fix: append tx only in FinalizeAndAssemble and use state instead of wrappedState * consensus/bor: sort logs before extracting state-sync logs * chore: revert statedb changes --------- Co-authored-by: Manav Darji <[email protected]> * chore: nit (ethereum#1838) * chore: typos * fix: lint * Renaming to Madhugiri HF * chore: nits * (fix): handle pointers to receipt list received via p2p * (chore): rename tests with HF name * chore: more nits * core: add blocktime in bor receipt logs (ethereum#1848) * core/types: derive bloom for bor receipts --------- Co-authored-by: kamuikatsurgi <[email protected]> Co-authored-by: Krishang Shah <[email protected]> Co-authored-by: Manav Darji <[email protected]> * core, miner, params, cmd: implement EIP-7823, EIP-7825 and EIP-7883 (ethereum#1842) * first working version of new state sync tx * remove logs * fix lint * fix integration tests * test fixes * lint fix * fix parallel processor * type improvement and unit tests * remove duplicates * ignore data test output * fixing method calls and fields * build fix * remove bor filter for after hf blocks * sort logs just when necessary * ssTxs: fix receiptsHash mismatch (ethereum#1829) * ssTxs: fix receiptsHash mismatch * chore: remove block hash and number * revert: add block number * core(tx): fix Hash method for StateSyncTxType (ethereum#1830) * eth: fixes in receipt handling via p2p post HF (ethereum#1825) * eth: include bor receipts in ReceiptHash post HF * eth: rename to receiptListHash * eth: extrat typecasting logic for better testing, fix type matching issue * eth: add e2e tests for receipt delivery * eth/protocols/eth: apply HF logic while handling receipt query over eth69 * core: skip split receipts post HF * tests/bor: extend e2e test to check presence of state-sync in block * core/types: return nil for chainID() call over state-sync tx * internal/ethapi: handle bor txs and receipts post HF (ethereum#1834) * fix: cumulativeGasUsed in insertStateSyncTransactionAndCalculateReceipt (ethereum#1835) * fix: sort logs and remove duplicate append in Finalize (ethereum#1836) * fix: append tx only in FinalizeAndAssemble and use state instead of wrappedState * consensus/bor: sort logs before extracting state-sync logs * chore: revert statedb changes --------- Co-authored-by: Manav Darji <[email protected]> * chore: nit (ethereum#1838) * chore: typos * fix: lint * Renaming to Madhugiri HF * chore: nits * (fix): handle pointers to receipt list received via p2p * (chore): rename tests with HF name * chore: more nits * core: implement eip7883 * core: implement eip7825 * fix lint * fix isOsaka condition * fix lint and add comment for int test failing * fix failing test / address comments * core: add blocktime in bor receipt logs (ethereum#1848) * core/types: derive bloom for bor receipts * prioritize ss hf / remove todo * fix lint * split precompiled contracts and addresses for madhugiri HF from osaka * revert err msg to align with geth * eth/gasestimator: check ErrGasLimitTooHigh conditions (ethereum#32348) This PR makes 2 changes to how [EIP-7825](ethereum#31824) behaves. When `eth_estimateGas` or `eth_createAccessList` is called without any gas limit in the payload, geth will choose the block's gas limit or the `RPCGasCap`, which can be larger than the `maxTxGas`. When this happens for `estimateGas`, the gas estimation just errors out and ends, when it should continue doing binary search to find the lowest possible gas limit. This PR will: - Add a check to see if `hi` is larger than `maxTxGas` and cap it to `maxTxGas` if it's larger. And add a special case handling for gas estimation execute when it errs with `ErrGasLimitTooHigh` --------- Co-authored-by: Gary Rong <[email protected]> * internal/ethapi: skip tx gas limit check for calls (ethereum#32641) This disables the tx gaslimit cap for eth_call and related RPC operations. I don't like how this fix works. Ideally we'd be checking the tx gaslimit somewhere else, like in the block validator, or any other place that considers block transactions. Doing the check in StateTransition means it affects all possible ways of executing a message. The challenge is finding a place for this check that also triggers correctly in tests where it is wanted. So for now, we are just combining this with the EOA sender check for transactions. Both are disabled for call-type messages. * internal/ethapi: use gas from gaspool for call defaults * eth/gasestimator: check for madhugiri HF * consensus/bor: honour MaxTxGas for system calls --------- Co-authored-by: Lucca Martins <[email protected]> Co-authored-by: kamuikatsurgi <[email protected]> Co-authored-by: Krishang Shah <[email protected]> Co-authored-by: Manav Darji <[email protected]> Co-authored-by: Minhyuk Kim <[email protected]> Co-authored-by: Gary Rong <[email protected]> Co-authored-by: Felix Lange <[email protected]> * (chore): update madhugiri block number for amoy and update consensus block time (ethereum#1851) * first working version of new state sync tx * remove logs * fix lint * fix integration tests * test fixes * lint fix * fix parallel processor * type improvement and unit tests * remove duplicates * ignore data test output * fixing method calls and fields * build fix * remove bor filter for after hf blocks * sort logs just when necessary * ssTxs: fix receiptsHash mismatch (ethereum#1829) * ssTxs: fix receiptsHash mismatch * chore: remove block hash and number * revert: add block number * core(tx): fix Hash method for StateSyncTxType (ethereum#1830) * eth: fixes in receipt handling via p2p post HF (ethereum#1825) * eth: include bor receipts in ReceiptHash post HF * eth: rename to receiptListHash * eth: extrat typecasting logic for better testing, fix type matching issue * eth: add e2e tests for receipt delivery * eth/protocols/eth: apply HF logic while handling receipt query over eth69 * core: skip split receipts post HF * tests/bor: extend e2e test to check presence of state-sync in block * core/types: return nil for chainID() call over state-sync tx * internal/ethapi: handle bor txs and receipts post HF (ethereum#1834) * fix: cumulativeGasUsed in insertStateSyncTransactionAndCalculateReceipt (ethereum#1835) * fix: sort logs and remove duplicate append in Finalize (ethereum#1836) * fix: append tx only in FinalizeAndAssemble and use state instead of wrappedState * consensus/bor: sort logs before extracting state-sync logs * chore: revert statedb changes --------- Co-authored-by: Manav Darji <[email protected]> * chore: nit (ethereum#1838) * chore: typos * fix: lint * Renaming to Madhugiri HF * chore: nits * (fix): handle pointers to receipt list received via p2p * (chore): rename tests with HF name * chore: more nits * core: add blocktime in bor receipt logs (ethereum#1848) * core/types: derive bloom for bor receipts * (chore): update madhugiri block for amoy * Change consensus block time to 1s at Madhugiri HF (ethereum#1852) --------- Co-authored-by: Lucca Martins <[email protected]> Co-authored-by: kamuikatsurgi <[email protected]> Co-authored-by: Krishang Shah <[email protected]> Co-authored-by: Jerry <[email protected]> * Completed reset prefetcher (ethereum#1853) * internal/ethapi: restore original RPC gas cap (ethereum#1856) * Restore original RPC gas cap * Fix test * chore: fix wrong function name in comment (ethereum#1841) Signed-off-by: reddaisyy <[email protected]> * Revert "(chore): update madhugiri block number for amoy and update consensus block time (ethereum#1851)" (ethereum#1857) This reverts commit 103f1f4. * params: bump version to v2.4.0-beta * Dont OpenTrie because HistoricDatabase doesnt implement trie (ethereum#1858) * chore: use 2^25 as the MaxTxGas (ethereum#1859) * params: bump version to v2.4.0-beta2 * chore: set madhugiri block for amoy and consensus block time (ethereum#1867) * chore: set madhugiri block for amoy and consensus block time * params: bump version * Disable txn indexer in stateless mode Since stateless nodes are using a different pruner from the regular pruner in geth, the transaction indexer will have problem with pruned blocks, resulting hanging goroutines in memory. This change prevents stateless node from running indexer on pruned blocks. * core: init PrecompiledAddressesMadhugiri * params: bump version * params: bump version for stable release * chore: set madhugiri block for mainnet and consensus block time * chore: fix lint * Include missing check of P256 on Amoy (ethereum#1877) * checks p256 instruction * lint fix * v2.5.0 candidate (ethereum#1878) * chore: MadhugiriPro hf * params: use stable tag * chore: set new HF heights * Reinforce Precompile Check on any new HF (ethereum#1881) * Include missing check of P256 on Amoy (ethereum#1877) * checks p256 instruction * lint fix * reinforce precompilers check --------- Co-authored-by: Lucca Martins <[email protected]> --------- Signed-off-by: reddaisyy <[email protected]> Co-authored-by: Raneet Debnath <[email protected]> Co-authored-by: Pratik Patil <[email protected]> Co-authored-by: Lucca Martins <[email protected]> Co-authored-by: Jerry <[email protected]> Co-authored-by: Krishang Shah <[email protected]> Co-authored-by: kamuikatsurgi <[email protected]> Co-authored-by: Manav Darji <[email protected]> Co-authored-by: Minhyuk Kim <[email protected]> Co-authored-by: Gary Rong <[email protected]> Co-authored-by: Felix Lange <[email protected]> Co-authored-by: reddaisyy <[email protected]> Co-authored-by: Angel Valkov <[email protected]>
This disables the tx gaslimit cap for eth_call and related RPC operations. I don't like how this fix works. Ideally we'd be checking the tx gaslimit somewhere else, like in the block validator, or any other place that considers block transactions. Doing the check in StateTransition means it affects all possible ways of executing a message. The challenge is finding a place for this check that also triggers correctly in tests where it is wanted. So for now, we are just combining this with the EOA sender check for transactions. Both are disabled for call-type messages.
This disables the tx gaslimit cap for eth_call and related RPC operations.
I don't like how this fix works. Ideally we'd be checking the tx gaslimit somewhere else, like in the block validator, or any other place that considers block transactions. Doing the check in StateTransition means it affects all possible ways of executing a message.
The challenge is finding a place for this check that also triggers correctly in tests where it is wanted.