Releases: ethereum/execution-specs
Release list
tests-focil-devnet@v0.2.0
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
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-benchmark@v0.8.2
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
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 theBogotapseudo-fork — Amsterdam spec + EIP-8141, matching clients that activate frames atbogotaTime(#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
framesworkflow runs the full set andframes-quickfilters 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
This is a new release of projects/zkevm which:
- Is based on tests-glamsterdam-devnet@v8.1.0.
- Re-enables external
t8nfilling 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
extraDatawhen 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
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
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 2900per 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 viaexecute+ 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
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
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
2179pre-alloc groups from theblockchain_test_engine_xfixtures (from5458to3279). Theeels/consume-enginexsimulator 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 roughly40%fewer client boots per run. Boot-to-ready times below are measured from the client logs of aconsume-enginerun (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=4besu ~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
CREATE2by @chfast in #3086 -
fix(tests): test tx max nonce at
u64boundary, add nonce overflow test by @spencer-tb in #3165Adds transaction nonce validation coverage from Frontier onwards: rejection at the
U64.MAX_VALUEboundary and rejection of nonce overflow. -
feat(tests): restore
sstore_combinationsas a hand-written test by @chfast in #3154Restores
sstore_combinationsas a hand-written Istanbul test (EIP-2200) after it was deleted accidentally by the ported-static regeneration sweep. Twelve orphanedported_staticfiller stubs are removed and the matrix is reduced from5187to774cases per fork, with each reduction step trace-verified to keep the sameSSTOREcoverage.
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_nonceto 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
chainIdin the transaction, so client state-test consumers should expect the field on every state test.