Skip to content

Releases: ethereum/execution-spec-tests

eip7692@v2.2.0 (EOF)

25 Feb 18:12
1115574
Compare
Choose a tag to compare
eip7692@v2.2.0 (EOF) Pre-release
Pre-release

What's Changed (Only EOF-relevant changes listed)

  • new(tests): EOF - EIP-7069: Test EOF calls to p256verify by @shemnon in #1021
  • new(tests): EOF - EIP-7480: Add DATACOPY edge cases for common int sizes by @shemnon in #1020
  • refactor(tests): EOF - EIP-4200: confirm migration of RJUMP* tests by @chfast in #1031
  • new(tests): EOF - EIP-7069, EIP-7480, EIP-7620: Add memory expansion tests to EOF opcodes by @shemnon in #989
  • fix(tests): Typo in tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py by @Hack666r in #1048
  • fix(eof): eofwrap.py to ignore invalid blocks by @pdobacz in #1028
  • new(tests): add EOF CALLF stack overflow validation tests by @chfast in #1073
  • new(tests): extend tests for CALLF invalid section index by @chfast in #1111
  • new(tests): tests for JUMPF invalid section index by @chfast in #1112
  • new(tests): EOF - EIP-7069: Test EXTCALL creation gas charge by @shemnon in #1025
  • fix(tests): fix address padding in extcall tests by @chfast in #1117
  • new(tests): CALLF with truncated immediate bytes by @chfast in #1114
  • new(tests): add one more CALLF execution test by @chfast in #1122
  • new(tests): test for CALLF to non-returning section by @chfast in #1126
  • new(tests): DATALOADN with truncated immediate bytes by @chfast in #1127
  • feat(fw): allow adding verbatim bytes to Bytecode by @chfast in #1119
  • feat(tests): EOF - EIP-7620: verify RETURNCONTRACT does not overwrite containing contract by @shemnon in #1109
  • new(tests): convert remaining EOF functions tests (EIP4750) by @chfast in #1124
  • reafactor(specs,tests): Rename EOFTest.data -> EOFTest.container, rebase EOFStateTest by @marioevz in #1145
  • new(tests): new tests for JUMPF and non-returning by @chfast in #1140
  • new(tests): add new JUMPF tests by @chfast in #1161
  • new(tests): add tests for DATALOADN validation and execution by @chfast in #1162
  • feat(tests): improve tests for EOF prefix by @chfast in #1187
  • new(tests): add EOF tests for type section missing by @chfast in #1184
  • new(tests): a test for empty EOF type section by @chfast in #1194
  • new(tests): add a test for multiple EOF type sections by @chfast in #1195
  • new(tests): add a test case for EOF code header missing by @chfast in #1193
  • new(tests) EIP-7698 - legacy cannot create EOF by @shemnon in #1206
  • chore(cli): temp eofwrap pydantic fix by @spencer-tb in #1216
  • fix(tests): correct test_rjumpi_at_the_end description by @chfast in #1225
  • new(tests): add more EOFCREATE validation tests by @chfast in #1226
  • feat(specs): EOF: eof_test generates state tests, and execute in live devnets by @marioevz in #783
  • new(tests): add more RJUMP validation tests by @chfast in #1228
  • new(tests): add more RJUMPI validation tests by @chfast in #1235
  • fix(eofwrap): fixture_format and auxiliary logging by @pdobacz in #1258

Full Changelog: /~https://github.com/ethereum/execution-spec-tests/compare/eip7692@v2.1.0...eip7692@v2.2.0

Letná (v4.0.0)

17 Feb 13:05
2e1d3a0
Compare
Choose a tag to compare

Summary

EESTs Letná release contains many framework improvements, new commands and additional tests that focus on the next hard forks Prague and Osaka (EOF). Please read the breaking changes!

Improved User & Test Developer Experience

Astral python tooling is now utilized within the the repo inclusive of uv and ruff:

  • uv is a python package and project manger primarily replacing our pip entry point for repo setup and installation.
  • ruff is an extremely fast python linter and code formatter, that now replaces the black, isort & flake8 within the repo.

EEST installation and usage is now significantly faster, although requires every command to be pre-pended with uv run <command>, more information can be found within the updated documentation.

EELS Transition Tool

As we move towards a world where EIPs are developed within EELS for hard fork inclusion, EEST now utilizes the EELS transition tool as the default fixture filler. The EELS transition tool, along with the EELS resolver, are included as packages within EEST, allowing repository users to fill tests out of the box upon repo installation. Previously, users were required to install an additional client’s transition tool as a prerequisite for filling the latest tests.

