Releases: ethereum/execution-spec-tests
eip7692@v2.2.0 (EOF)
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
, rebaseEOFStateTest
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, andexecute
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)
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 ourpip
entry point for repo setup and installation.ruff
is an extremely fast python linter and code formatter, that now replaces theblack
,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
andblockchain_test_engine
fixtures now contain aconfig
field, which contains an object that contains ablobSchedule
field. On theblockchain_test
andblockchain_test_engine
fixtures, the object also contains a duplicate of thenetwork
root field. The root'snetwork
field will be eventually deprecated (#1040). - 🔀
latest-stable-release
andlatest-develop-release
keywords for the--input
flag in consume commands have been replaced withstable@latest
anddevelop@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
andwith_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
andSwitch
now support EOF by adding parameterevm_code_type
(#610). - ✨
fill
command now supports parameter--evm-code-type
that can be (currently) set tolegacy
oreof_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
toethereum_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 thefill
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 byfill
viasolc-select
(#772). - 🐞 Fix usage of multiple `@py...
pectra-devnet-6@v1.0.0
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:
- EIP-2537: Precompile for BLS12-381 curve operations
- EIP-2935: Save historical block hashes in state
- EIP-6110: Supply validator deposits on chain
- EIP-7002: Execution layer triggerable withdrawals
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7623: Increase calldata cost
- EIP-7685: General purpose execution layer requests
- EIP-7691: Blob throughput increase
- EIP-7702: Set EOA account code for one transaction
- EIP-7840: Add blob schedule to EL config files
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
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:
- EIP-2537: Precompile for BLS12-381 curve operations
- EIP-2935: Save historical block hashes in state
- EIP-6110: Supply validator deposits on chain
- EIP-7002: Execution layer triggerable withdrawals
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7623: Increase calldata cost
- EIP-7685: General purpose execution layer requests
- EIP-7691: Blob throughput increase
- EIP-7702: Set EOA account code for one transaction
- EIP-7840: Add blob schedule to EL config files
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
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:
- EIP-2537: Precompile for BLS12-381 curve operations
- EIP-2935: Save historical block hashes in state
- EIP-6110: Supply validator deposits on chain
- EIP-7002: Execution layer triggerable withdrawals
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7623: Increase calldata cost
- EIP-7685: General purpose execution layer requests
- EIP-7691: Blob throughput increase
- EIP-7702: Set EOA account code for one transaction
- EIP-7840: Add blob schedule to EL config files
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
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:
- EIP-2537: Precompile for BLS12-381 curve operations
- EIP-2935: Save historical block hashes in state, includes: ethereum/EIPs#9144
- EIP-6110: Supply validator deposits on chain
- EIP-7002: Execution layer triggerable withdrawals
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7623: Increase calldata cost, includes: ethereum/EIPs#9227
- EIP-7685: General purpose execution layer requests
- EIP-7691: Blob throughput increase
- EIP-7702: Set EOA account code for one transaction
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
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:
- EIP-2537: Precompile for BLS12-381 curve operations
- EIP-2935: Save historical block hashes in state ❗ Open PR in EIP repo ethereum/EIPs#9144
- EIP-6110: Supply validator deposits on chain
- EIP-7002: Execution layer triggerable withdrawals
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7623: Increase calldata cost - ❗ new EIP
- EIP-7685: General purpose execution layer requests
- EIP-7691: Blob throughput increase ❗ new EIP
- EIP-7702: Set EOA account code for one transaction
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
- This release is based on an open PR in the EIP repository: ethereum/EIPs#9144
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
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:
- EIP-2537: Precompile for BLS12-381 curve operations
- EIP-2935: Save historical block hashes in state
- EIP-6110: Supply validator deposits on chain
- EIP-7002: Execution layer triggerable withdrawals
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7623: Increase calldata cost - ❗ new EIP
- EIP-7685: General purpose execution layer requests
- EIP-7691: Blob throughput increase ❗ new EIP
- EIP-7702: Set EOA account code for one transaction
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
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
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
- @MaximeDavin made their first contribution in #949
Full Changelog: /~https://github.com/ethereum/execution-spec-tests/compare/eip7692@v2.0.0...eip7692@v2.1.0