Releases: ethereum/execution-spec-tests
[email protected]
First release for Pectra Devnet-3, filled using EthereumJS transition tool implementation (thanks @jochem-brouwer!).
Important Notes
- EIP-2537 tests have been skipped for this release but will be available in a later release.
- EIP-2935 slow tests (256+ blocks) have been skipped too.
Included EIPs
EIP-2537: Precompile for BLS12-381 curve operationsTESTS SKIPPED ONLY FOR THIS RELEASE, EIP STILL ENABLED IN DEVNET-3- EIP-2935: Save historical block hashes in state
- EIP-6110: Supply validator deposits on chain
- EIP-7002: Execution layer triggerable exits
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7685: General purpose execution layer requests
- EIP-7702: Set EOA account code for one transaction
Missing EIPs
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]
[email protected]
What's Changed
- new(tests): EOF - EIP-3540: Expand section size testing by @pdobacz in #705
- new(tests) Deep and wide EOF subcontainers by @shemnon in #718
- fix(docs): Add more cases to EOF tracker by @gumb0 in #723
- new(tests): EOF - EIP-7069: Add tests by @pdobacz in #722
- fix(fixtures): Fix index generation for EOF tests by @marioevz in #728
- fix(docs): Add some execution cases to EOF test tracker by @gumb0 in #727
- feat(fw,forks,tests): Add EVM code type marker by @marioevz in #610
- new(tests): EOF - EIP-7069: Add tests, part 2. by @pdobacz in #730
- feat(fw): add optional
Container.expected_bytecode
by @chfast in #737 - new(tests): migrate "valid" EOFCREATE validation by @chfast in #738
- fix(docs): Add stack validation cases to EOF tracker by @gumb0 in #735
- new(tests): EOF - EIP-3540: migrate tests for truncated sections by @chfast in #740
- feat(plugins,forks,github): Allow dual-feature (Prague+Cancun) build on EOF releases by @marioevz in #743
- fix(docs): Add execution cases from evmone-generated tests to EOF tracker by @gumb0 in #742
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]
[email protected]
This release is equivalent to [email protected] but with the addition of Shanghai genesis tests within the conversion fixture set.
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]@v0.0.2
🌪️ Fixture Format Changes
All fixtures now contain a block witness although currently without the parent state root.
class Witness(CamelModel):
state_diff: StateDiff
verkle_proof: VerkleProof
Client test consumers can now utilize this to compare there computed block witness against the witness present within the fixtures (computed from geth's t8n).
For more information on our witness definition please adhere to src/ethereum_test_types/verkle/types.py
.
Additionally the post state is removed. Future fixture releases will contain the post state as a VKT.
🐘 Verkle Genesis Test Fixtures
Contains verkle specific test vectors from #659 including all existing EEST test cases filled for a verkle configured fork. Note these tests assume the MPT to VKT conversion has completed where we start at the Verkle fork.
Please use fixtures_verkle-genesis.tar.gz
!
Generating Genesis Fixtures
Using the geth evm binary from this commit, fill with the following command:
fill --fork Verkle --evm-bin=<path_to_geth_evm>/evm -n auto -m blockchain_test
🔁 Verkle Conversion Test Fixtures - 0 Stride
Contains an improvement to the initial set of transition tests.
These aim to verify a basic fork transition from Shanghai to Verkle. 0 stride denotes that the initial MPT remains frozen. Thus the MPT is not being converted to a VKT within these tests. The intention is to check that only blocks after the transition update the VKT, isolating VKT fork transition issues without touching MPT stride conversion logic.
Test cases additionally include Shanghai genesis tests to assert that the fork before Verkle is not broken.
The next release will contain conversion tests with some stride enabled to dynamically validate the MPT conversion.
Please use fixtures_verkle-conversion-stride-0.tar.gz
!
Generating Conversion Fixtures
Using the geth evm binary from this commit, fill with the following command:
fill --from Shanghai --until EIP6800Transition --evm-bin=<path_to_geth_evm>/evm -n auto -m blockchain_test
[email protected]
🌪️ Fixture Format Changes
All fixtures now contain a block witness although currently without the parent state root.
class Witness(CamelModel):
state_diff: StateDiff
verkle_proof: VerkleProof
Client test consumers can now utilize this to compare there computed block witness against the witness present within the fixtures (computed from geth's t8n).
For more information on our witness definition please adhere to src/ethereum_test_types/verkle/types.py
.
Additionally the post state is removed. Future fixture releases will contain the post state as a VKT.
🐘 Verkle Genesis Test Fixtures
Contains verkle specific test vectors from #659 including all existing EEST test cases filled for a verkle configured fork. Note these tests assume the MPT to VKT conversion has completed where we start at the Verkle fork.
Please use fixtures_verkle-genesis.tar.gz
!
Generating Genesis Fixtures
Using the geth evm binary from this commit, fill with the following command:
fill --fork Verkle --evm-bin=<path_to_geth_evm>/evm -n auto -m blockchain_test
🔁 Verkle Conversion Test Fixtures - 0 Stride
Contains an improvement to the initial set of transition tests.
These aim to verify a basic fork transition from Shanghai to Verkle. 0 stride denotes that the initial MPT remains frozen. Thus the MPT is not being converted to a VKT within these tests. The intention is to check that only blocks after the transition update the VKT, isolating VKT fork transition issues without touching MPT stride conversion logic.
The next release will contain conversion tests with some stride enabled to dynamically validate the MPT conversion.
Please use fixtures_verkle-conversion-stride-0.tar.gz
!
Generating Conversion Fixtures
Using the geth evm binary from this commit, fill with the following command:
fill --fork EIP6800Transition --evm-bin=<path_to_geth_evm>/evm -n auto -m blockchain_test
Petřín (v3.0.0)
EEST's Petřín release adds many improvements and additions. Please read the breaking changes!
A noteable key package ethereum_test_tools
is now fragmented into several fine grained packages that are suitable for use within other Python based repositories.
The consume simulator pytest plugin now contains 4 fixture runners:
consume direct
: provides a pytest wrapper to execute multiple fixtures against client evmstatetest/blocktest
runners.consume rlp
: using hive as a back-end, executes fixture block rlps against fully instantiated clients, verifying the last block hash is expected.consume engine
: with a hive back-end, sendsengine_newPayloadVX
calls against fully instantiated clients validating each call response.consume all
: provides a wrapper surrounding all commands to execute consume direct, rlp and engine at once for the specified fixtures.
With a refined consume suite, testers can now fill
and consume
the generated fixtures extremely quickly to validate both the generated fixture and client implementation. This removes the cumbersome requirement of updating hive when verifying new fixtures.
To align the execution-apis engine specification with the consume engine
plugin, the blockchain_test_hive
fixture is renamed to blockchain_test_engine
to align more with the sentiment of the spec. Similarly, the fixture format of the latter is changed to match the engine new payload "params"
field defined in the spec.
💥 Breaking Changes
- Cancun is now the latest deployed fork, and the development fork is now Prague (#489).
- Stable fixtures artifact
fixtures.tar.gz
has been renamed tofixtures_stable.tar.gz
(#573) - The "Blockchain Test Hive" fixture format has been renamed to "Blockchain Test Engine" and updated to more closely resemble the
engine_newPayload
format in theexecution-apis
specification (https://github.com/ethereum/execution-apis/blob/main/src/engine/prague.md#request) and now contains a single"params"
field instead of multiple fields for each parameter (#687). - Output folder for fixtures has been renamed from "blockchain_tests_hive" to "blockchain_tests_engine" (#687).
🧪 Test Cases
- ✨ Add tests for eof container's section bytes position smart fuzzing (#592).
- ✨ Add
test_create_selfdestruct_same_tx_increased_nonce
which tests self-destructing a contract with a nonce > 1 (#478). - ✨ Add
test_double_kill
andtest_recreate
which test resurrection of accounts killed withSELFDESTRUCT
(#488). - ✨ Add eof example valid invalid tests from ori, fetch EOF Container implementation (#535).
- ✨ Add tests for EIP-2537: Precompile for BLS12-381 curve operations (#499).
- ✨ EIP-663: Add
test_dupn.py
andtest_swapn.py
(#502). - ✨ Add tests for EIP-6110: Supply validator deposits on chain (#530).
- ✨ Add tests for EIP-7002: Execution layer triggerable withdrawals (#530).
- ✨ Add tests for EIP-7685: General purpose execution layer requests (#530).
- ✨ Add tests for EIP-2935: Serve historical block hashes from state (#564, #585).
- ✨ Add tests for EIP-4200: EOF - Static relative jumps (#581, #666).
- ✨ Add tests for EIP-7069: EOF - Revamped CALL instructions (#595).
- 🐞 Fix typos in self-destruct collision test from erroneous pytest parametrization (#608).
- ✨ Add tests for EIP-3540: EOF - EVM Object Format v1 (#634, #668).
- 🔀 Update EIP-7002 tests to match spec changes in ethereum/execution-apis#549 (#600)
- ✨ Convert a few eip1153 tests from ethereum/tests repo into .py (#440).
- ✨ Add tests for EIP-7480: EOF - Data section access instructions (#518, #664).
- ✨ Add tests for subcontainer kind validation from EIP-7620: EOF Contract Creation for the cases with deeply nested containers and non-first code sections (#676).
- ✨ Add tests for runtime stack overflow at CALLF instruction from EIP-4750: EOF - Functions (#678).
- ✨ Add tests for runtime stack overflow at JUMPF instruction from EIP-6206: EOF - JUMPF and non-returning functions (#690).
- ✨ Add tests for EIP-7251: Increase the MAX_EFFECTIVE_BALANCE (#642)
- ✨ Add tests for Devnet-1 version of EIP-7702: Set EOA account code (#621)
🛠️ Framework
- 🐞 Fix incorrect
!=
operator forFixedSizeBytes
(#477). - ✨ Add Macro enum that represents byte sequence of Op instructions (#457)
- ✨ Number of parameters used to call opcodes (to generate bytecode) is now checked (#492).
- ✨ Libraries have been refactored to use
pydantic
for type checking in most test types (#486, #501, #508). - ✨ Opcodes are now subscriptable and it's used to define the data portion of the opcode:
Op.PUSH1(1) == Op.PUSH1[1] == b"\x60\x01"
(#513) - ✨ Added EOF fixture format (#512).
- ✨ Verify filled EOF fixtures using
evmone-eofparse
duringfill
execution (#519). - ✨ Added
--traces
support when running with Hyperledger Besu (#511). - ✨ Use pytest's "short" traceback style (
--tb=short
) for failure summaries in the test report for more compact terminal output (#542). - ✨ The
fill
command now generates HTML test reports with links to the JSON fixtures and debug information (#537). - ✨ Add an Ethereum RPC client class for use with consume commands (#556).
- ✨ Add a "slow" pytest marker, in order to be able to limit the filled tests until release (#562).
- ✨ Add a CLI tool that generates blockchain tests as Python from a transaction hash (#470, #576).
- ✨ Add more Transaction and Block exceptions from existing ethereum/tests repo (#572).
- ✨ Add "description" and "url" fields containing test case documentation and a source code permalink to fixtures during
fill
and use them inconsume
-generated Hive test reports (#579). - ✨ Add git workflow evmone coverage script for any new lines mentioned in converted_ethereum_tests.txt (#503).
- ✨ Add a new covariant marker
with_all_contract_creating_tx_types
that allows automatic parametrization of a test with all contract-creating transaction types at the current executing fork (#602). - ✨ Tests are now encouraged to declare a
pre: Alloc
parameter to get the pre-allocation object for the test, and usepre.deploy_contract
andpre.fund_eoa
to deploy contracts and fu...
[email protected]
What's Changed
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]@v1.0.7
[email protected]
What's Changed
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]@v1.0.7
[email protected]
What's Changed
- fix(tests): EOF - EIP-4200: Organize code_validation_jump.py tests by @marioevz in #666
- fix(tests): EOF - EIP-3540: EXTCODECOPY a hard-coded size for EOF target by @gurukamath in #667
- new(tests): EOF - EIP-7480: Add tests for DATACOPY memory expansion by @pdobacz in #664
- feat(fw): support invalid containers in EOFStateTest by @chfast in #665
- fix(tests): EOF - EIP-3540: Organize code_validation.py tests by @marioevz in #668
- new(tests): EOF - EIP-7620: Add more tests for validating EOF subcontainer kinds by @gumb0 in #676
- new(tests): EOF - EIP-7069: RETURNDATACOPY mem expansion and copy OOG by @pdobacz in #671
- fix(cli):
RJUMPV
inevm_bytes_to_python
by @marioevz in #683 - refactor(fw): Refactor
ethereum_test_tools
into separate libraries by @marioevz in #645 - new(tests) EXT*CALL input data validation by @shemnon in #685
- new(tests): EOF - EIP-4750: Runtime stack overflow at CALLF by @gumb0 in #678
New Contributors
- @raymondnguyen8 made their first contribution in #632
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]@v1.0.6
[email protected]
Contains breaking change where type-4 transactions listed in state test fixtures contain the authorization list in readable format.
Included EIPs
- 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 exits
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7685: General purpose execution layer requests
- EIP-7702: Set EOA account code for one transaction
Missing EIPs
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]@v1.3.0
[email protected]
Prague Devnet-1 Pre-Release v1.2.0
Contains breaking change where type-4 transactions listed in blockchain test fixtures contain the authorization list in readable format.
Included EIPs
- 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 exits
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- EIP-7685: General purpose execution layer requests
- EIP-7702: Set EOA account code for one transaction
Missing EIPs
Full Changelog: https://github.com/ethereum/execution-spec-tests/compare/[email protected]@v1.2.0