Support for filling tests in EEST using other transition tools will remain available, although the primary focus will now be directed towards EELS. Currently, EELS serves as the main filler for all forks up to Prague. For Osaka (EOF), tests are being filled with evmone - with a nearly complete working version in EELS, while Stateless is being filled with geth - with a movement towards EELS.

Execute Command

A new command called execute is now introduced that allows existing python tests (not fixtures generated by fill) to be ran within live networks including devnets. execute collects transactions written within existing python tests, sends them to a client connected to a network, wait for the network to include them in a block and, finally, check the resulting state of the involved smart-contracts against the expected state to validate the behavior of the clients. This is a new way of testing that was not possible until now. Please check the documentation for more details.

Consume Command Enhancements

The Petřín release introduced the consume command to provide a unified way to run test fixtures against clients directly within EEST. In this release, we have added required fixes and tweaks to consume, and now fixture .tar releases can be ran directly using the syntax --input <RELEASE_NAME>@<RELEASE_VERSION>, making it easier to run any set of fixture releases.

An additional sub-command, consume cache, has been added to allow fixture releases to be downloaded with a single command. When running consume within hive, this enhancement enables Docker to download fixture releases as a cached step, thereby improving run time and overall user experience.

EEST Contributions

We are pleased to announce that @felix314159 has joined EEST as an active full-time maintainer, joining the ranks of previous maintainers @marioevz, @danceratopz, @winsvega, and @spencer-tb.

Since the last release, many members of the Ethereum community have contributed significantly to EEST. A special thanks goes to the @ipsilon team for their efforts on EOF, to @jsign for contributions to Stateless, and to @raxhvl for improvements to the framework and documentation. We also extend our thanks to the @snake-charmers for their ongoing support and collaboration for their test porting efforts from ethereum/tests.

What's Changed

