Skip to content

Releases: ethereum/execution-specs

tests-bal@v7.1.1

13 May 15:34
bcb8dc5

Choose a tag to compare

tests-bal@v7.1.1 Pre-release
Pre-release

This release targets bal-devnet-7 containing a small patch on v7.1.0. This is a non breaking one line spec update with 2 new additional test cases.

See v7.1.0 release notes for the full set of bal-devnet-7 spec changes.

EIP-8037 Changes

EIP-7702 Auth Refund on Idempotent Delegation Clear

Spec + tests (#2848): Extend the auth state gas refund to the clear path. Caught by @rakita during revm impl review.

Full Diff: https://github.com/ethereum/execution-specs/compare/tests-bal@v7.1.0...tests-bal@v7.1.1

tests-bal@v7.1.0

13 May 10:40

Choose a tag to compare

tests-bal@v7.1.0 Pre-release
Pre-release

This release targets bal-devnet-7 superseding the v7.0.0 release. It aims to resolve the set of spec changes for EIP-8037 aligning with EIPs#11573, EIPs#11616, EIPs#11611, EIPs#11606 & #2804:

  • EIP-8037 cost_per_state_byte: raised from 1174 to 1530 (fixed value).
  • EIP-8037 state byte parameters updated:
    • STATE_BYTES_PER_NEW_ACCOUNT from 112 to 120,
    • STATE_BYTES_PER_STORAGE_SET from 32 to 64,
    • STATE_BYTES_PER_AUTH_BASE stays at 23.
  • SYSTEM_CALL_GAS_LIMIT raised from 30M to 30M + STATE_BYTES_PER_STORAGE_SET * CPSB * SYSTEM_MAX_SSTORES_PER_CALL, where the extra gas added to the 30M is set as the state gas reservoir for system contract calls. SYSTEM_MAX_SSTORES_PER_CALL = 16.
  • Tx create halt/revert intrinsic state gas refunds, create address collision regular gas burn, 0 to x to 0 SSTORE refund isolation, and EIP-7702 intrinsic state gas refund bugs from bal-devnet-6 are all fixed.
  • 🆙 New in v7.1.0: all SELFDESTRUCT state gas refunds have been removed from EIP-8037.
  • 🆙 New in v7.1.0: EIP-7702 auth refund refill on non-empty code hash delegation pointer (small case missed in v7.0.0).
  • 🆙 New in v7.1.0: 300+ extra tests fixed from the ported static skip list (#2839).

Note: this release is mirrored on execution-spec-tests.

Future Considerations

  • EIP-8038 param alignment. The remaining piece of EIPs#11616 (regular-gas charge alignment with ACCOUNT_WRITE, STORAGE_WRITE, CALL_VALUE, COLD_ACCOUNT_ACCESS) is deferred until EIP-8038 lands in a devnet.
  • Intrinsic state gas restructuring. Intrinsic state gas charges may be restructured in the next devnet with the inclusion of EIP-2780, likely shifting the intrinsic regular/state gas split:
    • STATE_BYTES_PER_NEW_ACCOUNT * CPSB for contract creation txs
    • (STATE_BYTES_PER_NEW_ACCOUNT + STATE_BYTES_PER_AUTH_BASE) * CPSB for EIP-7702 authorizations

This bal-devnet-7 will be the last bal- prefixed devnet. Future devnet releases will be prefixed with glamsterdam-.

EIP-8037 Spec Related Changes

Remove SELFDESTRUCT State Gas Refunds (new in v7.1.0)

Spec + tests (#2845): All SELFDESTRUCT state gas refunds are removed from EIP-8037.

Rationale: SELFDESTRUCT is already deprecated and slated for removal. Refunding state gas for SD is a small win on state savings but creates ongoing incentive to keep using a deprecated opcode and complicates the 2D gas accounting model.

Parameter Updates

Spec + tests (#2827): Update COST_PER_STATE_BYTE from 1174 to 1530, STATE_BYTES_PER_NEW_ACCOUNT from 112 to 120, STATE_BYTES_PER_STORAGE_SET from 32 to 64. Tests across the suite are updated to account for these increases.

Increase the System Call Gas Limit

Spec + test framework (commit 7b3e8016): Bumps the system transaction gas limit to 30M + STATE_BYTES_PER_STORAGE_SET * CPSB * SYSTEM_MAX_SSTORES_PER_CALL. The extra portion goes into state_gas_reservoir, so state gas growth alone cannot OOG a system call. This is more for future proofing, if we ever increase the state gas costs or cost per state byte alongside block gas limit bumps.

Top Level Halt State Gas Refunds

Spec + tests (#2815): On a top level exceptional halt, refund the full state_gas_used including any portion that spilled into gas_left (the regular/shared gas pool) back to the reservoir.

EIP-7702 Refunds

Spec + tests (#2816): Include the EIP-7702 authorization state gas refund in block.state_gas_used so block level 2D gas accounting is consistent with the per tx gas accounting.

EIP-7702 Auth Refund Alignment (new in v7.1.0)

Spec + tests (#2836): When an EIP-7702 authorization targets a delegation pointer with non-empty code hash, refill the STATE_BYTES_PER_AUTH_BASE * CPSB state gas to the reservoir. This is the small case missed in v7.0.0 and aligns with point 1 of EIPs#11616. The remaining EIP-8038 parameter-alignment changes from EIPs#11616 are deferred until 8038 lands in a devnet.

Tx Create Halt/Revert Intrinsic Refunds

Spec + tests (#2823): Tx-level CREATE failures (revert/halt) didn't refund the intrinsic NEW_ACCOUNT * CPSB state gas charge back to the reservoir. Now it is refunded.

Isolated 0 to x to 0 Refunds

Spec + tests (#2823): The 0 to x to 0 state gas charge was propagated as a refund when the same-frame revert should have refunded it back to the reservoir. Now it's isolated.

Create Address Collision Burned Regular Gas

Spec + tests (#2823): Create address collisions burned regular gas that wasn't counted in block regular gas. Now it's counted.

EIP List

EIP Title Status
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-8024 Backward compatible SWAPN, DUPN, EXCHANGE
EIP-8037 State Creation Gas Cost Increase ❗ ⬆️

Full Changelog: https://github.com/ethereum/execution-specs/compare/tests-bal@v7.0.0...tests-bal@v7.1.0

tests-bal@v7.0.0

11 May 13:58

Choose a tag to compare

tests-bal@v7.0.0 Pre-release
Pre-release

This release targets bal-devnet-7, following up from bal-devnet-6 during the Soldøgn interop. It aims to resolve the final set of spec changes for EIP-8037 aligning with EIPs#11573, EIPs#11616, EIPs#11611, EIPs#11606 & #2804:

  • EIP-8037 cost_per_state_byte: raised from 1174 to 1530 (fixed value).
  • EIP-8037 state byte parameters updated:
    • STATE_BYTES_PER_NEW_ACCOUNT from 112 to 120,
    • STATE_BYTES_PER_STORAGE_SET from 32 to 64,
    • STATE_BYTES_PER_AUTH_BASE stays at 23.
  • SYSTEM_CALL_GAS_LIMIT raised from 30M to 30M + STATE_BYTES_PER_STORAGE_SET * CPSB * SYSTEM_MAX_SSTORES_PER_CALL, where the extra gas added to the 30M is set as the state gas reservoir for system contract calls. SYSTEM_MAX_SSTORES_PER_CALL = 16.
  • Tx create halt/revert intrinsic state gas refunds, create address collision regular gas burn, 0 to x to 0 SSTORE refund isolation, and EIP-7702 intrinsic state gas refund bugs from bal-devnet-6 are all fixed in this release.

Note: this release is mirrored on execution-spec-tests, so no infra update is required for now.

Future Considerations

Intrinsic state gas is the state dimension portion charged at the start of transaction validation. These charges may be restructured in the next devnet with the inclusion of EIP-2780, likely shifting the intrinsic regular/state gas split:

  • STATE_BYTES_PER_NEW_ACCOUNT * CPSB for contract creation txs
  • (STATE_BYTES_PER_NEW_ACCOUNT + STATE_BYTES_PER_AUTH_BASE) * CPSB for EIP-7702 authorizations

This will be the last bal- prefixed devnet release. Future devnet releases will be prefixed with glamsterdam-.

EIP-8037 Spec Related Changes

Parameter Updates

Spec + tests (#2827): Update COST_PER_STATE_BYTE from 1174 to 1530, STATE_BYTES_PER_NEW_ACCOUNT from 112 to 120, STATE_BYTES_PER_STORAGE_SET from 32 to 64. Tests across the suite are updated to account for these increases.

Increase the System Call Gas Limit

Spec + test framework (commit 7b3e8016): Bumps the system transaction gas limit to 30M + STATE_BYTES_PER_STORAGE_SET * CPSB * SYSTEM_MAX_SSTORES_PER_CALL. The extra portion goes into state_gas_reservoir, so state gas growth alone cannot OOG a system call. This is more for future proofing, if we ever increase the state gas costs or cost per state byte alongside block gas limit bumps.

Top Level Halt State Gas Refunds

Spec + tests (#2815): On a top level exceptional halt, refund the full state_gas_used including any portion that spilled into gas_left (the regular/shared gas pool) back to the reservoir.

EIP-7702 Refunds

Spec + tests (#2816): Include the EIP-7702 authorization state gas refund in block.state_gas_used so block level 2D gas accounting is consistent with the per tx gas accounting.

Tx Create Halt/Revert Intrinsic Refunds

Spec + tests (#2823): Tx-level CREATE failures (revert/halt) didn't refund the intrinsic NEW_ACCOUNT * CPSB state gas charge back to the reservoir. Now it is refunded.

Isolated 0 to x to 0 Refunds

Spec + tests (#2823): The 0 to x to 0 state gas charge was propagated as a refund when the same-frame revert should have refunded it back to the reservoir. Now it's isolated.

Create Address Collision Burned Regular Gas

Spec + tests (#2823): Create address collisions burned regular gas that wasn't counted in block regular gas. Now it's counted.

Tx Created Contracts Destroyed In Same Tx

Spec + tests (#2828): If a creation txs initcode SELFDESTRUCTs the new contract in the same tx, refund the intrinsic NEW_ACCOUNT * CPSB state gas so the tx doesn't over charge for an account that never persists.

EIP List

EIP Title Status
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-8024 Backward compatible SWAPN, DUPN, EXCHANGE
EIP-8037 State Creation Gas Cost Increase ❗ ⬆️

Key: ⬆️ updated since bal-devnet-6

tests-benchmark@v0.0.9

05 May 05:24
c48ecea

Choose a tag to compare

Pre-release

Summary

  • Expanded benchmark coverage with worst-case scenarios across BAL, bloatnet ERC20, deep-branch SLOAD, and precompile categories.
  • Refactored the benchmark framework: switched test collection to testpath, introduced generic ERC20 and precompile macros, and added repricing marker support for stateful benchmarks.
  • Fixed multiple fill and gas accounting issues, improving stability across both execute-remote and fill modes.

Changes

  • Added new worst-case benchmark tests covering bloatnet ERC20 stubs (various storage sizes), BAL optimization strategies, runtime-delegated EIP-7702, deep-branch stateful SLOAD, prefetcher performance, and EOA query scenarios.
  • Introduced a precompile macro and an uncacheable precompile benchmark; added missing target opcodes for SMOD, MOD, and EXP.
  • Refactored ERC20 benchmarks into a generic implementation, parametrized SLOAD-before-SSTORE scenario in approve, and switched mixed SLOAD/SSTORE benchmarks to runtime gas checking.
  • Improved stateful benchmark infrastructure: added cache strategy support, repricing marker support, parametrized stubs via --address-stubs, and migrated test collection from marker-based to testpath-based.
  • Added transaction status verification and ensured precompile benchmarks avoid cache hits across runs.
  • Hardened gas accounting and fill behavior: fixed test_account_access for non-zero values, mint/approve fill issues, subcall OOG handling.
  • Re-enabled benchmark tests in the test case reference docs and added --include-benchmark to the checklist tooling.

Notes

  • Removed unused stateful benchmarks and unused bloatnet factory entries from mainnet stubs as part of cleanup.
  • Excluded ecpairing zero-tx case from the benchmark path after fix.

Asset

  • Genesis files
  • Fixtures

v2.20.0 - BPO2

19 Feb 19:07
2004296

Choose a tag to compare

What's Changed

  • fix(ci): handle new branch push and other triggers by @gurukamath in #1913
  • feat(test-client-clis): Optimize fill for non-bpo forks by @marioevz in #1924
  • fix(test): align blob params with specs for Amsterdam by @fselmo in #1926
  • chore: correct has_compute_requests_hash description by @jihoonsong in #1929
  • feat(tests): add test "framework" for BN254 precompiles by @chfast in #1871
  • Fix/broken links by @Praniti1594 in #1750
  • feat(tests): add 7702 auth chain id 0x00 test (invalid) by @jochem-brouwer in #1905
  • feat(benchmarks): fix benchmark for warm SSTORE/SLOAD for Osaka by @jsign in #1915
  • feat(benchmarks): fix benchmark for SELFDESTRUCT of existing accounts for Osaka by @jsign in #1904
  • feat(benchmarks): fix benchmark for BALANCE scenario for Osaka by @jsign in #1862
  • refactor(test-cli-consume,rpc): use tenacity for retry logic by @danceratopz in #1930
  • fix(test-benchmark): failing auth benchmark test for Osaka compatibility by @LouisTsai-Csie in #1927
  • feat(benchmarks): fix bytecode attack for CALL-like opcodes to work in Osaka by @jsign in #1850
  • feat(benchmarks): fix benchmark for SELFDESTRUCT of created accounts for Osaka by @jsign in #1906
  • feat(benchmarks): fix benchmark for SELFDESTRUCT of initcode contracts for Osaka by @jsign in #1914
  • chore(tests): fix linting issue by @LouisTsai-Csie in #1944
  • feat(tests): port basic BN254 ecadd tests by @chfast in #1935
  • feat(tests): add new critical test cases for BN254 input validation by @chfast in #1948
  • feat(test-benchmark): implement opcode count verification by @LouisTsai-Csie in #1869
  • chore(docs): fix spelling and grammar errors by @maradini77 in #1950
  • fix(evm): CLZ is not UndefinedOpcodes by @pdobacz in #1970
  • feat(test-benchmark): fixed precompile count support by @LouisTsai-Csie in #1955
  • chore(test-*): fix typos in packages/testing/ by @danceratopz in #1969
  • feat(test-benchmark): add missing fuzzy-compute configs by @LouisTsai-Csie in #1956
  • refactor(test-benchmark): update repricing label by @LouisTsai-Csie in #1980
  • chore(tooling): run codespell on all files; improve skip config by @danceratopz in #1966
  • chore(spec-tests): fix typos in tests/ by @danceratopz in #1968
  • chore(ci): add gas benchmark value 5 back to feature releases by @spencer-tb in #1982
  • bug(test-benchmark): update code padding in fixed opcode count mode by @LouisTsai-Csie in #1983
  • feat(test): Turn on filling static tests for bal releases by @fselmo in #1973
  • fix(test): Increase balance for blob test fails w/ larger blob params by @fselmo in #1975
  • bug(test-cli): fix extract config by @marioevz in #1947
  • chore(test-benchmark): remove seperate pre alloc groups by @spencer-tb in #1986
  • feat(benchmark): add EXTCODESIZE bytecode size benchmark for cold access testing by @CPerezz in #1961
  • chore(test-types): Add extra="forbid" to CamelModel; fix errors by @fselmo in #1989
  • feat(tests): Expand 7702 tests by @pdobacz in #1974
  • enhance(ci): improve benchmark workflows by @spencer-tb in #1853
  • feat(test-execute): Implement pre.deterministic_deploy_contract by @marioevz in #1934
  • fix(tests): Invalid parameter for Account in test by @marioevz in #2001
  • fix(test-types): Loosen pydantic strictness on internal pydantic models by @fselmo in #2000
  • feat(ci,deps): lint workflow files; check deps are pinned by @danceratopz in #2005
  • chore(test-fill): fix pytest warnings in console test summary by @danceratopz in #1993
  • fix(test-tests): prevent race condition in gentest tests w/xdist by @danceratopz in #2009
  • feat(test-execute): tx batching for execute remote by @LouisTsai-Csie in #1907
  • feat(test-benchmark): add missing opcode and configs by @LouisTsai-Csie in #2006
  • feat(test-benchmark): add missing precompile config by @LouisTsai-Csie in #2003
  • feat(test-tests) add testcase for calldata/codecopy OOG by @bshastry in #2012
  • chore(test-forks): update Osaka and BPO fork deployment status by @spencer-tb in #2013
  • refactor(test-benchmark): relabel repricing marker by @LouisTsai-Csie in #2015
  • chore(ci): reduce docker hub rate limit usage in hive-consume workflow by @spencer-tb in #2004
  • fix(test-types): format Transaction values as readable hex-strings instead of raw bytes (#1803) by @felix314159 in #1803
  • fix(test-types,ci): use evm in packages/test unit tests & fix TransactionReceipt by @danceratopz in #2014
  • feat(benchmark): support tx gas limit cap in stateful benchmarks by @CPerezz in #1962
  • feat(testing/forks): Implement bytecode.gas_cost(fork) by @marioevz in #2002
  • feat(specs,tests): Implement EIP-7928 Block-Level Access Lists by @fselmo in #1719
  • chore(spec-specs): fix typos in src/ethereum/ by @danceratopz in #1965
  • chore(ci): add all EL clients to hive master config by @danceratopz in #2034
  • chore: fix PR template links to execution-specs by @danceratopz in #2035
  • fix(docs): fix reference to master branch; use mainnet instead by @danceratopz in #2037
  • feat(benchmarks): fix bytecode attack for EXT-like opcodes to work in Osaka by @jsign in #1971
  • chore(test-tests): remove eof from tests/eest by @spencer-tb in #1873
  • fix(tests-execute): relax pydantic checks on GetPayloadResponse by @danceratopz in #2039
  • chore(ci): skip redundant checks in workflows by @spencer-tb in #2038
  • chore(testing/vm): Remove UndefinedOpcodes by @marioevz in #2044
  • chore(tooling): do not gitignore source files in fixtures folders by @felix314159 in #2047
  • fix(tooling,test-*): enable project ruff config for packages/testing by @danceratopz in #2046
  • fix(tools): fix remaining lint checks after large ruff refactor by @fselmo in #2050
  • feat(ci): Create Devnet Workflows by @marioevz in #2053
  • feat(test): port static context static tests to python by @fselmo in #1960
  • feat(tests): turn on EIP-7934 tests with BALs by @fselmo in #2058
  • refactor(spec): refactor execute_code into process_message by @fselmo in #2061
  • chore(docs): bump docs fork to amsterdam by @spencer-tb in #2064
  • bugfix(tests): Put BAL back into test fixtures for next bal release by @fselmo in #2066
  • chore(test-specs): fix fork transition tests by @spencer-tb in #2065
  • fix(tests): Remove bad opcode test; opt for test_all_opcodes coverage by @fselmo in #2070
  • feat(ci): Run static checks on all generated branches by @MarioE...
Read more

v2.19.1

19 Feb 04:39

Choose a tag to compare

What's Changed

Full Changelog: v2.19.0...v2.19.1

v2.19.0 - BPO1

11 Dec 20:18
ca18ab1

Choose a tag to compare

What's Changed

Full Changelog: v2.18.0...v2.19.0

v2.18.0 - Osaka

09 Dec 21:07
d1e7e6b

Choose a tag to compare

What's Changed

Read more

v2.18.0rc6

05 Nov 20:00
a997598

Choose a tag to compare

v2.18.0rc6 Pre-release
Pre-release

What's Changed

Full Changelog: v2.18.0rc6.dev2...v2.18.0rc6

v2.18.0rc6.dev2

04 Nov 21:01
1a8c885

Choose a tag to compare

v2.18.0rc6.dev2 Pre-release
Pre-release

What's Changed

Full Changelog: v2.18.0rc6.dev1...v2.18.0rc6.dev2