tests: update test chain to amsterdam, regenerate fixtures - #867
MysticRyuujin wants to merge 3 commits into
Conversation
|
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 Failures no open PR addresses
Adjacent but not Amsterdam-related: #742 moves the Update 2026-08-28: this PR now pins go-ethereum master |
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.
b2e41e4 to
389b923
Compare
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
mkchain.sh:-lastfork amsterdam -length 60. Amsterdam activates at block 57, so the head and two more blocks are post-fork. Also writes the newbaloutput (per-block access lists, committed undertools/chain/balas a reference for EIP-7928 work).tools/go.mod: go-ethereum pinned to master (86696a8f, 2026-08-28). This picks up the RPC fixes that landed after glamsterdam-devnet-8:eth_estimateGasreturns used gas for plain transfers (eth/gasestimator: return used gas for plain transfer estimates go-ethereum#35592) and thedebug_traceCallblock parameter is optional (eth/tracers: make debug_traceCall block parameter optional go-ethereum#35583). The other post-devnet-8 commits change no fixture output.eth_simulateV1log counts include the EIP-7708 transfer logs.eth_estimateGas: the simple-transfer case now expects 15000. EIP-2780 prices a zero-value transfer to an existing account below 21000, and geth reports the used gas since eth/gasestimator: return used gas for plain transfer estimates go-ethereum#35592.testing_buildBlockV1andtesting_commitBlockV1(testing: add testing_commitBlockV1 spec and fixtures #801) sendslotNumber(EIP-7843) in the payload attributes; the buildBlockV1 schema documents the parameter.make fill; chain files copied intotests/.Verification:
make fillreports zero failures,make test(speccheck) passes with no known exceptions,make lintis 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.
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_simulateV1is 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 differentblockAccessListHashvalues 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.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-transferagainst 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_LIMITto 60M in rpc-compat when the fixture env omits it. Verified by rerun: it fixes nethermind's twotesting_buildBlockV1divergences on both fixture sets (main is now fully green for nethermind), and changes nothing else. The erigon and rethtesting_buildBlockV1failures 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
slotNumberpost-Amsterdam and their five fixtures are regenerated on this chain. go-ethereum bumped from the devnet-8 pin to master86696a8ffor the estimateGas and traceCall fixes above. Fill, speccheck, and lint all pass on the result.