📁 Fixture Releases

  • 🔀 Initially we moved old fork configured tests within stable and develop fixture releases to a separate legacy release (#788).
  • 🔀 This was later reverted after some client teams preferred to keep them in all in the same releases (#1053).

💥 Breaking Change

  • ✨ Use uv for package management replacing pip (#777).
  • ✨ Ruff now replaces Flake8, Isort and Black resulting in significant changes to the entire code base including its usage (#922).
  • 🔀 Fill test fixtures using EELS by default. EEST now uses the ethereum-specs-evm-resolver with the EELS daemon (#792).
  • 🔀 The EOF fixture format contained in eof_tests may now contain multiple exceptions in the "exception" field in the form of a pipe (|) separated string (#759).
  • 🔀 state_test, blockchain_test and blockchain_test_engine fixtures now contain a config field, which contains an object that contains a blobSchedule field. On the blockchain_test and blockchain_test_engine fixtures, the object also contains a duplicate of the network root field. The root's network field will be eventually deprecated (#1040).
  • 🔀 latest-stable-release and latest-develop-release keywords for the --input flag in consume commands have been replaced with stable@latest and develop@latest respectively (#1044).

🛠️ Framework

  • ✨ Execute command added to run existing tests in live networks (#).
  • 🐞 Fixed consume hive commands from spawning different hive test suites during the same test execution when using xdist (#712).
  • consume hive command is now available to run all types of hive tests (#712).
  • ✨ Generated fixtures now contain the test index index.json by default (#716).
  • ✨ A metadata folder .meta/ now stores all fixture metadata files by default (#721).
  • 🐞 Fixed fill command index generation issue due to concurrency (#725).
  • ✨ Added with_all_evm_code_types, with_all_call_opcodes and with_all_create_opcodes markers, which allow automatic parametrization of tests to EOF (#610, #739).
  • ✨ Added with_all_system_contracts marker, which helps parametrize tests with all contracts that affect the chain on a system level (#739).
  • ✨ Code generators Conditional and Switch now support EOF by adding parameter evm_code_type (#610).
  • fill command now supports parameter --evm-code-type that can be (currently) set to legacy or eof_v1 to force all test smart contracts to deployed in normal or in EOF containers (#610).
  • 🐞 Fixed fixture index generation on EOF tests (#728).
  • 🐞 Fixes consume genesis mismatch exception for hive based simulators (#734).
  • ✨ Adds reproducible consume commands to hiveview (#717).
  • 💥 Added multiple exceptions to the EOF fixture format (#759).
  • ✨ Added optional parameter to all with_all_* markers to specify a lambda function that filters the parametrized values (#739).
  • ✨ Added extend_with_defaults utility function, which helps extend test case parameter sets with default values. @pytest.mark.parametrize (#739).
  • ✨ Added Container.Init to ethereum_test_types.EOF.V1 package, which allows generation of an EOF init container more easily (#739).
  • ✨ Introduce method valid_opcodes() to the fork class (#748).
  • 🐞 Fixed consume exit code return values, ensuring that pytest's return value is correctly propagated to the shell. This allows the shell to accurately reflect the test results (e.g., failures) based on the pytest exit code (#765).
  • ✨ Added a new flag --solc-version to the fill command, which allows the user to specify the version of the Solidity compiler to use when compiling Yul source code; this version will now be automatically downloaded by fill via solc-select (#772).
  • 🐞 Fix usage of multiple `@py...
Read more

pectra-devnet-6@v1.0.0

30 Jan 19:55
Compare
Choose a tag to compare
Pre-release

First release for Pectra Devnet-6, containing the finalized specifications for Prague Mainnet (LFG! 🚀🚀🚀)

Execution Layer EIP List for pectra-devnet-6

The list below links the specific commit versions of the EIPs included in devnet-6 and in this release:

Breaking Changes

System Contract Address Changes for EIP-2935, EIP-7002 and EIP-7251

The system contract addresses have been updated:

EIP-2935: 0x0F792BE4B0C0CB4DAE440EF133E90C0ECD48CCCC -> 0x0000F90827F1C53A10CB7A02335B175320002935
EIP-7002: 0x0C15F14308530B7CDB8460094BBB9CC28B9AAAAA -> 0x00000961EF480EB55E80D19AD83579A64C007002
EIP-7251: 0x00431F263CE400F4455C2DCF564E53007CA4BBBB -> 0x0000BBDDC7CE488642FB579F8B00F3A590007251

Thanks to @pk910 for providing these new addresses!

Blob Schedule In Fixtures includes baseFeeUpdateFraction

The blob schedule has now includes baseFeeUpdateFraction, along with target and max (Update EIP-7840: Add BaseFeeUpdateFraction).

EIP-7702 EXTCODE* Behavior Change

Expected return value for all EXTCODE* opcodes has been updated to include the address (See Update EIP-7702: update EXTCODE* opcodes to act on full "delegation designator").

Full Changelog: /~https://github.com/ethereum/execution-spec-tests/compare/pectra-devnet-5@v1.3.1...pectra-devnet-6@v1.0.0

pectra-devnet-5@v1.3.1

29 Jan 23:29
9f6d89d
Compare
Choose a tag to compare
Pre-release

Bug fix release for pectra-devnet-5@v1.3.0.

Fixes Engine API expectations on EIP-7685 in tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py (#1138).

Execution Layer EIP List for pectra-devnet-5

The list below links the specific commit versions of the EIPs included in devnet-5 and in this release:

Breaking Changes

Transaction Tests

New test format is included in this release called Transaction Tests.

The fixtures of this type are included in folder ./fixtures/transaction_tests/.

Blob Schedule In Fixtures

The blob schedule has been added to all fixtures filled for Cancun and Prague on the following PR: #1040

For more details, please refer to the description of the PR.

Explicit error code in engine_newPayloadV4 for Prague

The expected exception for some of the EIP-7685 tests has been updated to match these specification changes:

Full Changelog: /~https://github.com/ethereum/execution-spec-tests/compare/pectra-devnet-5@v1.3.0...pectra-devnet-5@v1.3.1

pectra-devnet-5@v1.3.0

23 Jan 22:39
4a77afb
Compare
Choose a tag to compare
Pre-release

Fourth EEST pre-release for Pectra Devnet-5.

EELS implementation: ethereum/execution-specs@ccb249c from devnets/prague/5.

Execution Layer EIP List for pectra-devnet-5

The list below links the specific commit versions of the EIPs included in devnet-5 and in this release:

Breaking Changes

Transaction Tests

New test format is included in this release called Transaction Tests.

The fixtures of this type are included in folder ./fixtures/transaction_tests/.

Blob Schedule In Fixtures

The blob schedule has been added to all fixtures filled for Cancun and Prague on the following PR: #1040

For more details, please refer to the description of the PR.

Explicit error code in engine_newPayloadV4 for Prague

The expected exception for some of the EIP-7685 tests has been updated to match these specification changes:

Full Changelog: /~https://github.com/ethereum/execution-spec-tests/compare/pectra-devnet-5@v1.2.0...pectra-devnet-5@v1.3.0

pectra-devnet-5@v1.2.0

13 Jan 11:08
Compare
Choose a tag to compare
Pre-release

Third EEST pre-release for Pectra Devnet-5.

EELS implementation: ethereum/execution-specs@37203e6f from devnets/prague/5.

Unmerged execution-spec-tests PRs

This release was built on 2587fbb from #1071, which additionally requires #1068 (both unmerged as of this release).

Execution Layer EIP List for pectra-devnet-5

The list below links the specific commit versions of the EIPs included in devnet-5 and in this release:

Breaking Changes

Transaction Tests

New test format is included in this release called Transaction Tests.

The fixtures of this type are included in folder ./fixtures/transaction_tests/.

Full Changelog: /~https://github.com/ethereum/execution-spec-tests/compare/pectra-devnet-5@v1.1.0...pectra-devnet-5@v1.2.0

pectra-devnet-5@v1.1.0

03 Jan 15:14
Compare
Choose a tag to compare
Pre-release

Second EEST pre-release for Pectra Devnet-5.

PRs Included

Following unmerged PRs are manually merged into the branch used to generate this release:

Execution Layer EIP List for pectra-devnet-5

The list below links the specific commit versions of the EIPs included in devnet-5 and in this release:

Breaking Changes

Transaction Tests

New test format is included in this release called Transaction Tests.

The fixtures of this type are included in folder ./fixtures/transaction_tests/.

Important Notes

Full Changelog: /~https://github.com/ethereum/execution-spec-tests/compare/pectra-devnet-5@v1.0.0...pectra-devnet-5@v1.1.0

pectra-devnet-5@v1.0.0

23 Dec 17:47
Compare
Choose a tag to compare
Pre-release

First EEST pre-release for Pectra Devnet-5.

Execution Layer EIP List for pectra-devnet-5

The list below links the specific commit versions of the EIPs included in devnet-5 and in this release:

Breaking Changes

Transaction Tests

New test format is included in this release called Transaction Tests.

The fixtures of this type are included in folder ./fixtures/transaction_tests/.

Important Notes

None

verkle@v0.0.9-alpha-1

10 Dec 18:01
3fcba12
Compare
Choose a tag to compare
verkle@v0.0.9-alpha-1 Pre-release
Pre-release

This version contains the following fixes:

  • Geth had a bug where BLOCKHASH wasn't charging WARM costs, for more information see the PR fix.

Full Changelog: /~https://github.com/ethereum/execution-spec-tests/compare/verkle@v0.0.8...verkle@v0.0.9-alpha-1

eip7692@v2.1.0

29 Nov 10:15
5cf1f24
Compare
Choose a tag to compare
eip7692@v2.1.0 Pre-release
Pre-release

What's Changed (Only EOF-relevant changes listed)

  • new(tests): EOF - EIP-4750: Stack validation in CALLF by @shemnon in #889
  • new(tests): EOF - EIP-5450: RJUMP* vs CALLF tests by @pdobacz in #833
  • bug(tests) - CALLF rule #4 applies to return stack, not operand stack by @shemnon in #907
  • feat(exceptions,specs): class to verify exception strings by @winsvega in #795
  • new(tests): basic EOF execution tests by @chfast in #912
  • new(tests): EOF - EIP-4200: migrate remaining RJUMP* execution tests by @chfast in #916
  • refactor(tests): EOF - EIP-4750: parametrize CALLF execution tests by @chfast in #913
  • new(cli): Introduce eofwrap tool by @pdobacz in #896
  • new(tests): EOF - EIP-6206: Add stack overflow by rule check to JUMPF by @shemnon in #902
  • new(tests): Explicit test for EXTDELEGATECALL value cost by @pdobacz in #911
  • new(tests): EOF - EIP-4750: add fibonacci and factorial tests for CALLF by @chfast in #915
  • new(tests): EOF - EIP-7692: migrate CALLF execution tests by @chfast in #914
  • new(tests): EOF - EIP-4200 EIP-6206 RJUMPI with JUMPF by @pdobacz in #928
  • feat(forks): Add gas costs functions by @marioevz in #779
  • new(tests): EOF - EIP-3540: validation of opcodes by @chfast in #932
  • feat(docs): add prague-devnet-5 link; add EOF EIP links/info by @danceratopz in #957
  • feat(ci,eof): include eofwrap in EOF prerelease by @pdobacz in #962

New Contributors

Full Changelog: /~https://github.com/ethereum/execution-spec-tests/compare/eip7692@v2.0.0...eip7692@v2.1.0