clients: enable testing namespace and pin gas-limit target#1496
Merged
Conversation
Co-authored-by: Cursor <cursoragent@cursor.com>
…E_TARGET_GAS_LIMIT Without an explicit target, geth and Nethermind use different default gas-limit policies under the engine API: geth's CalcGasLimit moves the parent gas limit toward miner.gaslimit (default 60M) by 1/1024 per block, while Nethermind keeps the parent gas limit unchanged unless Blocks.TargetBlockGasLimit is set. With the rpc-compat chain head sitting at ~75M, the two clients diverge from block 1 onward, so blocks produced by testing_buildBlockV1 / testing_commitBlockV1 in rpc-compat replay get different hashes between clients and the strict-match tests fail on Nethermind. Wiring a new HIVE_TARGET_GAS_LIMIT env var through geth.sh (--miner.gaslimit) and Nethermind's mkconfig.jq (Blocks.TargetBlockGasLimit) makes both clients target the same ceiling. With the value set to 60000000 in execution-apis/tools/chain/forkenv.json, CalcGasLimit produces the same gas limit at every step on both clients, so the recorded rpc-compat fixtures replay byte-exact on both. Spec and cross-client fixtures: ethereum/execution-apis#801
This was referenced May 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two related fixes for the
rpc-compatsimulator so thetesting_*namespace fixtures fromexecution-apisreplay byte-exact across clients. The PR bundles three commits already on thetesting-namespacebranch:Add testing namespace to clients— addstestingto the JSON-RPC allowlist for besu, erigon, go-ethereum, nethermind, and reth. Without this,testing_buildBlockV1/testing_commitBlockV1requests getnamespace 'testing' is disablederrors.fix: restore HIVE_TERMINAL_TOTAL_DIFFICULTY authrpc block in geth.sh— restores the engine-API auth-rpc setup that the previous commit accidentally removed.clients/go-ethereum, clients/nethermind: pin gas-limit target via HIVE_TARGET_GAS_LIMIT(new in this PR) — plumbs a newHIVE_TARGET_GAS_LIMITenv var throughclients/go-ethereum/geth.sh(--miner.gaslimit) andclients/nethermind/mkconfig.jq(Blocks.TargetBlockGasLimit).Why the gas-limit pin matters
geth's
CalcGasLimitmoves the parent gas limit towardminer.gaslimit(default 60M) by 1/1024 per block. Nethermind keeps the parent gas limit unchanged unlessBlocks.TargetBlockGasLimitis set. Underrpc-compat's ~75M-gas-limit chain head, the two clients diverge from block 1 onward, so blocks produced bytesting_buildBlockV1/testing_commitBlockV1get different hashes per client and the strict-match tests fail on Nethermind. Pinning both clients to the same target makes them produce identical blocks.Companion PRs
HIVE_TARGET_GAS_LIMITdefinition: testing: add testing_commitBlockV1 spec, fixtures, and shared gas limit env execution-apis#801Test plan
rpc-compatagainst geth (Dockerfile.local): 216/216 passrpc-compatagainst Nethermind (master + the small nullability fix from Merge.Plugin: make testing_commitBlockV1 txRlps nullable NethermindEth/nethermind#11649): all 9testing_*tests pass; 7 unrelated pre-existing failures remain (6eth_simulateV1validation cases, 1txpool_content)