Skip to content

tests: update test chain to amsterdam, regenerate fixtures - #867

Open
MysticRyuujin wants to merge 3 commits into
ethereum:mainfrom
MysticRyuujin:amsterdam-chain
Open

MysticRyuujin wants to merge 3 commits into
ethereum:mainfrom
MysticRyuujin:amsterdam-chain

Conversation

@MysticRyuujin

@MysticRyuujin MysticRyuujin commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Bumps the test chain from Osaka+BPO2 to Amsterdam and regenerates all fixtures, following the Osaka bump in #846. This gives the fixtures post-Amsterdam blocks, which the callTracer spec (#855) and the EIP-8037 tracing work (#852) build on.

The hive side is merged: ethereum/hive#1589 added Glamsterdam support to hivechain, and ethereum/hive#1587 added the calltree contract and transaction scenarios. The committed chain regenerates byte-for-byte from current hive master.

Changes

Verification: make fill reports zero failures, make test (speccheck) passes with no known exceptions, make lint is clean.

Cross-client: full rpc-compat runs on 2026-08-25 against the glamsterdam-devnet-8 images (the newest devnet set with published images for all six clients), once on main's fixtures and once on this PR's, same images both times. 238 tests per client. The runs predate the 2026-08-28 update below; the fixture set was the same except for the five testing_commitBlockV1 tests, txpool_content, and estimate-simple-transfer.

client main this PR
go-ethereum 238 238
nethermind 238 179
erigon 238 169
besu 175 163
reth 209 155
ethrex 47 46

The new failures measure Glamsterdam implementation status, not fixture problems. A failing test means "differs from the geth-generated fixture", not "the client is wrong". Where they land:

  • eth_simulateV1 is most of it (erigon 64, nethermind 57, reth 51, besu 11), concentrated in the identity fields of simulated blocks. The four clients that run it compute different blockAccessListHash values for the same simulated block. Nothing specifies the access list of a simulated block today; that needs an execution-apis decision.
  • eth_estimateGas: geth returned 21000 for a simple transfer, nethermind 15000. Resolved: eth/gasestimator: return used gas for plain transfer estimates go-ethereum#35592 makes geth report the used gas, and the fixture now expects 15000. How estimates report EIP-7778 two-dimensional gas beyond the plain-transfer case is still open.
  • testing_buildBlockV1: erigon and reth do not build Amsterdam blocks yet.
  • eth_config: reth and nethermind differ from geth at an Amsterdam head.
  • ethrex rejects the chain at block 1 (it supports post-merge networks only, Exit the client if on a pre merge fork lambdaclass/ethrex#5504); unchanged from main.

Known issue: hive's scheduled rpc-compat runs use release/master client builds. Against those, the post-Amsterdam tail of this chain fails until clients ship Glamsterdam, the same situation the Osaka bump created while Fusaka rolled out. Runs against the devnet images (table above) are the meaningful signal in the meantime. Note the devnet-8 geth image predates ethereum/go-ethereum#35592, so it fails estimate-simple-transfer against the current fixtures; geth built from master passes.

Update 2026-08-25: the table includes ethereum/hive#1585 (merged 2026-08-25), which defaults HIVE_TARGET_GAS_LIMIT to 60M in rpc-compat when the fixture env omits it. Verified by rerun: it fixes nethermind's two testing_buildBlockV1 divergences on both fixture sets (main is now fully green for nethermind), and changes nothing else. The erigon and reth testing_buildBlockV1 failures on this chain remain; they are Amsterdam block-building gaps, not gas-limit defaults.

Update 2026-08-28: rebased on main, which brought in the testing_commitBlockV1 spec and fixtures (#801). The commitBlockV1 generators now send slotNumber post-Amsterdam and their five fixtures are regenerated on this chain. go-ethereum bumped from the devnet-8 pin to master 86696a8f for the estimateGas and traceCall fixes above. Fill, speccheck, and lint all pass on the result.

@MysticRyuujin

MysticRyuujin commented Aug 25, 2026

Copy link
Copy Markdown
Contributor Author

Related PRs, and what merging each would do to the failure table above.

Overlapping this PR

Building on this PR

Merged context, exercised by this chain for the first time: #726 / #727 / #794 (EIP-7928 BAL methods and alignment) and #851 (BAL getter semantics). geth still returns -32601 for eth_getBlockAccessList and debug_getRawBlockAccessList, so the getters stay unfixtured.

Failures no open PR addresses

Adjacent but not Amsterdam-related: #742 moves the debug_getRawReceipts test to a post-Byzantium block, which would clear reth's pre-Byzantium receipt failures after a refill.

Update 2026-08-28: this PR now pins go-ethereum master 86696a8f instead of devnet-8 and is rebased on main, so it also carries the regenerated testing_commitBlockV1 fixtures from #801. Details in the PR description.

rjl493456442 pushed a commit to ethereum/go-ethereum that referenced this pull request Aug 28, 2026
The plain-transfer shortcut in the gas estimator executes the call with
a 21,000 gas limit and returns 21,000 on success. After Amsterdam,
EIP-2780 prices these calls below 21,000: a zero-value call to an
existing account costs 15,000 and a self transfer costs 12,000. The
shortcut hides that and `eth_estimateGas` over-reports by up to 75%.

This change returns the used gas from the trial execution instead of the
constant. A plain transfer runs no code and gets no refunds, so its used
gas is the minimum gas limit that succeeds. Before Amsterdam the used
gas is exactly 21,000, so behavior there does not change.

Cross-client context, measured with hive rpc-compat on the Amsterdam
fixtures from ethereum/execution-apis#867: nethermind and erigon return
the exact EIP-2780 minimum (15,000), besu returns 15,159, geth and reth
return the 21,000 floor.

Includes a regression test at the RPC layer: 21,000 / 15,000 / 12,000
for the three transfer shapes under an Amsterdam config. The test fails
without the estimator change.
Pin go-ethereum to glamsterdam-devnet-8 (matching hive master) and move
mkchain to -lastfork amsterdam. Adapt the affected generators: EIP-7708
transfer logs in eth_simulateV1 log counts, EIP-2780 intrinsic repricing
in eth_estimateGas, EIP-7843 slotNumber in testing_buildBlockV1, and fund
the complete-eth-sends recipient so account-creation state gas does not
push the 21000-gas send out of gas.
Chain generated from upstream hivechain (hive master). Amsterdam
activates at block 57 of 60. All fixtures refilled; block hashes
change, so the whole tree drifts.
Picks up the post-glam8 RPC fixes: estimateGas returns used gas for
plain transfers (#35592), debug_traceCall block param optional (#35583),
eth_config skips unconfigured forks (#35553). The testing_commitBlockV1
generators from ethereum#801 now send slotNumber post-Amsterdam, and the plain
transfer estimate expectation is 15000 per EIP-2780.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant