Skip to content

Vltava (v4.3.0)

Compare
Choose a tag to compare
@github-actions github-actions released this 18 Apr 19:05
· 73 commits to main since this release
f330aac

Summary

This release introduces more coverage for Prague EIPs, along with many new features described below.

💥 Breaking Change

EIP Changes

Consume engine strict exception checking

consume engine now checks exceptions returned by the execution clients in their Engine API responses, specifically in the validationErrorfield 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 use itertools object in the spec BaseTest 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

✨ New Contributors

Full Changelog: v4.2.0...v4.3.0