Vltava (v4.3.0)
Summary
This release introduces more coverage for Prague EIPs, along with many new features described below.
💥 Breaking Change
EIP Changes
- EIP-6110: Spec parse_deposit_data
- EIP-7002: Add system call gas aspects and directive for handling failures
- EIP-7251: Add system call properties and directive for failure cases
Consume engine strict exception checking
consume engine
now checks exceptions returned by the execution clients in their Engine API responses, specifically in the validationError
field of the engine_newPayloadVX
method.
While not strictly a breaking change since tests will continue to run normally, failures are expected if a client modifies their exception messages.
This feature can be disabled by using --disable-strict-exception-matching
for specific clients or forks.
🛠️ Framework
fill
- ✨ The
static_filler
plug-in now has support for static state tests (from GeneralStateTests) (#1362). - ✨ Introduce
pytest.mark.exception_test
to mark tests that contain an invalid transaction or block (#1436). - 🐞 Fix
DeprecationWarning: Pickle, copy, and deepcopy support will be removed from itertools in Python 3.14.
by avoiding useitertools
object in the specBaseTest
pydantic model (#1414).
consume
- 🐞 Fix fixture tarball downloading with regular, non-Github release URLS and with numerical versions in regular release specs, e.g.,
stable@v4.2.0
(#1437). - ✨
consume engine
now has strict exception mapping enabled by default (#1416).
Tools
- 🔀
generate_system_contract_deploy_test
test generator has been updated to handle system contracts that are not allowed to be absent when the fork happens (#1394). - ✨ Add
generate_system_contract_error_test
to generate tests on system contracts that invalidate a block in case of error (#1394).
Exceptions
- ✨
BlockException.SYSTEM_CONTRACT_EMPTY
: Raised when a required system contract was not found in the state by the time it was due to execution with a system transaction call (#1394). - ✨
BlockException.SYSTEM_CONTRACT_CALL_FAILED
: Raised when a system contract call made by a system transaction fails (#1394). - ✨
BlockException.INVALID_BLOCK_HASH
: Raised when the calculated block hash does not match the expectation (Currently only during Engine API calls) (#1416). - ✨
BlockException.INVALID_VERSIONED_HASHES
: Raised when a discrepancy is found between versioned hashes in the payload and the ones found in the transactions (#1416).
🧪 Test Cases
- ✨ EIP-7702: Test precompile case in same transaction as delegation without extra gas in case of precompile code execution; parametrize all call opcodes in existing precompile test (#1431).
- ✨ EIP-7702: Add invalid nonce authorizations tests for the case of multiple signers when the sender's nonce gets increased (#1441).
- ✨ EIP-7702: Add a test that verifies that set code transactions are correctly rejected before Prague activation (#1463).
- ✨ EIP-7623: Additionally parametrize transaction validity tests with the
to
set to an EOA account (previously only contracts) (#1422). - ✨ EIP-7251: Add EIP-7251 test cases for modified consolidations contract that allows more consolidations (#1465).
- ✨ EIP-6110: Add extra deposit request edge cases, sending eth to the deposit contract while sending a deposit request (#1467).
- ✨ EIP-6110: Add cases for deposit log layout and other topics (ERC-20) transfer (#1371).
- ✨ EIP-7251: Remove pytest skips for consolidation request cases (#1449).
- ✨ EIP-7002, EIP-7251: Add cases to verify behavior of contracts missing at fork (#1394).
- ✨ EIP-7002, EIP-7251: Add cases to verify behavior of system contract errors invalidating a block (#1394).
- 🔀 Remove EIP-7698: EIP has been removed and the tests related to it have also been removed, while preserving a subset of the tests to verify that functionality is removed in clients (#1451).
📋 Misc
- 🐞 Configure
markdownlint
to expect an indent of 4 with unordered lists (otherwise HTML documentation is rendered incorrectly, #1460). - 🔀 Update
eels_resolutions.json
to point to temporary commitbb0eb750d643ced0ebf5dec732cdd23558d0b7f2
, which is based onforks/prague
branch, commitd9a7ee24db359aacecd636349b4f3ac95a4a6e71
, with PRs ethereum/execution-specs#1182, ethereum/execution-specs#1183 and ethereum/execution-specs#1191 merged (#1394).
✨ New Contributors
- @GarmashAlex made their first contribution in #1370
Full Changelog: v4.2.0...v4.3.0