Skip to content

Releases: ethereum/execution-specs

tests-focil-devnet@v0.2.0

Pre-release

Choose a tag to compare

Description

Third release for FOCIL (EIP-7805) Devnet 0 (previous was tests-focil@v0.1.0).

What's Changed

Fill Fork

All filled tests in this release specify the "Bogota" network, instead of "Amsterdam" as previous releases.

The Amsterdam spec on top of which Bogota is based is the Glamsterdam Devnet-8 version.

Test Format

Changes to the Blockchain Engine fixture format

FixtureEngineNewPayload.status — removed

Previously an optional string that could carry INCLUSION_LIST_UNSATISFIED alongside the five PayloadStatusV1 values. That value was part of an earlier FOCIL draft. Consumers no longer need to special-case a sixth status — status is once again exactly the PayloadStatusV1 set, derived as before from the presence of validationError.

FixtureEngineNewPayload.inclusionListSatisfied — added
- inclusionListSatisfied: Optional[bool] (fork: Bogota)

Expected value of the inclusionListSatisfied field of PayloadStatusV2 returned by engine_newPayloadV6.

The field is present on every payload from Bogota on.

It mirrors PayloadStatusV2 and is orthogonal to validationError. A payload may be VALID while not satisfying its inclusion list at the same time. The value returned by the client in inclusionListSatisfied must be exactly equal to the one expected by the test for it to be considered as a pass.

New Tests

All blockchain and state tests from previous forks that were marked in #3337 now automatically generate an inclusion-list variant test where the last transaction of the last block is moved from the block to the inclusion list, with two different expectations:

  • If the transaction contained an error, or was otherwise not includable in the block, the block's inclusion list is expected to be validated as satisfied by the client.
  • If the transaction contained no errors and was includable in the block, the block's inclusion list is expected to be validated as unsatisfied by the client.

Both variants follow the same exact fixture format as described above.

Three bugs were found in the spec with these newly generated tests.

Spec Fixes

Spec bugs caught and fixed by tests mentioned in previous section:

  • Transactions with incorrect chain-id were still considered includable
  • Transactions with incorrect RLP encoding caused an exception in the inclusion list validator
  • Type-3 transactions were considered not-includable by default

tests-glamsterdam-devnet@v8.1.1

Pre-release

Choose a tag to compare

tests-glamsterdam-devnet@v8.1.1

This is a coverage only follow-up release targeting glamsterdam-devnet-8. It supersedes tests-glamsterdam-devnet@v8.1.0 and is built from the devnets/glamsterdam/8 branch.

The spec is identical to v8.1.0, no repricing or EIP changes, only new tests and client exception-mapping fixes.

