Skip to content

tests@v20.0.2

Latest

Choose a tag to compare

@github-actions github-actions released this 27 Aug 09:04
abbe057

Patch (Z) Osaka/BPO2 mainnet fixture release for tests@v20.0.0 under the tests@vX.Y.Z scheme. There are no consensus-impacting changes, but this release changes the blockchain_tests_engine_x fixture format incompatibly, so it is not a drop-in replacement for v20.0.1, please bump EELS simulator versions to also use this tag.

Breaking EngineX Fixture Format Change

This release changes the blockchain_tests_engine_x fixture format and its pre-allocation groups (#3390). This is a breaking change necessary to restore missing fields to and sharpen field types in the fixture format. Please note: Earlier framework versions cannot load this release's engine x fixtures, and this framework version cannot load the engine x fixtures of earlier releases (v20.0.0, v20.0.1). Anyone consuming engine x fixtures must update the framework and the fixtures together.

  • Pre-alloc group files are now written in their final form: they include the genesis block header, preAccountCount and testCount, and no longer contain the internal environment object. Consumers read the genesis directly from the group file instead of deriving it. The group files in v20.0.0/v20.0.1 were unintentionally written in an internal builder form without the genesis header (a bug introduced in #2140) and are rejected by this version.
  • Group hashes are computed differently (an 8-byte truncated sha256 over an explicit canonical JSON encoding, replacing a process-stable Python hash), so every preHash and every file name under pre_alloc/ changes. Old pre_alloc folders cannot be mixed with new fixtures and must be regenerated.
  • postStateDiff is now populated and required on every engine x fixture. Earlier releases never wrote it due to a bug.
  • chainId in pre-alloc group files is now a zero-padded hex string ("0x01") instead of an integer, consistent with other fixture fields.

Other fixture formats (state_tests, blockchain_tests, blockchain_tests_engine) are unaffected, and .meta/index.json files written by earlier versions still load.

Tests

Difference to tests@v20.0.1: 9,844 added, 4,472 removed, 2,760 with changed content outside engine x, 179,175 identical; all 53,432 shared engine x fixtures changed (per the breaking changes explained above).

New Tests

  • Create collisions: expanded collision matrix, including balance-only collision cases, ~2,550 fixtures (#3425).
  • Opcodes: dynamic-destination JUMP/JUMPI tests with invalid jump targets, ~1,200 fixtures (#3153).
  • EIP-2681: transactions from accounts with nonce at or near the 2^64-1 limit, 84 fixtures (#3226).
  • EIP-7702: precompile calls from a delegated frame (#3420), and authority storage is kept when a delegation is cleared (#3421), 62 fixtures.
  • EIP-6110: noncanonical deposit ABI offsets, 6 fixtures (#3240).
  • Ported static tests: three enhancement rounds rework and re-enable tests across many st* modules, accounting for the remaining ~5,900 added and ~3,000 removed test ids (#3215, #3264, #3320).

Removed Tests

  • The EIP-7610 create collision tests: 1,442 fixtures under tests/paris/eip7610_create_collision/ (473 state, 473 blockchain, 248 engine, 248 engine x), plus the two ported static tests that depend on the check, are no longer in the release. EIP-7610 was declined for inclusion in Glamsterdam, no mainnet account has non-empty storage with empty code and nonce, and clients are dropping the storage collision check (#3417).

Changed Tests

2,760 fixtures outside engine x changed content:

  • ~2,690 fixtures re-fund test accounts with balances capped below 2^128 wei, changing the funded sender addresses with them: the EIP-4844 blob tests (2,088, blockchain and engine formats at Cancun, Prague and Osaka) and ported static bounds/stress tests (~600) (#3227, #3230).
  • 48 fixtures of the modified withdrawal and consolidation contract tests (EIP-7002, EIP-7251) now verify requests via the block header (#3235).
  • 18 EIP-7702 many-authorizations gas fixtures carry one fewer authorization (67 to 66): the count is derived from the draft EIP-8037 gas constants, which were revised in this window (#3271, #3293).
  • 3 fixtures of one PeerDAS max-blobs-per-tx test broaden the accepted exception to also allow TYPE_3_TX_BLOB_COUNT_EXCEEDED (#3192).

What's Changed

Full list of changes since v20.0.1, note that this release does not fill tests for Amsterdam:

  • chore(tests): fix joblib cache race in eip2537 BLS precompile tests by @danceratopz in #3174
  • chore(ci): don't fetch the benchmark assets submodule where unused by @danceratopz in #3175
  • chore(ci): only install a native build toolchain for PyPy jobs by @danceratopz in #3171
  • feat(test-cli): add --extract-opcode-count opcode tracing by @skylenet in #3124
  • fix(fill-stateful): verify receipt status when filling stateful fixtures by @jochem-brouwer in #3142
  • feat(ci): fill mainnet fixtures nightly, draft cached tests@ releases by @spencer-tb in #3100
  • refactor(spec-specs): organize gas logic in amsterdam EIP-8037/8038/2780 by @gurukamath in #3159
  • refactor(test-benchmark): align test suite with glam-devnet-7 spec by @LouisTsai-Csie in #3187
  • refactor(test-benchmark): organize stateful folder, add post-state validation, opcode count record by @LouisTsai-Csie in #3201
  • fix(ci): skip new-commit check on manual fixture release dispatches by @spencer-tb in #3202
  • feat(tests): add more EIP-2780 tests by @gurukamath in #3195
  • refactor(spec-tools): use testing pydantic models in t8n by @gurukamath in #2924
  • feat(tests): add EIP-2681 nonce-reaching-max tests by @chfast in #3226
  • refactor(test): Make max balance < 2^128 wei by @kevaundray in #3227
  • chore(tests): improve EIP-7708 coverage, checklist, and ref-spec pin by @spencer-tb in #3220
  • chore(tests): improve EIP-7843 coverage, checklist, and ref-spec pin by @spencer-tb in #3221
  • fix(tests): search for parent fork that differs in gas costs from current fork by @kevaundray in #3228
  • fix: skip ported static tests for amsterdam and later by @kevaundray in #3231
  • fix(consume): make release resolution robust to GitHub API rate limits by @danceratopz in #3182
  • tests(amsterdam): pin receipt status of top-frame OOG txs in multi-tx blocks by @qu0b in #3232
  • fix(tests): update withdrawal and consolidation tests to use Header for requests verification by @jsign in #3235
  • fix: max balance < 2^128 in ported static tests by @kevaundray in #3230
  • feat(tests): add ef_prefix deposit-halt mode to EIP-8037 state-gas test by @chfast in #3233
  • refactor(spec): make state interface fully implementation agnostic by @kevaundray in #3218
  • bug(spec-tools): make t8n daemon module importable on Windows by @Kumarutkarsh9470 in #3212
  • bug(test-eest): reconfigure output streams to UTF-8 on Windows consoles by @Kumarutkarsh9470 in #3209
  • fix(test-specs): parenthesize walrus when counting failing txs by @cuiweixie in #3190
  • fix(test-specs): use integer division for genesis base fee by @cuiweixie in #3189
  • fix(test-ci): Skip test_cli.py until #3241 is resolved by @marioevz in #3242
  • feat(tests): add EIP-7997 case where factory is not present at fork block by @jochem-brouwer in #3243
  • refactor(tests): Remove fork.gas_costs() reconstruction from Amsterdam EIP-8037/8038 tests by @marioevz in #3169
  • chore(tests): improve EIP-7981 coverage, checklist, and ref-spec pin by @spencer-tb in #3223
  • feat(test-types): Introduce SSZ model into base types by @RazorClient in #3196
  • refactor(ci): run geth benchmark CI only on benchmarks/** branches by @marioevz in #3249
  • chore(tests): improve EIP-7976 coverage, checklist, and ref-spec pin by @spencer-tb in #3222
  • feat(tests): EIP-7928 - cover system-address zero-tip coinbase BAL by @flcl42 in #3239
  • feat(specs,amsterdam): EIP-2780 - fold transfer log cost into value transfer cost by @gurukamath in #3214
  • fix(tests): enhance & un-skip Amsterdam ported static tests (Pt. 1) by @marioevz in #3215
  • fix(test-execute): prune fork-less items before evaluating filter_combinations by @spencer-tb in #3259
  • refactor(spec-specs,tests): rename EIP-8037 regular gas to execution gas by @spencer-tb in #3238
  • feat(tests): implement eip-8070 sparse blob pool tests by @LouisTsai-Csie in #2948
  • feat(test-benchmark): on-chain account verification by @LouisTsai-Csie in #3197
  • refactor(spec-specs,tests): rename REGULAR_PER_AUTH_BASE_COST to EXECUTION_PER_AUTH_BASE_COST by @spencer-tb in #3263
  • feat(tests): cover noncanonical deposit ABI offsets in eip6110 by @flcl42 in #3240
  • feat(tests): pin flat 2D inclusion gate semantics (no intrinsic subtraction) by @flcl42 in #3245
  • feat(tests): EIP-7778 admission gate uses pre-refund gas by @danceratopz in #2932
  • chore(ci): deduplicate temp-dir creation across Justfile recipes by @knQzx in #3191
  • test(spec-tests): add RLP canonical Uint decoding test by @Kumarutkarsh9470 in #3210
  • feat(tests): add dynamic-destination JUMP/JUMPI invalid-target tests by @chfast in #3153
  • feat(tests): add EIP-8037 spill-refund accounting coverage by @Marchhill in #3158
  • feat(tests): cover invalid-BAL content canonicality (no-op / missing / phantom-read entries) by @edg-l in #3170
  • chore(tests): improve EIP-8024 coverage, checklist, and ref-spec pin by @spencer-tb in #3224
  • feat(ci): Backport CI Workflow by @marioevz in #3262
  • feat(test-benchmark): add missing glam eip to benchmark by @LouisTsai-Csie in #3267
  • fix(ci): Rename backports branches by @marioevz in #3268
  • feat(spec-specs,tests): reprice EIP-8038 access-list costs to cold minus warm by @spencer-tb in #3271
  • feat(test-benchmark): enhance worst case coverage [backport forks/amsterdam] by @github-actions[bot] in #3277
  • feat(ci): fill benchmark tests at 1M gas on every PR by @spencer-tb in #3273
  • feat(tests): cover EIP-8282 builder request dequeues in block access lists by @spencer-tb in #3270
  • refactor(spec-specs): move priority-fee check to validate_transaction by @jevinjojo in #3056
  • feat(test-types): Fork-based State Commitment Property in Alloc by @marioevz in #3279
  • refactor(amsterdam): Re-factor Amsterdam + Preparation for EIP-8141 by @gurukamath in #3192
  • fix(test-execute): report each test as an individual hive test case by @spencer-tb in #3287
  • refactor(tests): remove dead static-filler infrastructure by @spencer-tb in #3283
  • feat(spec-specs,tests): apply revised EIP-8038 gas values by @spencer-tb in #3293
  • refactor(spec-specs): decode withdrawal amount as uint64 per EIP-4895 by @skbaek in #3186
  • fix(test-execute): fix execute for Amsterdam by @marioevz in #3300
  • perf(ci): run the PR docker-image cache gate on a GitHub-hosted runner by @danceratopz in #3185
  • feat(tests): enhance test coverage, add mainnet test for eip-2780 by @LouisTsai-Csie in #3266
  • feat(fork-types): add ExecutionGas and StateGas NewType wrappers to amsterdam EVM by @mandeepmourya007 in #3121
  • chore(tooling): add runner-selection guidance to the edit-workflow skill by @danceratopz in #3313
  • feat(test-rpc): add eth_getTransactionReceipt batching by @jochem-brouwer in #3298
  • feat(tests): add EIP-2780 coverage gap tests by @spencer-tb in #3318
  • feat(test-tests): add engine payload attribute and genesis parity tests by @spencer-tb in #3309
  • fix(test-execute): register per-test hive test cases with the shared client by @danceratopz in #3317
  • fix(tests): accept gas allowance error at EIP-7778 admission gate by @taratorio in #3330
  • chore(tooling): add test-docstring guidance to the write-test skill by @spencer-tb in #3328
  • refactor(test-rpc): unify batch request chunking by @LouisTsai-Csie in #3327
  • fix(tests): enhance & un-skip Amsterdam ported static depth-recursion tests (Pt. 2a) by @spencer-tb in #3264
  • fix(tests): account for value in EIP-8070 transaction gas by @flcl42 in #3344
  • chore(test-client-clis): update geth BAL exception mappings by @spencer-tb in #3347
  • chore(tests): derive blob tx gas from fork intrinsic cost by @spencer-tb in #3346
  • feat(test-logging,test-consume): add ms-precision lifecycle logging to consume enginex by @danceratopz in #3306
  • fix(tests): enhance & un-skip Amsterdam ported static create-OOG tests (Pt. 2b) by @spencer-tb in #3320
  • chore(tests): mark memory heavy tests as bigmem by @spencer-tb in #3360
  • refactor(testing): capitalize SSZ in class names by @spencer-tb in #3354
  • refactor(spec-specs): split _prepare_data out of _prepare_trie by @spencer-tb in #3353
  • fix(spec-specs): carry excess blob gas across fork transitions by @spencer-tb in #3352
  • fix(tests): use well-formed versioned hashes in getBlobs negative tests by @spencer-tb in #3359
  • fix(tests): accept gas-used divergence in BAL omitted-slot-change test by @spencer-tb in #3357
  • fix(consume): emit genesis slotNumber as hex string like all other fields by @spencer-tb in #3369
  • feat(test-specs): Allow specs to fill same fixture format more than once, add inclusion_test marker by @marioevz in #3337
  • fix(spec-tools,testing): move evm_tools into the testing package by @gurukamath in #3307
  • fix(consume): map reth BAL account-miss and item-cost rejection messages by @spencer-tb in #3371
  • perf(test-rpc, test-fill): fetch a block's receipts with single eth_getBlockReceipts by @jochem-brouwer in #3345
  • perf(test-forks): memoize per-fork gas costs by @jochem-brouwer in #3303
  • refactor(client-clis): bound the opcode-count trace time explicitly by @skylenet in #3367
  • refactor(test-benchmark): remove potential duplicated cases by @LouisTsai-Csie in #3374
  • bug(test-base-types): Conversion methods use ValueError by @marioevz in #3394
  • feat(tests): add BAL storage slot numeric ordering test by @spencer-tb in #3382
  • chore(client-clis): map reth BAL slot-miss rejection by @mattsse in #3392
  • feat(tests): EIP-7928 - union reverted storage reads across transactions by @chfast in #3399
  • fix(test-evm-tools): restore state test compatibility by @danceratopz in #3409
  • feat(test-specs):add ssz model into the engine payload class by @RazorClient in #3294
  • feat(tests): EIP-7702 - keep authority storage when clearing a delegation by @chfast in #3421
  • feat(tests): EIP-7702 - precompile calls from a delegated frame by @chfast in #3420
  • test(spec-specs): add unit tests for get_last_256_block_hashes by @shubham5080 in #3397
  • perf(test-client-cli): skip redundant BAL hash by @jochem-brouwer in #3430
  • perf(test-type): cache ecrecover and optimize function calls to ecrecover by @jochem-brouwer in #3431
  • chore(tests): remove EIP-7610 create collision tests by @spencer-tb in #3417
  • fix(test-execute): ignore tests/spec_tools during collection by @danceratopz in #3450
  • feat(tests): expand create collision matrix and add balance-only cases by @danceratopz in #3425
  • feat(tests): EIP-8037 - consume spilled state gas along a halt chain by @chfast in #3423
  • feat(tests): EIP-8037 - pin gas on the unasserted child-halt spill tests by @spencer-tb in #3427
  • refactor(tests): EIP-8037 test gas calculation logic and post state verification by @LouisTsai-Csie in #3383
  • fix(evm-tools): accept empty hex transaction values by @danceratopz in #3424
  • chore(tests): add genesis block header field BAL checklist by @shubham5080 in #3416
  • refactor(test-benchmark): tidy SSTORE storage benchmark by @chfast in #3442
  • feat(test-fill): Optimistic grouping flag by @marioevz in #3390

New Contributors

Full Changelog: https://github.com/ethereum/execution-specs/compare/tests@v20.0.1...tests@v20.0.2