Releases: ethereum/execution-spec-tests
[email protected]
What's Changed
- fix(ci): add solc-select to fill stage of build fixtures by @spencer-tb in #618
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]@v1.0.3
[email protected]
Note: No fixtures were added in this release. Please use the latest release for test fixtures.
What's Changed
- Add more test cases to EOF tracker by @gumb0 in #597
- feat(fw): make NON_RETURNING_SECTION default in Container by @chfast in #599
- new(tests): EIP-3540: execution semantics changes by @shemnon in #571
- Test EIP-7069 Address Space Extension implications by @shemnon in #522
- fix(tests): EOF - EIP-3540: Remove duplicated validation tests by @chfast in #593
- fix(tests): Pytest warning on EIP-2537 tests by @marioevz in #590
- feat(fw): Add
with_all_contract_creating_tx_types
marker by @marioevz in #602 - feat(ci): use solc-select for tox by @spencer-tb in #604
- bug(tests): fix typos in selfdestruct test by @winsvega in #608
- new(tests) EIP-7069 RETURNDATALOAD and RETURNDATACOPY by @shemnon in #595
- refactor(tests,tw): EOF - Top-level container must not be truncated by @chfast in #613
- support coverage script for EOF tests by @winsvega in #615
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]@v1.0.2
[email protected]
This is an EIP-7692 (EOF) focused pre-release.
It contains only EOF fixtures.
What's Changed
- feat(fw): EOF support by @winsvega in #512
- feat(fw): Call
evmone-eofparse
on EOF tests filling by @marioevz in #519 - EOF: efExample validInvalid tests by @winsvega in #535
- feat(tests): EOF folder structure re-org by @marioevz in #554
- add EOFException.INVALID_DATALOADN_INDEX by @chfast in #560
- docs: EOF: Update test tracker by @gumb0 in #559
- new(test): add tests for EOF/EIP-663 DUPN SWAPN by @chfast in #502
- fix(tests): EOF - EIP-3540: return stack tests by @shemnon in #536
- new(tests): EOF - EIP-6206: JUMPF Tests by @shemnon in #540
- new(tests): EOF - EIP-663: EXCHANGE opcode by @shemnon in #544
- fix(tests): EOF - EIP-3540: update validation tests for recent spec by @chfast in #558
- new(tests): EOF - EIP-7620: EOFCREATE and RETURNDATA tests by @shemnon in #532
- new(fw,tests,github): Add automatic feature-based fixture building in CI, add EOF feature (eip7692), fix outstanding EOF test failures by @marioevz in #573
- new(tests) EIP-4200 relative jumps by @shemnon in https://github.com/ethereum/execution-spec-tests/pull/5813
- Add more validation cases to EOF tests tracker by @gumb0 in #589
- fix(tests): EIP-7620,EIP-3540: Failing EOF tests by @marioevz in #594
New Contributors
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]
v2.1.1
🏖️ Final Cancun Release
Release v2.1.1 adds additional tests for EIP-6780, from pytest parameterization improvements and new dynamic create2 collision test cases. A minor framework bug fix is included which incorrectly updated the gas limit for blocks post genesis, after updating the field within the blockchain test envirionment.
Additional updates are below:
🧪 Test Cases
- 🐞 Adds dynamic create2 collision tests from different transactions same block for EIP-6780 (#430).
- 🐞 Fix beacon root contract deployment tests so the account in the pre-alloc is not empty (#425).
- 🔀 All beacon root contract tests are now contained in
tests/cancun/eip4788_beacon_root/test_beacon_root_contract.py
, and all state tests have been converted back to blockchain tests format (#449)
🛠️ Framework
- ✨ Add Prague to forks (#419).
- ✨ Improve handling of the argument passed to
solc --evm-version
when compiling Yul code (#418). - 🐞 Fix
fill -m yul_test
which failed to filter tests that are (dynamically) marked as a yul test (#418). - 🔀 Helper methods
to_address
,to_hash
andto_hash_bytes
have been deprecated in favor ofAddress
andHash
, which are automatically detected as opcode parameters and pushed to the stack in the resulting bytecode (#422). - ✨
Opcodes
enum now contains docstrings with each opcode description, including parameters and return values, which show up in many development environments (#424) @ThreeHrSleep. - 🔀 Locally calculate state root for the genesis blocks in the blockchain tests instead of calling t8n (#450).
- 🐞 Fix bug that causes an exception during test collection because the fork parameter contains
None
(#452). - ✨ The
_info
field in the test fixtures now contains ahash
field, which is the hash of the test fixture, and ahasher
script has been added which prints and performs calculations on top of the hashes of all fixtures (seehasher -h
) (#454). - ✨ Adds an optional
verify_sync
field to hive blockchain tests (EngineAPI). When set to true a second client attempts to sync to the first client that executed the tests (#431). - 🐞 Fix manually setting the gas limit in the genesis test env for post genesis blocks in blockchain tests (#472).
📋 Misc
- 🐞 Fix deprecation warnings due to outdated config in recommended VS Code project settings (#420).
- 🐞 Fix typo in the selfdestruct revert tests module (#421).
New Contributors
- @cristiantroy made their first contribution in #421
- @SamWilsn made their first contribution in #451
- @ThreeHrSleep made their first contribution in #424
Full Changelog: v2.1.0...v2.1.1
v2.1.0
🐍🏖️ Cancun StateTest
Format Bug Fix
Release v2.1.0 primarily fixes a small bug introduced within the previous release where transition forks are used within the new StateTest
format. This was highlighted by @chfast within #405 (#405), where the fork name ShanghaiToCancunAtTime15k
was found within state tests.
🧪 Test Cases
- ✨ EIP-4844: Adds
test_blob_gas_subtraction_tx()
verifying the blob gas fee is subtracted from the sender before executing the blob tx (#407).
🛠️ Framework
- 🐞 State tests generated with transition forks no longer use the transition fork name in the fixture output, instead they use the actual enabled fork according to the state test's block number and timestamp (#406).
📋 Misc
- ✨ Use
run-parallel
and shared wheel packages fortox
(#408).
Full Changelog: v2.0.0...v2.1.0
v2.0.0
🐍🏖️ Cancun and StateTest
Format Release
Contains many important framework changes, including introduction of the StateTest
format, and some additional Cancun and other test coverage.
Due to changes in the framework, there is a breaking change in the directory structure in the release tarball, please see the dedicated "💥 Breaking Changes" section below for more information.
🧪 Test Cases
- ✨ EIP-4844: Add
test_sufficient_balance_blob_tx()
andtest_sufficient_balance_blob_tx_pre_fund_tx()
(#379). - ✨ EIP-6780: Add a reentrancy suicide revert test (#372).
- ✨ EIP-1153: Add
test_run_until_out_of_gas()
for transient storage opcodes (#401). - ✨ EIP-198: Add tests for the MODEXP precompile (#364).
- ✨ Tests for nested
CALL
andCALLCODE
gas consumption with a positive value transfer (previously lacking coverage) (#371). - 🐞 EIP-4844: Fixed
test_invalid_tx_max_fee_per_blob_gas()
to account for extra gas required in the case where the account is incorrectly deduced the balance as if it had the correct block blob gas fee (#370). - 🐞 EIP-4844: Fixed
test_insufficient_balance_blob_tx()
to correctly calculate the minimum balance required for the accounts (#379). - 🐞 EIP-4844: Fix and enable
test_invalid_blob_tx_contract_creation
(#379). - 🔀 Convert all eligible
BlockchainTest
s toStateTest
s (and additionally generate correspondingBlockchainTest
s) (#368, #370).
🛠️ Framework
- ✨ Add
StateTest
fixture format generation;StateTests
now generate aStateTest
and a correspondingBlockchainTest
test fixture, previously onlyBlockchainTest
fixtures were generated (#368). - ✨ Add
StateTestOnly
fixture format is now available and its only difference withStateTest
is that it does not produce aBlockchainTest
(#368). - ✨ Add
evm_bytes_to_python
command-line utility which converts EVM bytecode to Python Opcodes (#357). - ✨ Fork objects used to write tests can now be compared using the
>
,>=
,<
,<=
operators, to check for a fork being newer than, newer than or equal, older than, older than or equal, respectively when compared against other fork (#367). - ✨ Add solc 0.8.23 support (#373).
- ✨ Add framework unit tests for post state exception verification (#350).
- ✨ Add a helper class
ethereum_test_tools.TestParameterGroup
to define test parameters as dataclasses and auto-generate test IDs (#364). - ✨ Add a
--single-fixture-per-file
flag to generate one fixture JSON file per test case (#331). - 🐞 Storage type iterator is now fixed (#369).
- 🐞 Fix type coercion in
FixtureHeader.join()
(#398). - 🔀 Locally calculate the transactions list's root instead of using the one returned by t8n when producing BlockchainTests (#353).
- 🔀 Change custom exception classes to dataclasses to improve testability (#386).
- 🔀 Update fork name from "Merge" to "Paris" used within the framework and tests (#363).
- 💥 Replace
=
with_
in pytest node ids and test fixture names (#342). - 💥 The
StateTest
, spec format used to write tests, is now limited to a single transaction per test (#361). - 💥 Tests must now use
BlockException
andTransactionException
to define the expected exception of a given test, which can be used to test whether the client is hitting the proper exception when processing the block or transaction (#384). - 💥
fill
: Remove the--enable-hive
flag; now all test types are generated by default (#358). - 💥 Rename test fixtures names to match the corresponding pytest node ID as generated using
fill
(#342).
📋 Misc
- ✨ Docs: Add a "Consuming Tests" section to the docs, where each test fixture format is described, along with the steps to consume them, and the description of the structures used in each format (#375).
- 🔀 Docs: Update
t8n
tool branch to fill tests for development features in the readme (#338). - 🔀 Filling tool: Updated the default filling tool (
t8n
) to go-ethereum@master (#368). - 🐞 Docs: Fix error banner in online docs due to mermaid syntax error (#398).
- 🐞 Docs: Fix incorrectly formatted nested lists in online doc (#403).
💥 Breaking Changes
A concrete example of the test name renaming and change in directory structure is provided below.
-
Fixture output, including release tarballs, now contain subdirectories for different test types:
blockchain_tests
: ContainsBlockchainTest
formatted testsblockchain_tests_hive
: ContainsBlockchainTest
with Engine API call directives for use in hivestate_tests
: ContainsStateTest
formatted tests
-
StateTest
, spec format used to write tests, is now limited to a single transaction per test. -
In this release the pytest node ID is now used for fixture names (previously only the test parameters were used), this should not be breaking. However,
=
in both node IDs (and therefore fixture names) have been replaced with_
, which may break tooling that depends on the=
character. -
Produced
blockchain_tests
fixtures and their correspondingblockchain_tests_hive
fixtures now contain the named exceptionsBlockException
andTransactionException
as strings in theexpectException
andvalidationError
fields, respectively. These exceptions can be used to test whether the client is hitting the proper exception when processing an invalid block.Blockchain test:
"blocks": [ { ... "expectException": "TransactionException.INSUFFICIENT_ACCOUNT_FUNDS", ... } ... ]
Blockchain hive test:
"engineNewPayloads": [ { ... "validationError": "TransactionException.INSUFFICIENT_ACCOUNT_FUNDS", ... } ... ]
Renaming and Release Tarball Directory Structure Change Example
The fixture renaming provides a more consistent naming scheme between the pytest node ID and fixture name and allows the fixture name to be provided directly to pytest 5on the command line to execute individual tests in isolation, e.g. pytest tests/frontier/opcodes/test_dup.py::test_dup[fork_Frontier]
.
-
Pytest node ID example:
- Previous node ID:
tests/frontier/opcodes/test_dup.py::test_dup[fork=Frontier]
. - New node ID:
tests/frontier/opcodes/test_dup.py::test_dup[fork_Frontier]
.
- Previous node ID:
-
Fixture name example:
- Previous fixture name:
000-fork=Frontier
- New fixture name:
tests/frontier/opcodes/test_dup.py::test_dup[fork_Frontier]
(now the same as the pytest node ID).
- Previous fixture name:
-
Fixture JSON file name example (within the release tarball):
- Previous fixture file name:
fixtures/frontier/opcodes/dup/dup.json
(BlockChainTest
format). - New fixture file names (all present within the release tarball):
fixtures/state_tests/frontier/opcodes/dup/dup.json
(StateTest
format).fixtures/blockchain_tests/frontier/opcodes/dup/dup.json
(BlockChainTest
format).fixtures/blockchain_tests_hive/frontier/opcodes/dup/dup.json
(a blockchain test inHiveFixture
format).
- Previous fixture file name:
New Contributors
- @jochem-brouwer made their first contribution in #364
- @MukulKolpe made their first contribution in #363
- @acolytec3 made their first contribution in #371
- @richardgreg...
v1.0.6
🐍🏖️ Cancun Devnet 10
🧪 Test Cases
- 🔀 EIP-4844: Update KZG point evaluation test vectors to use data from the official KZG setup and Mainnet Trusted Setup (#336).
🛠️ Framework
- 🔀 Fixtures: Add a non-RLP format field (
rlp_decoded
) to invalid blocks (#322). - 🔀 Spec: Refactor state and blockchain spec (#307).
🔧 EVM Tools
- ✨ Run geth's
evm blocktest
command to verify JSON fixtures after test case execution (--verify-fixtures
) (#325). - ✨ Enable tracing support for
ethereum-spec-evm
(#289).
📋 Misc
- ✨ Tooling: Add Python 3.12 support (#309).
- ✨ Process: Added a Github pull request template (#308).
- ✨ Docs: Changelog updated post release (#321).
- ✨ Docs: Add a section explaining execution-spec-tests release artifacts (#334).
- 🔀 T8N Tool: Branch used to generate the tests for Cancun is now lightclient/go-ethereum@devnet-10 (#336)
💥 Breaking Change
- Fixtures now use the Mainnet Trusted Setup merged on consensus-specs#3521 (#336)
Full Changelog: v1.0.5...v1.0.6
v1.0.5
🐍🏖️ Cancun Devnet 9 Release 3
This release mainly serves to update the EIP-4788 beacon roots address to 0x000F3df6D732807Ef1319fB7B8bB8522d0Beac02
, as updated in ethereum/EIPs/pull/7672.
🧪 Test Cases
- 🐞 EIP-4844: Fix invalid blob txs pre-Cancun engine response (#306).
- ✨ EIP-4788: Final update to the beacon root address (#312).
📋 Misc
- ✨ Docs: Changelog added (#305).
- ✨ CI/CD: Run development fork tests in Github Actions (#302).
- ✨ CI/CD: Generate test JSON fixtures on push (#303).
💥 Breaking Change
Please use development fixtures from now on when testing Cancun. These refer to changes that are currently under development within clients:
fixtures
: All tests until the last stable fork (Shanghai)fixtures_develop
: All tests until the last development fork (Cancun)fixtures_hive
: All tests until the last stable fork (Shanghai) in hive format (Engine API directives instead of the usual BlockchainTest format)fixtures_develop_hive
: All tests until the last development fork (Cancun) in hive format
v1.0.4
🐍 Cancun Devnet 9 Release 2
This release adds additional coverage to the current set of cancun tests, up to the Devnet-9 Cancun specification, noting the following considerations:
- Beacon root contract is pre-deployed at
0xbEAC020008aFF7331c0A389CB2AAb67597567d7a
- Additional EIP-4788 updates from the following PR will be included in the next release.
- Adds EIP-7516 Tests
🧪 Tests include the following EIPs
EIP-4844: Shard Blob Transactions
EIP-5656: MCOPY - Memory copying instruction
EIP-6780: SELFDESTRUCT only in same transaction
EIP-4788: Beacon block root in the EVM
EIP-1153: Transient storage opcodes
EIP-7516: BLOBBASEFEE opcode
⚙️ Test Generation
Fixtures for these tests can be generated using the geth
t8n tool with the following branch & command:
marioevz/go-ethereum@cancun-t8n
fill --until Cancun
📄 Documentation
Further information on each test can be found within the docs:
https://ethereum.github.io/execution-spec-tests/main/tests/cancun/
What's Changed
- tests/cancun/eip_1153: Remove conftest '+1153' in network field. by @spencer-tb in #299
- improvement: Deprecate empty accounts within framework. by @spencer-tb in #300
- tests/4844: Add EIP-7516, BLOBBASEFEE, verification to excess blob gas tests by @marioevz in #294
- tests/cancun/eip_4788: Update predeploy address(0xbEAC02..7d7a), add additional tests by @spencer-tb in #297
- feature: Add engine API forkchoice updated information in fixtures by @spencer-tb in #256
- improvement: Fixture generation split based on hive specificity by @spencer-tb in #301
Full Changelog: v1.0.3...v1.0.4
v1.0.3
🐍 Cancun Devnet 9 Release
This release adds additional coverage to the current set of cancun tests, up to the Devnet-9 Cancun specification, noting the following considerations:
- Beacon root contract is pre-deployed at
0xbEac00dDB15f3B6d645C48263dC93862413A222D
- Additional EIP-4788 updates from the following PR will be included in the next release.
- Further coverage includes tests for EIP-1153, and additional tests for EIP-4788 & EIP-6780.
🧪 Tests include the following EIPs
EIP-4844: Shard Blob Transactions
EIP-5656: MCOPY - Memory copying instruction
EIP-6780: SELFDESTRUCT only in same transaction
EIP-4788: Beacon block root in the EVM
EIP-1153: Transient storage opcodes
⚙️ Test Generation
Fixtures for these tests can be generated using the geth
t8n tool with the following branch & command:
marioevz/go-ethereum@cancun-t8n
fill --until Cancun
📄 Documentation
Further information on each test can be found within the docs:
https://ethereum.github.io/execution-spec-tests/main/tests/cancun/