The full scope is tracked in the test release tracker (#3311), so PTAL!

Full Changelog: https://github.com/ethereum/execution-specs/compare/tests-glamsterdam-devnet@v8.1.0...tests-glamsterdam-devnet@v8.1.1

tests-zkevm@v0.8.2

tests-zkevm@v0.8.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Aug 11:22
117dd1c

What's Changed

  • feat(zkevm): update geth branch for bench filling comparison by @jsign in #3366
  • refactor(zkevm): align SSZ capitalization by @jsign in #3372
  • feat(zkevm): automate zkevm benchmark filling releases by @jsign in #3389

tests-zkevm-benchmark@v0.8.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Aug 11:56
117dd1c

This is the first zkEVM benchmark fixture release. Contains Amsterdam compute benchmarks at 10M, 30M, and 60M gas.

This is a benchmark only release, based on tests-zkevm@v0.8.0 (no spec/tests changes).

tests-frames-devnet@v0.0.0

Pre-release

Choose a tag to compare

tests-frames-devnet@v0.0.0

This is the first test release targeting frames-devnet-0: EIP-8141 frame transactions on top of the glamsterdam-devnet-8 stack. It is built from the devnets/frames/0 branch.

The full scope, EIP PRs, and checklist are tracked in the test release tracker (#3368)!

Key Updates

  • EIP-8141: Frame transactions (type 0x06), implemented at the Bogota pseudo-fork — Amsterdam spec + EIP-8141, matching clients that activate frames at bogotaTime (#3047, spec pinned at EIPs@064f496)
  • The full test suite is filled at Bogota (~91k fixtures, all formats), not just the 8141 tests, for a better shot at finding bugs
  • In hive, the frames workflow runs the full set and frames-quick filters to the 8141 tests (hive-tests#79, hive-ui#82)

Expect follow-up releases as spec PRs land and coverage grows.

Full Changelog: https://github.com/ethereum/execution-specs/compare/tests-glamsterdam-devnet@v8.1.0...tests-frames-devnet@v0.0.0

tests-zkevm@v0.8.0

tests-zkevm@v0.8.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Aug 22:45
0695c34

This is a new release of projects/zkevm which:

  • Is based on tests-glamsterdam-devnet@v8.1.0.
  • Re-enables external t8n filling for stateless benchmark fixtures. (PR #3179)
  • Adds stateless-input tests for ordered blob versioned-hash validation. (PR #3234)
  • Aligns stateless payload and request types with EIP-7688 progressive SSZ. (PR #3248)
  • Exposes the full schema ID in stateless validation results and simplifies chain configuration. (PR #3278)
  • Preserves block extraData when constructing stateless artifacts. (PR #3292)
  • Uses progressive SSZ lists for witness state, codes, and public keys. (PR #3356)

Note that we skipped versioning v0.7.x, mostly to align with the base branch versioning (i.e. v0.8.x)

tests-glamsterdam-devnet@v8.1.0

Pre-release

Choose a tag to compare

tests-glamsterdam-devnet@v8.1.0

This is the second test release targeting glamsterdam-devnet-8. It supersedes tests-glamsterdam-devnet@v8.0.0 and is built from the devnets/glamsterdam/8 branch.

The only spec change is the revised repricing schedule below, everything else is additional test coverage. The full scope, EIP PRs, and checklist are tracked in the test release tracker (#3295)!

Key Updates

  • EIP-8038: revised gas schedule, EIPs#12083 & #3293
  • EIP-2780: Additional intrinsic-gas test coverage, #3266

Full Changelog: https://github.com/ethereum/execution-specs/compare/tests-glamsterdam-devnet@v8.0.0...tests-glamsterdam-devnet@v8.1.0

tests-glamsterdam-devnet@v8.0.0

Pre-release

Choose a tag to compare

tests-glamsterdam-devnet@v8.0.0

This is the first test release targeting glamsterdam-devnet-8. It supersedes the final glamsterdam-devnet-7 release (tests-glamsterdam-devnet@v7.2.1) and is built from the devnets/glamsterdam/8 branch.

Expect at least 2 follow up releases with additional test coverage.

The full scope, EIP PRs, and checklist are tracked in the test release tracker (#3167), so PTAL!

Key Updates

  • EIP-2780: Transfer log cost is folded into TX_VALUE_COST: create transactions with value now pay the full value cost where they previously paid only the transfer-log component (EIPs#11997, #3214)
  • EIP-8037: "Regular gas" is renamed to "execution gas", terminology only, no behaviour change (EIPs#11998, #3238, #3263)
  • EIP-8038: Access-list costs are derived as the cold cost minus WARM_ACCESS (3000 to 2900 per address and per storage key), making a prepaid entry gas-neutral with a cold access instead of 100 more expensive. EIP-2930's discount is intentionally not restored (EIPs PR TBD, #3271)
  • EIP-8070: The eth/72 sparse blobpool Engine API changes (engine_getBlobsV4) are now mandatory for all ELs, including discv5 advertisement. Tests are execute-only and run via execute + hive rather than shipping in the fixture tarballs (#2948, hive#1365)

EIP list

EIP Title
EIP-2780 Resource-based intrinsic transaction gas ⬆️
EIP-7708 ETH transfers emit a log
EIP-7778 Block Gas Accounting without Refunds
EIP-7843 SLOTNUM opcode
EIP-7928 Block-Level Access Lists
EIP-7954 Increase Maximum Contract Size
EIP-7976 Increase Calldata Floor Cost (64/64)
EIP-7981 Increase Access List Cost
EIP-7997 Deterministic Factory Predeploy
EIP-8024 Backward compatible SWAPN, DUPN, EXCHANGE
EIP-8037 State Creation Gas Cost Increase ⬆️
EIP-8038 State-access gas cost update ⬆️
EIP-8070 eth/72 - Sparse Blobpool 🆕
EIP-8246 Remove SELFDESTRUCT balance burn
EIP-8282 Builder Execution Requests
EIP-7610 Revert creation in case of non-empty storage

Key: ⬆️ updated since glamsterdam-devnet-7 · 🆕 newly mandatory / newly tested

Full Changelog: https://github.com/ethereum/execution-specs/compare/tests-glamsterdam-devnet@v7.2.1...tests-glamsterdam-devnet@v8.0.0

tests-glamsterdam-devnet@v7.2.1

Pre-release

Choose a tag to compare

tests-glamsterdam-devnet@v7.2.1

This release is equivalent to tests-glamsterdam-devnet@v7.2.0, with the addition of EngineX fixtures to allow for running same tests but with consume enginex.

The full scope can be found in the test release tracker (#3123), so PTAL!

Full Changelog: https://github.com/ethereum/execution-specs/compare/tests-glamsterdam-devnet@v7.1.0...tests-glamsterdam-devnet@v7.2.0

tests@v20.0.1

Choose a tag to compare

@github-actions github-actions released this 15 Jul 14:58
87aba1a

Patch BPO2 mainnet fixture release for tests@v20.0.0. This is a patch (Z) release under the tests@vX.Y.Z scheme: There are no consensus-impacting changes; this release covers test additions and other fixture modifications.

Highlights

  • feat(test-fill): pack Engine X pre-alloc groups by @danceratopz in #3122

    This removes 2179 pre-alloc groups from the blockchain_test_engine_x fixtures (from 5458 to 3279). The eels/consume-enginex simulator boots one execution client per pre-alloc group and reuses it across the group's tests, so the group count is the main driver of simulator runtime: this is roughly 40% fewer client boots per run. Boot-to-ready times below are measured from the client logs of a consume-engine run (one client per test), which set the per-group cost that is saved:

    Client Boot to ready Removed per run (x 2,179) At --sim.parallelism=4
    besu ~6.7 s ~4.0 h ~1.0 h
    erigon ~0.45 s ~16 min ~4 min
    ethrex ~0.08 s ~3 min ~45 s
    geth ~0.43 s ~15 min ~4 min
    nethermind ~3 s ~1.8 h ~27 min
    nimbus-el ~2.8 s ~1.7 h ~25 min
    reth ~0.83 s ~30 min ~8 min

    Boot times exclude Docker container start and stop overhead.

New Tests

  • feat(tests): access-list slot warmth survives a failed CREATE2 by @chfast in #3086

  • fix(tests): test tx max nonce at u64 boundary, add nonce overflow test by @spencer-tb in #3165

    Adds transaction nonce validation coverage from Frontier onwards: rejection at the U64.MAX_VALUE boundary and rejection of nonce overflow.

  • feat(tests): restore sstore_combinations as a hand-written test by @chfast in #3154

    Restores sstore_combinations as a hand-written Istanbul test (EIP-2200) after it was deleted accidentally by the ported-static regeneration sweep. Twelve orphaned ported_static filler stubs are removed and the matrix is reduced from 5187 to 774 cases per fork, with each reduction step trace-verified to keep the same SSTORE coverage.

Changed and Fixed Tests

  • chore(specs): reorder tx validity checks by @SamWilsn in #3036

    Reorders the transaction validity checks across the mainnet-fork specs (order only, no change to any state-transition result), and updates test_tx_nonce to emit state-test fixtures instead of blockchain-test fixtures.

Fixture Format Changes

  • feat(test-fill): pack Engine X pre-alloc groups by @danceratopz in #3122

  • fix(test-fixtures): emit chainId in state test fixture transaction by @spencer-tb in #3125

    State-test fixtures now emit chainId in the transaction, so client state-test consumers should expect the field on every state test.