From ca213f58036846e82871a05f99f395d867ae3885 Mon Sep 17 00:00:00 2001 From: spencer-tb Date: Tue, 29 Apr 2025 16:30:10 +0100 Subject: [PATCH] chore(all): move eof from osaka to unscheduled. --- .github/actions/build-fixtures/action.yaml | 2 +- .github/configs/feature.yaml | 2 +- .github/workflows/coverage.yaml | 4 +- docs/CHANGELOG.md | 9 + src/cli/eofwrap.py | 4 +- src/ethereum_test_forks/__init__.py | 2 + src/ethereum_test_forks/forks/forks.py | 21 +- .../filler/gen_test_doc/gen_test_doc.py | 8 +- tests/osaka/eip7692_eof_v1/eof_tracker.md | 502 ------------------ .../test_set_code_txs_2.py | 2 +- tests/unscheduled/__init__.py | 1 + .../eip7692_eof_v1/__init__.py | 2 +- .../eip7692_eof_v1/eip3540_eof_v1/__init__.py | 0 .../eip7692_eof_v1/eip3540_eof_v1/opcodes.py | 0 .../eip7692_eof_v1/eip3540_eof_v1/spec.py | 0 .../test_all_opcodes_in_container.py | 0 .../eip3540_eof_v1/test_container_size.py | 0 .../test_container_validation.py | 0 .../eip3540_eof_v1/test_eof_example.py | 0 .../eip3540_eof_v1/test_execution.py | 0 .../eip3540_eof_v1/test_execution_function.py | 0 .../eip3540_eof_v1/test_extcode.py | 0 .../test_migrated_valid_invalid.py | 0 .../eip3540_eof_v1/test_opcodes_in_legacy.py | 0 .../test_section_header_body_mismatch.py | 0 .../eip3540_eof_v1/test_section_order.py | 0 .../eip3540_eof_v1/test_section_size.py | 0 .../eip4200_relative_jumps/__init__.py | 0 .../eip4200_relative_jumps/helpers.py | 0 .../eip4200_relative_jumps/test_rjump.py | 0 .../eip4200_relative_jumps/test_rjumpi.py | 0 .../eip4200_relative_jumps/test_rjumpv.py | 0 .../eip4750_functions/__init__.py | 0 .../eip4750_functions/helpers.py | 0 .../eip4750_functions/test_callf_execution.py | 0 .../eip4750_functions/test_code_validation.py | 0 .../eip7692_eof_v1/eip5450_stack/__init__.py | 0 .../eip5450_stack/test_code_validation.py | 0 .../eip5450_stack/test_execution.py | 0 .../eip7692_eof_v1/eip6206_jumpf/__init__.py | 0 .../eip7692_eof_v1/eip6206_jumpf/helpers.py | 0 .../eip7692_eof_v1/eip6206_jumpf/spec.py | 0 .../eip6206_jumpf/test_jumpf_execution.py | 0 .../eip6206_jumpf/test_jumpf_stack.py | 0 .../eip6206_jumpf/test_jumpf_target.py | 0 .../eip6206_jumpf/test_jumpf_validation.py | 0 .../test_nonreturning_validation.py | 0 .../eip663_dupn_swapn_exchange/__init__.py | 0 .../eip663_dupn_swapn_exchange/test_dupn.py | 0 .../test_exchange.py | 0 .../eip663_dupn_swapn_exchange/test_swapn.py | 0 .../eip7069_extcall/__init__.py | 0 .../eip7692_eof_v1/eip7069_extcall/helpers.py | 0 .../eip7692_eof_v1/eip7069_extcall/spec.py | 0 .../test_address_space_extension.py | 0 .../eip7069_extcall/test_calldata.py | 0 .../eip7069_extcall/test_calls.py | 3 +- .../eip7069_extcall/test_gas.py | 0 .../test_returndatacopy_memory_expansion.py | 0 .../eip7069_extcall/test_returndataload.py | 0 .../eip7480_data_section/__init__.py | 0 .../eip7480_data_section/spec.py | 0 .../test_code_validation.py | 0 .../eip7480_data_section/test_data_opcodes.py | 0 .../test_datacopy_memory_expansion.py | 0 .../eip7620_eof_create/__init__.py | 2 +- .../eip7620_eof_create/helpers.py | 0 .../eip7692_eof_v1/eip7620_eof_create/spec.py | 0 .../eip7620_eof_create/test_eofcreate.py | 0 .../test_eofcreate_failures.py | 4 +- .../eip7620_eof_create/test_gas.py | 0 .../test_legacy_eof_creates.py | 0 .../eip7620_eof_create/test_memory.py | 0 .../eip7620_eof_create/test_returncode.py | 0 .../test_subcontainer_validation.py | 0 .../eip7873_tx_create/__init__.py | 0 .../eip7692_eof_v1/eip7873_tx_create/spec.py | 0 .../eip7873_tx_create/test_creation_tx.py | 0 .../eip7873_tx_create/test_txcreate.py | 0 .../test_txcreate_failures.py | 4 +- .../test_txcreate_validates.py | 0 .../unscheduled/eip7692_eof_v1/eof_tracker.md | 502 ++++++++++++++++++ .../eip7692_eof_v1/gas_test.py | 2 +- tox.ini | 10 +- whitelist.txt | 1 + 85 files changed, 555 insertions(+), 532 deletions(-) delete mode 100644 tests/osaka/eip7692_eof_v1/eof_tracker.md create mode 100644 tests/unscheduled/__init__.py rename tests/{osaka => unscheduled}/eip7692_eof_v1/__init__.py (98%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/__init__.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/opcodes.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/spec.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_container_size.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_eof_example.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_execution.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_execution_function.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_migrated_valid_invalid.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_opcodes_in_legacy.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_section_header_body_mismatch.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip3540_eof_v1/test_section_size.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip4200_relative_jumps/__init__.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip4200_relative_jumps/helpers.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip4750_functions/__init__.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip4750_functions/helpers.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip4750_functions/test_callf_execution.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip4750_functions/test_code_validation.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip5450_stack/__init__.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip5450_stack/test_code_validation.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip5450_stack/test_execution.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip6206_jumpf/__init__.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip6206_jumpf/helpers.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip6206_jumpf/spec.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip6206_jumpf/test_jumpf_target.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip663_dupn_swapn_exchange/__init__.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_dupn.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_exchange.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_swapn.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7069_extcall/__init__.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7069_extcall/helpers.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7069_extcall/spec.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7069_extcall/test_calldata.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7069_extcall/test_calls.py (99%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7069_extcall/test_gas.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7069_extcall/test_returndatacopy_memory_expansion.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7069_extcall/test_returndataload.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7480_data_section/__init__.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7480_data_section/spec.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7480_data_section/test_code_validation.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7480_data_section/test_data_opcodes.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7480_data_section/test_datacopy_memory_expansion.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7620_eof_create/__init__.py (90%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7620_eof_create/helpers.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7620_eof_create/spec.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7620_eof_create/test_eofcreate_failures.py (99%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7620_eof_create/test_gas.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7620_eof_create/test_legacy_eof_creates.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7620_eof_create/test_memory.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7620_eof_create/test_returncode.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7873_tx_create/__init__.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7873_tx_create/spec.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7873_tx_create/test_creation_tx.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7873_tx_create/test_txcreate.py (100%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7873_tx_create/test_txcreate_failures.py (99%) rename tests/{osaka => unscheduled}/eip7692_eof_v1/eip7873_tx_create/test_txcreate_validates.py (100%) create mode 100644 tests/unscheduled/eip7692_eof_v1/eof_tracker.md rename tests/{osaka => unscheduled}/eip7692_eof_v1/gas_test.py (98%) diff --git a/.github/actions/build-fixtures/action.yaml b/.github/actions/build-fixtures/action.yaml index ed88aa32b3f..8be4a052c65 100644 --- a/.github/actions/build-fixtures/action.yaml +++ b/.github/actions/build-fixtures/action.yaml @@ -43,7 +43,7 @@ runs: env: tests_url: https://github.com/ethereum/tests/archive/refs/tags/v tests_version: 14.1 - output_path: blockchain_tests/osaka/eofwrap + output_path: blockchain_tests/unscheduled/eofwrap - name: Generate fixtures using fill shell: bash run: | diff --git a/.github/configs/feature.yaml b/.github/configs/feature.yaml index c0d0f42b40d..2ed444f7d27 100644 --- a/.github/configs/feature.yaml +++ b/.github/configs/feature.yaml @@ -17,6 +17,6 @@ zkevm: solc: 0.8.21 eip7692: evm-type: eip7692 - fill-params: --fork=Osaka ./tests/osaka + fill-params: --fork=EOFv1 ./tests/unscheduled solc: 0.8.21 eofwrap: true diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml index bfb426574d7..443d111fd73 100644 --- a/.github/workflows/coverage.yaml +++ b/.github/workflows/coverage.yaml @@ -5,7 +5,7 @@ on: paths: - "tests/**" # This triggers the workflow for any changes in the tests folder - "!tests/prague/**" # exclude changes in 'tests/prague' - - "!tests/osaka/**" # exclude changes in 'tests/osaka' + - "!tests/unscheduled/**" # exclude changes in 'tests/unscheduled' jobs: evmone-coverage-diff: @@ -35,7 +35,7 @@ jobs: tests: - tests/**/test_*.py - '!tests/prague/**' - - '!tests/osaka/**' + - '!tests/unscheduled/**' converted_tests: - converted-ethereum-tests.txt diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 2d8aa5aafac..63c9fb98e59 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -8,6 +8,14 @@ Test fixtures for use by clients are available for each release on the [Github r ### ๐Ÿ’ฅ Breaking Change +#### EOF removed from Osaka + +Following ["Interop Testing Call 34"](https://github.com/ethereum/pm/issues/1499) and the procedural EIPs [PR](https://github.com/ethereum/EIPs/pull/9703) the decision to remove EOF from Osaka was made. + +To accommodate EOF testing for the interim within EEST, its tests have migrated to a new `tests/unscheduled` folder. This folder will now contain tests for features that are not yet CFI'd in any fork. When EOF is CFI'd for a fork in the future, all tests will be moved from unscheduled to the respective future fork folder. + +A new fork `EOFv1` has additionally been created to fill and consume EOF related fixtures. Client tests fillers such as `evmone` (and client consumers) will now need to use this fork name. + ### ๐Ÿ› ๏ธ Framework - โœจ Add an empty account function for usage within fill and execute ([#1482](https://github.com/ethereum/execution-spec-tests/pull/1482)). @@ -20,6 +28,7 @@ Test fixtures for use by clients are available for each release on the [Github r - โœจ Engine API updates for Osaka, add `get_blobs` rpc method ([#1510](https://github.com/ethereum/execution-spec-tests/pull/1510)). - โœจ The EIP Version checker has been moved from `fill` and `execute` to it's own command-line tool `check_eip_versions` that gets ran daily as a Github Action ([#1537](https://github.com/ethereum/execution-spec-tests/pull/1537)). +๐Ÿ”€ Add new `tests/unscheduled` folder, move EOF from Osaka to unscheduled, add `EOFv1` fork name for EOF tests ([#1507](https://github.com/ethereum/execution-spec-tests/pull/1507)). ### ๐Ÿงช Test Cases diff --git a/src/cli/eofwrap.py b/src/cli/eofwrap.py index 246ac303fb0..ce648e5257a 100644 --- a/src/cli/eofwrap.py +++ b/src/cli/eofwrap.py @@ -26,7 +26,7 @@ from ethereum_test_base_types.conversions import to_hex from ethereum_test_fixtures.blockchain import FixtureBlock, InvalidFixtureBlock from ethereum_test_fixtures.file import Fixtures -from ethereum_test_forks.forks.forks import Osaka +from ethereum_test_forks.forks.forks import EOFv1 from ethereum_test_specs.blockchain import Block, BlockchainFixture, BlockchainTest from ethereum_test_specs.debugging import print_traces from ethereum_test_specs.eof import EOFParse @@ -309,7 +309,7 @@ def _wrap_fixture(self, fixture: BlockchainFixture, traces: bool): result = test.generate( t8n=t8n, - fork=Osaka, + fork=EOFv1, fixture_format=BlockchainFixture, ) result.info["fixture-format"] = "blockchain_test" diff --git a/src/ethereum_test_forks/__init__.py b/src/ethereum_test_forks/__init__.py index 30196f24fdb..495e0edff1f 100644 --- a/src/ethereum_test_forks/__init__.py +++ b/src/ethereum_test_forks/__init__.py @@ -8,6 +8,7 @@ Cancun, Constantinople, ConstantinopleFix, + EOFv1, Frontier, GrayGlacier, Homestead, @@ -59,6 +60,7 @@ "Byzantium", "Constantinople", "ConstantinopleFix", + "EOFv1", "ForkRangeDescriptor", "Frontier", "GrayGlacier", diff --git a/src/ethereum_test_forks/forks/forks.py b/src/ethereum_test_forks/forks/forks.py index be7deeaeb82..1126a93602a 100644 --- a/src/ethereum_test_forks/forks/forks.py +++ b/src/ethereum_test_forks/forks/forks.py @@ -1291,10 +1291,27 @@ def engine_get_payload_version( """From Osaka, get payload calls must use version 5.""" return 5 + @classmethod + def is_deployed(cls) -> bool: + """ + Flag that the fork has not been deployed to mainnet; it is under active + development. + """ + return False + + @classmethod + def solc_min_version(cls) -> Version: + """Return minimum version of solc that supports this fork.""" + return Version.parse("1.0.0") # set a high version; currently unknown + + +class EOFv1(Prague, solc_name="cancun"): + """EOF fork.""" + @classmethod def evm_code_types(cls, block_number: int = 0, timestamp: int = 0) -> List[EVMCodeType]: """EOF V1 is supported starting from Osaka.""" - return super(Osaka, cls).evm_code_types( + return super(EOFv1, cls).evm_code_types( block_number, timestamp, ) + [EVMCodeType.EOF_V1] @@ -1308,7 +1325,7 @@ def call_opcodes( (Opcodes.EXTCALL, EVMCodeType.EOF_V1), (Opcodes.EXTSTATICCALL, EVMCodeType.EOF_V1), (Opcodes.EXTDELEGATECALL, EVMCodeType.EOF_V1), - ] + super(Osaka, cls).call_opcodes(block_number, timestamp) + ] + super(EOFv1, cls).call_opcodes(block_number, timestamp) @classmethod def is_deployed(cls) -> bool: diff --git a/src/pytest_plugins/filler/gen_test_doc/gen_test_doc.py b/src/pytest_plugins/filler/gen_test_doc/gen_test_doc.py index 412698c5d53..247ddd954c2 100644 --- a/src/pytest_plugins/filler/gen_test_doc/gen_test_doc.py +++ b/src/pytest_plugins/filler/gen_test_doc/gen_test_doc.py @@ -491,7 +491,7 @@ def add_directory_page_props(self) -> None: pytest_node_id=str(directory), source_code_url=generate_github_url(directory, branch_or_commit_or_tag=self.ref), # TODO: This won't work in all cases; should be from the development fork - # Currently breaks for `tests/osaka/eip7692_eof_v1/index.md` # noqa: SC100 + # Currently breaks for `tests/unscheduled/eip7692_eof_v1/index.md` # noqa: SC100 target_or_valid_fork=fork.capitalize(), package_name=get_import_path(directory), # init.py will be used for docstrings ) @@ -552,8 +552,8 @@ def sort_by_fork_deployment_and_path(x: PageProps) -> Tuple[Any, ...]: - ("Test Case Reference",) -> tests/index.md - ("Test Case Reference", "Berlin") -> tests/berlin/index.md - - ("Test Case Reference", "Osaka", "EIP-7692 EOF V1", tracker.md") - tests/osaka/eip7692_eof_v1/tracker.md + - ("Test Case Reference", "EIP-7692 EOF V1", tracker.md") + tests/unscheduled/eip7692_eof_v1/tracker.md - ("Test Case Reference", "Shanghai", "EIP-3855 PUSH0", "Spec") -> tests/shanghai/eip3855_push0/spec.py @@ -566,7 +566,7 @@ def sort_by_fork_deployment_and_path(x: PageProps) -> Tuple[Any, ...]: length = len(x.path.parts) if length > 1: fork = str(x.path.parts[1]).lower() # the fork folder from the relative path - if fork not in fork_order: # speculative features added to the end + if fork not in fork_order: # unscheduled features added to the end return (999, str(x.path)) if length == 1: return (0,) diff --git a/tests/osaka/eip7692_eof_v1/eof_tracker.md b/tests/osaka/eip7692_eof_v1/eof_tracker.md deleted file mode 100644 index eebd68a13f1..00000000000 --- a/tests/osaka/eip7692_eof_v1/eof_tracker.md +++ /dev/null @@ -1,502 +0,0 @@ -# EOF Testing Coverage Tracker - -- [ ] Example Test Case 1 -- [x] Example Test Case 2 ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_eof_example.py`](./eip3540_eof_v1/test_eof_example/index.md)) - -## EIP-3540: EOF - EVM Object Format v1 - -### Validation - -- [x] Empty code is not a valid EOF ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k empty_container`) -- [x] Valid container without data section ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k single_code_section_no_data_section`) -- [x] Valid container with data section ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md) `-k single_code_section_with_data_section`) -- [x] Valid container with truncated data section ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k data_section_contents_incomplete`, [`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_migrated_valid_invalid.py::test_migrated_valid_invalid`](./eip3540_eof_v1/test_migrated_valid_invalid/test_migrated_valid_invalid.md) `-k data_section_contents_incomplete`) -- [x] Valid container with data section truncated to empty ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_data_section_contents`, [`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_migrated_valid_invalid.py::test_migrated_valid_invalid`](./eip3540_eof_v1/test_migrated_valid_invalid/test_migrated_valid_invalid.md) `-k no_data_section_contents`) -- [x] Valid containers with multiple code sections ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md) `-k multiple_code_sections`) -- [x] Valid containers with max number of code sections ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_max_code_sections`](./eip3540_eof_v1/test_container_validation/test_max_code_sections.md)) -- [x] Too many code sections ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k too_many_code_sections`) -- [x] Truncated magic ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k incomplete_magic`) -- [x] Valid container except magic ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_magic_validation`](./eip3540_eof_v1/test_container_validation/test_magic_validation.md)) -- [x] Truncated before version ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_version`) -- [x] Valid container except version ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_version_validation`](./eip3540_eof_v1/test_container_validation/test_version_validation.md)) -- [x] Truncated before type section header ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_type_header`) -- [x] Truncated before type section size ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_type_section_size`) -- [x] Truncated type section size ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k incomplete_type_section_size`) -- [x] No type section header ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k test_position_CasePosition.HEADER-section_test_SectionTest.MISSING-section_kind_TYPE`) -- [x] Truncated before code section header ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_code_header`) -- [x] Truncated before code section number ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k code_section_count_missing`) -- [x] Truncated code section number ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k code_section_count_incomplete`) -- [x] Truncated before code section size ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k code_section_size_missing`) -- [x] Truncated code section size ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k code_section_size_incomplete`) -- [x] No code section header ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k test_position_CasePosition.HEADER-section_test_SectionTest.MISSING-section_kind_CODE`) -- [x] Zero code section number ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k zero_code_sections_header`) -- [x] Zero code section size ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k empty_code_section`) -- [x] Zero code section size with non-empty data section ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k empty_code_section_with_non_empty_data`) -- [x] No container sections, truncated before data section header ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_header_data_section`) -- [x] Container sections present, truncated before data section header ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_header_data_section_with_container_section`) -- [x] Truncated before data section size ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_data_section_size`) -- [x] Truncated data section size ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k data_section_size_incomplete`) -- [x] Truncated before header terminator ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k terminator_incomplete`) -- [x] Truncated before type section ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_before_type_section`) -- [x] Type section truncated before outputs ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_type_section_before_outputs`) -- [x] Type section truncated before max_stack_height ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_type_section_before_max_stack_height`) -- [x] Type section truncated max_stack_height ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_type_section_truncated_max_stack_height`) -- [x] Truncated before code sections ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_code_section_contents`) -- [x] Truncated code section ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k incomplete_code_section_contents`) -- [x] Data section empty, trailing bytes ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_data_section_contents`) -- [x] Data section non-empty, trailing bytes ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k trailing_bytes_after_data_section`) -- [x] Wrong order of sections ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py`](./eip3540_eof_v1/index.md)) -- [x] No data section header ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k test_position_CasePosition.HEADER-section_test_SectionTest.MISSING-section_kind_DATA`) -- [x] Multiple data sections ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k multiple_data_sections`, [`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k multiple_code_and_data_sections`) -- [x] Unknown section id ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k unknown_section_1`, [`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k unknown_section_2`) -- [x] Type section size != 4 * code section number ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k type_section_too`) -- [x] Code section with max max_stack_height ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md) `-k single_code_section_max_stack_size`) -- [x] Code section with max_stack_height above limit ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k single_code_section_max_stack_size_too_large`) -- [x] Valid code sections with inputs/outputs ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_with_inputs_outputs`) -- [x] Valid code section with max inputs ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_input_maximum`) -- [x] Valid code section with max outputs ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_output_maximum`) -- [x] Code sections with invalid number of inputs/outputs ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_input_too_large`, [`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_output_too_large`) -- [x] First section with inputs/outputs ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k invalid_first_code_section`) -- [x] Multiple type section headers ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k too_many_type_sections`) -- [x] Multiple code section headers ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k multiple_code_headers`) -- [x] Multiple data section headers ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k multiple_data_sections`) -- [x] Container without type section ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k 'SectionTest.MISSING-section_kind_TYPE'`) -- [x] Container without code sections ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k 'SectionTest.MISSING-section_kind_CODE'`) -- [x] Container without data section ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k 'SectionTest.MISSING-section_kind_DATA'`) -- [x] Valid containers without data section and with subcontainers ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md)`[fork_Osaka-eof_test-single_subcontainer_without_data]`) -- [x] Valid containers with data section and with subcontainers ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md)`[fork_Osaka-eof_test-single_subcontainer_with_data]`) -- [x] Valid container with maximum number of subcontainers ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py::test_wide_container`](./eip7620_eof_create/test_subcontainer_validation/test_wide_container.md)`[fork_Osaka-eof_test-256]`) -- [x] Container with number of subcontainers above the limit ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py::test_wide_container`](./eip7620_eof_create/test_subcontainer_validation/test_wide_container.md)`[fork_Osaka-eof_test-257]`) -- [x] Subcontainer section header truncated before subcontainer number ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k no_container_section_count`) -- [x] Subcontainer section header truncated before subcontainer size ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k incomplete_container_section_count`) -- [x] Truncated subcontainer size ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k no_container_section_size`, [`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k incomplete_container_section_size`) -- [x] Zero container section number ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k zero_container_section_count`) -- [x] Zero container section size ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k zero_size_container_section`) -- [x] Truncated container section body ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k no_container_section_contents`) -- [x] Multiple container section headers ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k multiple_container_headers`) -- [x] Invalid subcontainer ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py`](./eip7620_eof_create/test_subcontainer_validation/index.md)`-k invalid`) -- [x] Invalid subcontainer on a deep nesting level ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py::test_deep_container`](./eip7620_eof_create/test_subcontainer_validation/test_deep_container.md)) -- [x] Max number of inputs/outputs in a section ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md)`[fork_Osaka-eof_test-code_section_input_maximum]`, [`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md)`[fork_Osaka-eof_test-code_section_output_maximum]`) -- [x] Number of inputs/outputs in a section above the limit ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_input_too_large`, [`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_output_too_large`) - -### Execution - -- [x] Execution of EOF contracts ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_execution.py::test_eof_execution`](./eip3540_eof_v1/test_execution/test_eof_execution.md)) -- [x] Legacy executing EXTCODESIZE of EOF contract ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py::test_legacy_calls_eof_sstore`](./eip3540_eof_v1/test_extcode/test_legacy_calls_eof_sstore.md)) -- [x] Legacy executing EXTCODEHASH of EOF contract ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py::test_legacy_calls_eof_sstore`](./eip3540_eof_v1/test_extcode/test_legacy_calls_eof_sstore.md)) -- [x] Legacy executing EXTCODECOPY of EOF contract ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py::test_legacy_calls_eof_sstore`](./eip3540_eof_v1/test_extcode/test_legacy_calls_eof_sstore.md)) - -## EIP-3670: EOF - Code Validation - -### Validation - -- [x] Code section with invalid opcodes is rejected ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_all_opcodes_in_container`](./eip3540_eof_v1/test_all_opcodes_in_container/test_all_opcodes_in_container.md)) -- [x] INVALID opcode is valid ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_all_opcodes_in_container`](./eip3540_eof_v1/test_all_opcodes_in_container/test_all_opcodes_in_container.md)) -- [x] Truncated PUSH data ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_truncated_data_portion_opcodes`](./eip3540_eof_v1/test_all_opcodes_in_container/test_truncated_data_portion_opcodes.md)) -- [x] Opcodes deprecated in EOF are rejected ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_all_opcodes_in_container`](./eip3540_eof_v1/test_all_opcodes_in_container/test_all_opcodes_in_container.md)) -- [x] Codes with each valid opcodes ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_all_opcodes_in_container`](./eip3540_eof_v1/test_all_opcodes_in_container/test_all_opcodes_in_container.md)) -- [x] Undefined instruction after terminating instruction ([`tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_invalid_opcodes_after_stop`](./eip3540_eof_v1/test_all_opcodes_in_container/test_invalid_opcodes_after_stop.md)) - -## EIP-4200: EOF - Static relative jumps - -### Validation - -- [x] Valid RJUMP with various offsets ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_positive_negative`](./eip4200_relative_jumps/test_rjump/test_rjump_positive_negative.md)) -- [x] Valid RJUMP with maximum offset ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_maxes`](./eip4200_relative_jumps/test_rjump/test_rjump_maxes.md)) -- [x] Valid RJUMP with minimum offset ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_maxes`](./eip4200_relative_jumps/test_rjump/test_rjump_maxes.md)) -- [x] Valid RJUMPI with various offsets ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_forwards`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_forwards.md)) -- [x] Valid RJUMPI with maximum offset ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_max_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_max_forward.md)) -- [x] Valid RJUMPI with minimum offset ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_max_backward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_max_backward.md)) -- [x] Valid RJUMPV with various number of offsets and various offsets ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_forwards`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_forwards.md)) -- [x] Valid RJUMPV with table size 256 ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_full_table`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_full_table.md)) -- [x] Valid RJUMPV containing maximum offset ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_max_forwards`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_max_forwards.md)) -- [ ] Valid RJUMPV containing minimum offset -- [x] Truncated before RJUMP immediate ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_truncated_rjump`](./eip4200_relative_jumps/test_rjump/test_rjump_truncated_rjump.md)) -- [x] Truncated RJUMP immediate ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_truncated_rjump_2`](./eip4200_relative_jumps/test_rjump/test_rjump_truncated_rjump_2.md)) -- [x] RJUMP out of container bounds ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_after_container`](./eip4200_relative_jumps/test_rjump/test_rjump_after_container.md)) -- [x] RJUMP out of section bounds ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_into_data`](./eip4200_relative_jumps/test_rjump/test_rjump_into_data.md)) -- [x] RJUMP into immediate ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_into_push_1`](./eip4200_relative_jumps/test_rjump/test_rjump_into_push_1.md)) -- [x] Truncated before RJUMPI immediate ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_truncated`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_truncated.md)) -- [x] Truncated RJUMPI immediate ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_truncated_2`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_truncated_2.md)) -- [x] RJUMPI out of container bounds ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_after_container`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_after_container.md)) -- [x] RJUMPI out of section bounds ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_into_data`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_into_data.md)) -- [x] RJUMPI into immediate ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_into_push_1`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_into_push_1.md)) -- [x] Truncated before RJUMPV immediate ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_truncated_empty`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_truncated_empty.md)) -- [x] Truncated RJUMPV immediate ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_truncated`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_truncated.md)) -- [x] RJUMPV out of container bounds ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_after_container`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_after_container.md)) -- [x] RJUMPV out of section bounds ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_into_data`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_into_data.md)) -- [x] RJUMPV into immediate ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_into_push_1`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_into_push_1.md)) - -### Execution - -- [x] RJUMP forwards ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_positive_negative`](./eip4200_relative_jumps/test_rjump/test_rjump_positive_negative.md)) -- [x] RJUMP backwards ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_positive_negative`](./eip4200_relative_jumps/test_rjump/test_rjump_positive_negative.md)) -- [x] RJUMP with 0 offset ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_zero`](./eip4200_relative_jumps/test_rjump/test_rjump_zero.md)) -- [x] RJUMPI forwards with condition true/false ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_condition_forwards`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_condition_forwards.md)) -- [x] RJUMPI backwards with condition true/false ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_condition_backwards`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_condition_backwards.md)) -- [x] RJUMPI with 0 offset with condition true/false ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_condition_zero`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_condition_zero.md)) -- [x] RJUMPV with different case values ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_condition`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_condition.md)) -- [x] RJUMPV with case value out of table bounds ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_condition`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_condition.md)) -- [x] RJUMPV with max cases number ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_condition`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_condition.md), [`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py`](./eip4200_relative_jumps/test_rjumpv/index.md)`-k test_rjumpv_full_table`) - -## EIP-4750: EOF - Functions - -### Validation - -- [x] Valid CALLFs ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_callf_execution.py::test_callf`](./eip4750_functions/test_callf_execution/test_callf.md)) -- [x] CALLFs to non-existing sections ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_invalid_code_section_index`](./eip4750_functions/test_code_validation/test_invalid_code_section_index.md)) -- [x] Truncated CALLF immediate ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_truncated_immediate`](./eip4750_functions/test_code_validation/test_callf_truncated_immediate.md)) -- [x] Unreachable code sections ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_unreachable_code_sections`](./eip4750_functions/test_code_validation/test_unreachable_code_sections.md)) -- [x] Sections reachable from other sections, but not reachable from section 0 ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_unreachable_code_sections`](./eip4750_functions/test_code_validation/test_unreachable_code_sections.md)) -- [x] Unreachable code section that calls itself with JUMPF ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_unreachable_code_sections`](./eip4750_functions/test_code_validation/test_unreachable_code_sections.md)) -- [x] Unreachable code section that calls itself with CALLF ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_unreachable_code_sections`](./eip4750_functions/test_code_validation/test_unreachable_code_sections.md)) -- [ ] RETF with maximum number of outputs (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) - -### Execution - -- [ ] CALLF/RETF execution (ethereum/tests: src/EIPTestsFiller/StateTests/stEOF/stEIP4200/CALLF_RETF_ExecutionFiller.yml) -- [ ] Dispatch to CALLF to different functions based on calldata (ethereum/tests: src/EIPTestsFiller/StateTests/stEOF/stEIP4200/CALLF_RETF_ExecutionFiller.yml) -- [ ] Maximum number of code sections, calling each section with CALLF (ethereum/tests: src/EIPTestsFiller/StateTests/stEOF/stEIP4200/CALLF_RETF_ExecutionFiller.yml) - -## EIP-5450: EOF - Stack Validation - -### Validation - -#### Terminating instructions - -- [ ] Check all terminating opcodes (ethereum/tests: ./src/EOFTestsFiller/efExample/validInvalidFiller.yml src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) -- [ ] Code section not terminating (executing beyond section end) (ethereum/tests: ./src/EOFTestsFiller/efExample/validInvalidFiller.yml src/EOFTestsFiller/EIP5450/validInvalidFiller.yml src/EOFTestsFiller/efStack/no_terminating_instruction_Copier.json) -- [ ] Code section ending with NOP (not terminating) (src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) -- [ ] Check that unreachable code is invalid after all terminating instructions (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) - -#### Jumps - -##### RJUMP - -- [x] Valid RJUMP backwards in a constant stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_backward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_backward.md) -- [x] Invalid RJUMP backwards with mismatching stack in a constant stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjump/test_rjump_backward_invalid_max_stack_height.md) -- [x] Valid RJUMP backwards in a variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_backward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_backward.md) -- [x] Invalid RJUMP backwards with mismatching stack in a variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjump/test_rjump_backward_invalid_max_stack_height.md) -- [x] Valid RJUMP forwards ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_forward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_forward.md) -- [x] Valid RJUMP forwards from different stack ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_forward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_forward.md) -- [x] Valid RJUMP forwards in variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_forward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_forward.md) -- [x] Valid RJUMP forwards from different stack in variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_forward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_forward.md) -- [ ] Valid empty infinite loop with RJUMP (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) -- [ ] Valid balanced infinite loop (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) -- [x] RJUMP to self (including variadic stack height) ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_into_self`](./eip4200_relative_jumps/test_rjump/test_rjump_into_self.md)) - -##### RJUMPI - -- [x] Valid RJUMPI backwards in a constant stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_backward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_backward.md) -- [x] Invalid RJUMPI backwards with mismatching stack in a constant stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_backward_invalid_max_stack_height.md) -- [x] Valid RJUMPI backwards in a variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_backward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_backward.md) -- [x] Invalid RJUMPI backwards with mismatching stack in a variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_backward_invalid_max_stack_height.md) -- [x] RJUMPI forward with branches of equal stack height ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] RJUMPI forward with branches of equal stack height in a variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] RJUMPI forward with branches of different stack height ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] RJUMPI forward with branches of different stack height in a variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] Valid loop using RJUMPI ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] Valid loop with a break using RJUMPI - equal stack after break and normal loop end ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] Valid loop with a break using RJUMPI - equal stack after break and normal loop end, variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] Valid loop with a break using RJUMPI - different stack after break and normal loop end ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] Valid loop with a break using RJUMPI - different stack after break and normal loop end, variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] If-then-else with equal stack height in branches ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] If-then-else with equal stack height in branches, variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] If-then-else with different stack height in branches ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] If-then-else with different stack height in branches, variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) -- [x] RJUMPI to self (including variadic stack height) ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_into_self`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_into_self.md)) - -##### RJUMPV - -- [x] Valid RJUMPV backwards in a constant stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_backward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_backward.md) -- [x] Invalid RJUMPV backwards with mismatching stack in a constant stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_backward_invalid_max_stack_height.md) -- [x] Valid RJUMPV backwards in a variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_backward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_backward.md) -- [x] Invalid RJUMPV backwards with mismatching stack in a variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_backward_invalid_max_stack_height.md) -- [x] RJUMPV forward with branches of equal stack height ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) -- [x] RJUMPV forward with branches of equal stack height in a variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) -- [x] RJUMPV forward with branches of different stack height ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) -- [x] RJUMPV forward with branches of different stack height in a variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) -- [ ] Valid infinite loop using RJUMPV (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) -- [x] Switch with equal stack height in branches ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) -- [x] Switch with equal stack height in branches, variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) -- [x] Switch with different stack height in branches ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) -- [x] Switch with different stack height in branches, variable stack segment ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) -- [x] RJUMPV to self (including variadic stack height) ([`tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_into_self`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_into_self.md)) - -##### Combinations - -- [ ] RJUMP and RJUMPI with the same target and equal stack height (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpi_Copier.json) -- [ ] RJUMP and RJUMPI with the same target and equal stack height in a variable stack segment (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpi_variable_stack_Copier.json) -- [ ] RJUMP and RJUMPI with the same target and different stack height (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpi_Copier.json) -- [ ] RJUMP and RJUMPI with the same target and different stack height in a variable stack segment (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpi_variable_stack_Copier.json) -- [ ] RJUMP and RJUMPV with the same target and equal stack height (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpv_Copier.json) -- [ ] RJUMP and RJUMPV with the same target and equal stack height in a variable stack segment (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpv_variable_stack_Copier.json) -- [ ] RJUMP and RJUMPV with the same target and different stack height (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpv_Copier.json) -- [ ] RJUMP and RJUMPV with the same target and different stack height in a variable stack segment (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpv_variable_stack_Copier.json) -- [ ] RJUMPI and RJUMPV with the same target - -#### Stack underflow - -- [x] Stack underflows ([`tests/osaka/eip7692_eof_v1/eip5450_stack/test_code_validation.py::test_all_opcodes_stack_underflow`](./eip5450_stack/test_code_validation/test_all_opcodes_stack_underflow.md)) -- [x] Stack underflow with enough items available in caller stack - can't dig into caller frame ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) -- [x] Stack underflow in variable stack segment, only min underflow ([`tests/osaka/eip7692_eof_v1/eip5450_stack/test_code_validation.py::test_all_opcodes_stack_underflow`](./eip5450_stack/test_code_validation/test_all_opcodes_stack_underflow.md)) -- [x] Stack underflow in variable stack segment, both min and max underflow ([`tests/osaka/eip7692_eof_v1/eip5450_stack/test_code_validation.py::test_all_opcodes_stack_underflow`](./eip5450_stack/test_code_validation/test_all_opcodes_stack_underflow.md)) - -#### CALLF - -- [x] Valid CALLFs to functions with inputs ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) -- [ ] CALLF stack underflows ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) - - [ ] ./src/EOFTestsFiller/efExample/validInvalidFiller.yml - - [ ] src/EOFTestsFiller/EIP5450/validInvalidFiller.yml -- [x] CALLF stack underflow in variable stack segment, only min underflow ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_underflow_examples`](./eip4750_functions/test_code_validation/test_callf_stack_underflow_examples.md)) -- [x] CALLF stack underflow in variable stack segment, both min and max underflow ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_underflow_examples`](./eip4750_functions/test_code_validation/test_callf_stack_underflow_examples.md)) -- [ ] Branching to CALLFs with the same number of outputs (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) -- [ ] Check that CALLF stack inputs/outputs equal to target section type definition - -#### RETF - -- [ ] Valid RETF with correct number of items on stack ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) - - [ ] src/EOFTestsFiller/EIP5450/validInvalidFiller.yml -- [ ] Invalid RETF with extra items on stack ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) - - [ ] ./src/EOFTestsFiller/efExample/validInvalidFiller.yml -- [x] RETF stack underflow ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) -- [x] RETF reached via different paths ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) -- [x] RETF in variable stack segment is not allowed ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) -- [ ] Extra items on stack allowed for terminating instructions other than RETF (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) -- [x] Invalid RETF in a non-returning function ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_first_section_returning`](./eip6206_jumpf/test_nonreturning_validation/test_first_section_returning.md)) - -#### JUMPF - -- [x] Extra items on stack are allowed for JUMPF to non-returning function ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_non_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_non_returning.md) [`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_non_returning_variable_stack`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_non_returning_variable_stack.md)) -- [x] JUMPF stack underflows ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_non_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_non_returning.md) [`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning.md)) -- [x] JUMPF stack underflow in a variable stack segment - only min underflow ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_non_returning_variable_stack`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_non_returning_variable_stack.md)) -- [x] JUMPF stack underflow in a variable stack segment - both min and max underflow ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_non_returning_variable_stack`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_non_returning_variable_stack.md)) -- [x] JUMPF into function with the same number of outputs ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning.md)) -- [x] JUMPF into function with fewer outputs than current one ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning.md)) -- [x] Extra items on stack are allowed for JUMPF to returning function ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning.md)) -- [x] JUMPF to returning in a variable stack segment is not allowed ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning_variable_stack_1`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning_variable_stack_1.md) [`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning_variable_stack_2`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning_variable_stack_2.md) [`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning_variable_stack_3`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning_variable_stack_3.md)) -- (ethereum/tests: src/EOFTestsFiller/efStack/jumpf_to_returning_variable_stack_Copier.json) -- [x] Invalid JUMPF in a non-returning function ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_retf_in_nonreturning`](./eip6206_jumpf/test_nonreturning_validation/test_retf_in_nonreturning.md)) -- [ ] Truncated JUMPF immediate - -#### Stack overflow - -##### CALLF - -- [x] Max allowed stack height reached in CALLF-ed function ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow`](./eip4750_functions/test_code_validation/test_callf_stack_overflow.md)) -- [x] CALLF validation time stack overflow ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow_after_callf`](./eip4750_functions/test_code_validation/test_callf_stack_overflow_after_callf.md)) -- [x] Max allowed stack height reached in CALLF-ed function with inputs ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_with_inputs_stack_overflow`](./eip4750_functions/test_code_validation/test_callf_with_inputs_stack_overflow.md)) -- [x] CALLF validation time stack overflow in function with inputs ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_with_inputs_stack_overflow`](./eip4750_functions/test_code_validation/test_callf_with_inputs_stack_overflow.md)) -- [x] Max allowed stack height reached in CALLF-ed function. CALLF in variable stack segment. ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow_variable_stack`](./eip4750_functions/test_code_validation/test_callf_stack_overflow_variable_stack.md) [`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow_variable_stack_2`](./eip4750_functions/test_code_validation/test_callf_stack_overflow_variable_stack_2.md))) -- [x] CALLF validation time stack overflow in variable stack segment. ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow_variable_stack_3`](./eip4750_functions/test_code_validation/test_callf_stack_overflow_variable_stack_3.md) [`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow_variable_stack_4`](./eip4750_functions/test_code_validation/test_callf_stack_overflow_variable_stack_4.md))) -- [x] Max allowed stack height reached in CALLF-ed function with inputs. CALLF in variable stack segment. ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_with_inputs_stack_overflow_variable_stack`](./eip4750_functions/test_code_validation/test_callf_with_inputs_stack_overflow_variable_stack.md)) -- [x] CALLF validation time stack overflow in function with inputs in variable stack segment. ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_with_inputs_stack_overflow_variable_stack`](./eip4750_functions/test_code_validation/test_callf_with_inputs_stack_overflow_variable_stack.md)) -- [ ] Function inputs are accessible and accounted for (no stack underflow if they are popped) (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) - -##### JUMPF - -- [x] Max allowed stack height reached in JUMPF-ed function ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_other_stack_overflow`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_other_stack_overflow.md)) -- [x] JUMPF validation time stack overflow ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_other_stack_overflow`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_other_stack_overflow.md)) -- [x] Max allowed stack height reached in JUMPF-ed function with inputs ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow.md)) -- [x] JUMPF validation time stack overflow in function with inputs ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow.md)) -- [x] JUMPF validation time stack overflow in function with inputs, variable stack segment, only max overflow ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow_variable_stack`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow_variable_stack.md)) -- [x] JUMPF validation time stack overflow in function with inputs, variable stack segment, both max and min overflow ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow_variable_stack`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow_variable_stack.md)) -- [x] Max allowed stack height reached in JUMPF-ed function. JUMPF in variable stack segment. ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_variadic_stack_overflow`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_variadic_stack_overflow.md)) -- [x] JUMPF validation time stack overflow in variable stack segment - only max overflow. ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_variadic_stack_overflow`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_variadic_stack_overflow.md)) -- [x] JUMPF validation time stack overflow in variable stack segment - both min and max overflow. ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_variadic_stack_overflow`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_variadic_stack_overflow.md)) -- [x] Max allowed stack height reached in JUMPF-ed function with inputs. JUMPF in variable stack segment. ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow_variable_stack`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow_variable_stack.md)) -- [x] JUMPF validation time stack overflow in function with inputs in variable stack segment. ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow_variable_stack`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow_variable_stack.md)) - -#### SWAPN/DUPN/EXCHANGE - -- [ ] Valid DUPN with enough items on stack (ethereum/tests: src/EOFTestsFiller/efStack/dupn_stack_validation_Copier.json) -- [ ] DUPN stack underflow (ethereum/tests: src/EOFTestsFiller/efStack/dupn_stack_validation_Copier.json) -- [ ] Valid SWAPN with enough items on stack (ethereum/tests: src/EOFTestsFiller/efStack/swapn_stack_validation_Copier.json) -- [ ] SWAPN stack underflow (ethereum/tests: src/EOFTestsFiller/efStack/swapn_stack_validation_Copier.json) -- [ ] Valid EXCHANGE with enough items on stack (ethereum/tests: src/EOFTestsFiller/efStack/exchange_deep_stack_validation_Copier.json src/EOFTestsFiller/efStack/exchange_stack_validation_Copier.json) -- [ ] EXCHANGE stack underflow (ethereum/tests: src/EOFTestsFiller/efStack/exchange_stack_validation_Copier.json src/EOFTestsFiller/efStack/exchange_empty_stack_validation_Copier.json) - -#### Other - -- [ ] Wrong max_stack_height (ethereum/tests: ./src/EOFTestsFiller/efExample/validInvalidFiller.yml src/EOFTestsFiller/efValidation/max_stack_height_Copier.json) -- [ ] All opcodes correctly account for stack inputs/outputs (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) -- [ ] Code reachable only via backwards jump is invalid -- [x] Maximally broad [0, 1023] stack range ([`tests/osaka/eip7692_eof_v1/eip_5450_stack/test_code_validation.py::test_stack_range_maximally_broad`](./eip5450_stack/test_code_validation/test_stack_range_maximally_broad.md)) - -### Execution - -- [x] Max stack size (1024) in CALLF-ed function ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_callf_execution.py::test_callf_operand_stack_size_max`](./eip4750_functions/test_callf_execution/test_callf_operand_stack_size_max.md) - - -## EIP-6206: EOF - JUMPF and non-returning functions - -### Validation - -- [x] Zero section returning ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_first_section_returning`](./eip6206_jumpf/test_nonreturning_validation/test_first_section_returning.md), ethereum/tests: ./src/EOFTestsFiller/efExample/validInvalidFiller.yml src/EOFTestsFiller/EIP4750/validInvalidFiller.yml) -- [x] Zero section declared non-returning but ends with RETF ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_retf_in_nonreturning`](./eip6206_jumpf/test_nonreturning_validation/test_retf_in_nonreturning.md), ethereum/tests: src/EOFTestsFiller/EIP4750/validInvalidFiller.yml) -- [x] CALLF into non-returning function ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_callf_to_nonreturning`](./eip6206_jumpf/test_nonreturning_validation/test_callf_to_nonreturning.md)) -- [x] Valid JUMPF into sections with equal number of outputs ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py::test_jumpf_to_retf`](./eip6206_jumpf/test_jumpf_execution/test_jumpf_to_retf.md)) -- [x] Valid JUMPF into sections with different but compatible number of outputs ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py::test_jumpf_to_retf`](./eip6206_jumpf/test_jumpf_execution/test_jumpf_to_retf.md)) -- [x] JUMPF into sections with incompatible outputs ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_incompatible_outputs`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_incompatible_outputs.md)) -- [x] Non-returning section without JUMPF ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py::test_jumpf_forward`](./eip6206_jumpf/test_jumpf_execution/test_jumpf_forward.md)) -- [x] Non-returning section with JUMPF ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_jumpf_in_nonreturning`](./eip6206_jumpf/test_nonreturning_validation/test_jumpf_in_nonreturning.md)) -- [x] Returning section with RETF ([`tests/osaka/eip7692_eof_v1/eip4750_functions/test_callf_execution.py::test_callf`](./eip4750_functions/test_callf_execution/test_callf.md)) -- [x] Returning section with JUMPF ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_returning_jumpf`](./eip6206_jumpf/test_jumpf_validation/test_returning_jumpf.md)) -- [x] Returning section with JUMPF to returning and RETF ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py::test_jumpf_to_retf`](./eip6206_jumpf/test_jumpf_execution/test_jumpf_to_retf.md)) -- [x] Returning section with JUMPF to non-returning and RETF ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_returning_jumpf`](./eip6206_jumpf/test_jumpf_validation/test_returning_jumpf.md)) -- [x] Returning section without JUMPF nor RETF ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_returning_section_not_returning`](./eip6206_jumpf/test_nonreturning_validation/test_returning_section_not_returning.md)) -- [x] Invalid non-returning flag ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_returning_section_not_returning`](./eip6206_jumpf/test_nonreturning_validation/test_returning_section_not_returning.md)) -- [x] Circular JUMPF between two sections ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py::test_jumpf_infinite_loop`](./eip6206_jumpf/test_jumpf_execution/test_jumpf_infinite_loop.md)) -- [x] JUMPF into non-existing section ([`tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_invalid_code_section_index`](./eip6206_jumpf/test_jumpf_validation/test_invalid_code_section_index.md)) - -## EIP-7480: EOF - Data section access instructions - -### Validation - -- [x] Valid DATALOADN with various offsets ([`tests/osaka/eip7692_eof_v1/eip7480_data_section/test_data_opcodes.py::test_dataloadn`](./eip7480_data_section/test_data_opcodes/test_dataloadn.md) -- [x] Truncated DATALOADN immediate ([`tests/osaka/eip7692_eof_v1/eip7480_data_section/test_code_validation.py::test_dataloadn_truncated_immediate`](./eip7480_data_section/test_code_validation/test_dataloadn_truncated_immediate.md) -- [x] DATALOADN offset out of bounds ([`tests/osaka/eip7692_eof_v1/eip7480_data_section/test_code_validation.py::test_invalid_containers_with_data_section`](./eip7480_data_section/test_code_validation/test_invalid_containers_with_data_section.md) -- [x] DATALOADN accessing not full word ([`tests/osaka/eip7692_eof_v1/eip7480_data_section/test_code_validation.py::test_invalid_containers_with_data_section`](./eip7480_data_section/test_code_validation/test_invalid_containers_with_data_section.md) - -## EIP-663: SWAPN, DUPN and EXCHANGE instructions - -### Validation - -- [ ] A DUPN instruction causes stack overflow -- [ ] A DUPN instruction causes stack underflow -- [ ] A DUPN instruction causes max stack height mismatch -- [ ] A SWAPN instruction causes stack underflow - -### Execution - -- [x] Positive tests for DUPN instructions ([`./tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_dupn.py::test_dupn_all_valid_immediates`](./eip663_dupn_swapn_exchange/test_dupn/test_dupn_all_valid_immediates.md)) -- [x] Positive tests for SWAPN instructions ([`./tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_swapn.py::test_swapn_all_valid_immediates`](./eip663_dupn_swapn_exchange/test_swapn/test_swapn_all_valid_immediates.md)) -- [x] Positive tests for EXCHANGE instruction ([`./tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_exchange.py::test_exchange_all_valid_immediates`](./eip663_dupn_swapn_exchange/test_exchange/test_exchange_all_valid_immediates.md)) - -## EIP-7069: Revamped CALL instructions - -### Execution - -- [x] EXTDELEGATECALL from EOF to EOF ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_sstore`](./eip7069_extcall/test_calls/test_eof_calls_eof_sstore.md)) -- [x] EXTDELEGATECALL from EOF to legacy fails ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_legacy_sstore`](./eip7069_extcall/test_calls/test_eof_calls_legacy_sstore.md)) -- [ ] EXTDELEGATECALL forwards static mode (evmone-tests: state_tests/state_transition/eof_calls/extdelegatecall_static.json) -- [x] EXTCALL with value success ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_with_value`](./eip7069_extcall/test_calls/test_eof_calls_with_value.md)) -- [x] EXTCALL with value from EXTSTATICCALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_static_flag_with_value`](./eip7069_extcall/test_calls/test_eof_calls_static_flag_with_value.md)) -- [x] EXTCALL with value, not enough balance ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_with_value`](./eip7069_extcall/test_calls/test_eof_calls_with_value.md)) -- [x] EXTCALL with value, check additional charge for value ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) -- [x] EXTCALL with gas not enough for callee to get 5000 gas ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_min_callee_gas`](./eip7069_extcall/test_calls/test_eof_calls_min_callee_gas.md)) -- [x] RETURNDATA* after EXTCALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_returndataload.py`](./eip7069_extcall/test_returndataload/index.md)) -- [x] RETURNDATA* after EXTDELEGATECALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_returndataload.py`](./eip7069_extcall/test_returndataload/index.md)) -- [x] RETURNDATA* after EXTSTATICCALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_returndataload.py`](./eip7069_extcall/test_returndataload/index.md)) -- [x] RETURNDATA* after aborted EXT*CALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_clear_return_buffer`](./eip7069_extcall/test_calls/test_eof_calls_clear_return_buffer.md)) -- [x] Failed EXTCALL clears returndata from previous EXTCALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_clear_return_buffer`](./eip7069_extcall/test_calls/test_eof_calls_clear_return_buffer.md)) -- [x] EXTCALL not enough gas for input memory charge ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) -- [x] EXTDELEGATECALL not enough gas for input memory charge ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) -- [x] EXTSTATICCALL not enough gas for input memory charge ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) -- [x] EXTCALL exception due to target address overflow (bits set in high 12 bytes) ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py`](./eip7069_extcall/test_address_space_extension/index.md)) -- [x] EXTDELEGATECALL exception due to target address overflow (bits set in high 12 bytes) ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py`](./eip7069_extcall/test_address_space_extension/index.md)) -- [x] EXTSTATICCALL exception due to target address overflow (bits set in high 12 bytes) ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py`](./eip7069_extcall/test_address_space_extension/index.md)) -- [x] EXTCALL not enough gas for warming up target address ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) -- [x] EXTDELEGATECALL not enough gas for warming up target address ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) -- [x] EXTSTATICCALL not enough gas for warming up target address ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) -- [x] EXTCALL not enough gas for account creation cost (transfer value to non-existing account) ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) -- [x] OOG after EXTCALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_then_fails`](./eip7069_extcall/test_calls/test_eof_calls_eof_then_fails.md)) -- [x] OOG after EXTDELEGATECALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_then_fails`](./eip7069_extcall/test_calls/test_eof_calls_eof_then_fails.md)) -- [x] OOG after EXTSTATICCALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_then_fails`](./eip7069_extcall/test_calls/test_eof_calls_eof_then_fails.md)) -- [x] REVERT inside EXTCALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_fails`](./eip7069_extcall/test_calls/test_callee_fails.md)) -- [x] REVERT inside EXTDELEGATECALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_fails`](./eip7069_extcall/test_calls/test_callee_fails.md)) -- [x] REVERT inside EXTSTATICCALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_fails`](./eip7069_extcall/test_calls/test_callee_fails.md)) -- [x] EXTCALL with input (`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calldata.py`) -- [x] EXTDELEGATECALL with input (`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calldata.py`) -- [x] EXTSTATICCALL with input (`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calldata.py`) -- [x] EXTCALL with just enough gas for MIN_RETAINED_GAS and MIN_CALLEE_GAS ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_min_callee_gas`](./eip7069_extcall/test_calls/test_eof_calls_min_callee_gas.md)) -- [x] EXTCALL with not enough gas for MIN_CALLEE_GAS ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_min_callee_gas`](./eip7069_extcall/test_calls/test_eof_calls_min_callee_gas.md)) -- [x] ADDRESS and CALLER inside EXTCALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_context`](./eip7069_extcall/test_calls/test_callee_context.md)) -- [x] ADDRESS and CALLER inside EXTDELEGATECALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_context`](./eip7069_extcall/test_calls/test_callee_context.md)) -- [x] ADDRESS and CALLER inside EXTSTATICCALL ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_context`](./eip7069_extcall/test_calls/test_callee_context.md)) -- [ ] Refund inside EXTCALL is applied after the transaction (evmone-tests: state_tests/state_transition/eof_calls/extcall_gas_refund_propagation.json) -- [ ] Refund inside EXTDELEGATECALL is applied after the transaction (evmone-tests: state_tests/state_transition/eof_calls/extdelegatecall_gas_refund_propagation.json) -- [x] EXTSTATICCALL from EOF to non-pure legacy contract failing ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_legacy_sstore`](./eip7069_extcall/test_calls/test_eof_calls_legacy_sstore.md)) -- [x] EXTSTATICCALL from EOF to pure EOF contract ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_legacy_mstore`](./eip7069_extcall/test_calls/test_eof_calls_legacy_mstore.md)) -- [x] EXTSTATICCALL from EOF to non-pure EOF contract failing ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_sstore`](./eip7069_extcall/test_calls/test_eof_calls_eof_sstore.md)) -- [x] `*CALLs` from legacy contracts to EOF contracts (ethereum/tests: ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_legacy_calls_eof_sstore`](./eip7069_extcall/test_calls/test_eof_calls_eof_sstore.md)) -- [x] `EXT*CALLs` from EOF to legacy contracts ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_legacy_sstore`](./eip7069_extcall/test_calls/test_eof_calls_eof_sstore.md)) -- [x] EXTDELEGATECALL from EOF to EOF contract ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_sstore`](./eip7069_extcall/test_calls/test_eof_calls_eof_sstore.md)) -- [x] EXTDELEGATECALL from EOF to legacy contract failing ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_extdelegate_call_targets`](./eip7069_extcall/test_calls/test_extdelegate_call_targets.md)) -- [x] EXTDELEGATECALL from EOF to EOA failing ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_extdelegate_call_targets`](./eip7069_extcall/test_calls/test_extdelegate_call_targets.md)) -- [x] EXTDELEGATECALL from EOF to empty account failing ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_extdelegate_call_targets`](./eip7069_extcall/test_calls/test_extdelegate_call_targets.md)) -- [x] EXTDELEGATECALL to EIP-7702 delegate ([`./tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_extdelegate_call_targets`](./eip7069_extcall/test_calls/test_extdelegate_call_targets.md)) - - -## EIP-7620: EOF Contract Creation - -### Validation - -- [ ] Valid EOFCREATEs referring to various container numbers (ethereum/tests: ./src/EOFTestsFiller/efValidation/EOF1_eofcreate_valid_Copier.json) -- [x] Truncated before EOFCREATE immediate ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py`](./eip7620_eof_create/test_eofcreate/index.md)`-k test_eofcreate_invalid_truncated_immediate`) -- [ ] EOFCREATE is not a valid terminating instruction -- [x] EOFCREATE immediate referring to non-existing container ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py`](./eip7620_eof_create/test_eofcreate/index.md)`-k test_eofcreate_invalid_index`) -- [x] EOFCREATE immediate referring to container with truncated data ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py`](./eip7620_eof_create/test_eofcreate/index.md)`-k test_eofcreate_truncated_container`) -- [x] Valid RETURNCODEs referring to various container numbers ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_returncode.py`](./eip7620_eof_create/test_returncode/index.md)`-k test_returncode_valid_index`) -- [x] Truncated before RETURNCODE immediate ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_returncode.py::test_returncode_invalid_truncated_immediate`](./eip7620_eof_create/test_returncode/test_returncode_invalid_truncated_immediate.md)) -- [x] RETURNCODE immediate referring to non-existing container ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_returncode.py`](./eip7620_eof_create/test_returncode/index.md)`-k test_returncode_invalid_index`) -- [x] Unreachable code after RETURNCODE, check that RETURNCODE is terminating ([`tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_returncode.py::test_returncode_terminating`](./eip7620_eof_create/test_returncode/test_returncode_terminating.md)) - -### Execution - -- [ ] CREATE with EOF initcode fails in Prague (evmone-tests: state_tests/state_transition/eof_create/create_with_eof_initcode.json) -- [ ] CREATE with EOF initcode fails in Cancun (evmone-tests: state_tests/state_transition/eof_create/create_with_eof_initcode_cancun.json) -- [ ] CREATE2 with EOF initcode fails in Prague (evmone-tests: state_tests/state_transition/eof_create/create2_with_eof_initcode.json) -- [ ] CREATE2 with EOF initcode fails in Cancun (evmone-tests: state_tests/state_transition/eof_create/create2_with_eof_initcode_cancun.json) -- [ ] CREATE with legacy initcode and EOF deploy code fails (evmone-tests: state_tests/state_transition/eof_create/create_deploying_eof.json) -- [ ] CREATE2 with legacy initcode and EOF deploy code fails (evmone-tests: state_tests/state_transition/eof_create/create2_deploying_eof.json) -- [ ] EOFCREATE success with empty aux data (evmone-tests: state_tests/state_transition/eof_create/eofcreate_empty_auxdata.json) -- [ ] EOFCREATE success with aux data length equal to declared in deploy container (evmone-tests: state_tests/state_transition/eof_create/eofcreate_auxdata_equal_to_declared.json) -- [ ] EOFCREATE success with aux data longer than size declared in deploy container (evmone-tests: state_tests/state_transition/eof_create/eofcreate_auxdata_longer_than_declared.json) -- [ ] EOFCREATE with aux data shorter than size declared in deploy container fails (evmone-tests: state_tests/state_transition/eof_create/eofcreate_auxdata_shorter_than_declared.json) -- [ ] EOFCREATE success deploying DATALOADN referring to aux data portion of deploy container data (evmone-tests: state_tests/state_transition/eof_create/eofcreate_dataloadn_referring_to_auxdata.json) -- [ ] EOFCREATE success with deploy container having aux data and subcontainer (evmone-tests: state_tests/state_transition/eof_create/eofcreate_with_auxdata_and_subcontainer.json) -- [ ] REVERT in initcontainer (evmone-tests: state_tests/state_transition/eof_create/eofcreate_revert_empty_returndata.json) -- [ ] REVERT with return data in initcontainer (evmone-tests: state_tests/state_transition/eof_create/eofcreate_revert_non_empty_returndata.json) -- [ ] Exceptional abort in initcontainer (evmone-tests: state_tests/state_transition/eof_create/eofcreate_initcontainer_aborts.json) -- [ ] EOFCREATE with deploy container of max size 0x6000 (evmone-tests: state_tests/state_transition/eof_create/eofcreate_deploy_container_max_size.json) -- [ ] EOFCREATE with deploy container size above limit (evmone-tests: state_tests/state_transition/eof_create/eofcreate_deploy_container_too_large.json) -- [ ] EOFCREATE with deploy container data size above 64K after appending aux data (evmone-tests: state_tests/state_transition/eof_create/eofcreate_appended_data_size_larger_than_64K.json) -- [ ] EOFCREATE with deploy container size above limit after appending aux data (evmone-tests: state_tests/state_transition/eof_create/eofcreate_deploy_container_with_aux_data_too_large.json) -- [ ] EOFCREATE success nested in EOFCREATE initcode (evmone-tests: state_tests/state_transition/eof_create/eofcreate_nested_eofcreate.json) -- [ ] EOFCREATE success nested in EOFCREATE initcode that reverts (evmone-tests: state_tests/state_transition/eof_create/eofcreate_nested_eofcreate_revert.json) -- [ ] EOFCREATE with value success -- [ ] EOFCREATE with value - not enough caller balance (evmone-tests: state_tests/state_transition/eof_create/eofcreate_caller_balance_too_low.json) -- [ ] EOFCREATE not enough gas for initcode (EIP-3860) charge (evmone-tests: state_tests/state_transition/eof_create/eofcreate_not_enough_gas_for_initcode_charge.json) -- [ ] EOFCREATE not enough gas for input memory expansion (evmone-tests: state_tests/state_transition/eof_create/eofcreate_not_enough_gas_for_mem_expansion.json) -- [ ] RETURNCODE not enough gas for aux data memory expansion (evmone-tests: state_tests/state_transition/eof_create/returncode_not_enough_gas_for_mem_expansion.json) -- [ ] Successful EOFCREATE clears returndata (evmone-tests: state_tests/state_transition/eof_create/eofcreate_clears_returndata.json) -- [ ] Second EOFCREATE with the same container and salt fails (evmone-tests: state_tests/state_transition/eof_create/eofcreate_failure_after_eofcreate_success.json) -- [ ] Call created contract after EOFCREATE (evmone-tests: state_tests/state_transition/eof_create/eofcreate_call_created_contract.json) - -## EIP-7698: EOF - Creation transaction - -TODO: replace with `EIP-7873: EOF - TXCREATE and InitcodeTransaction type` test cases - -### Execution - -- [ ] Creation transaction success with empty deploy container data (evmone-tests: state_tests/state_transition/eof_create/creation_tx.json) -- [ ] Creation transaction success with data in deploy container without aux data (evmone-tests: state_tests/state_transition/eof_create/creation_tx_deploy_data.json) -- [ ] Creation transaction success with data in deploy container with aux data length equal to declared (evmone-tests: state_tests/state_transition/eof_create/creation_tx_static_auxdata_in_calldata.json) -- [ ] Creation transaction success with data in deploy container with aux data longer than declared (evmone-tests: state_tests/state_transition/eof_create/creation_tx_dynamic_auxdata_in_calldata.json) -- [ ] Creation transaction success deploying DATALOADN referring to aux data portion of deploy container data (evmone-tests: state_tests/state_transition/eof_create/creation_tx_dataloadn_referring_to_auxdata.json) -- [ ] Exceptional abort in creation transaction initcode (evmone-tests: state_tests/state_transition/eof_create/creation_tx_initcontainer_aborts.json) -- [ ] RETURN in creation transaction initcode fails (evmone-tests: state_tests/state_transition/eof_create/creation_tx_initcontainer_return.json) -- [ ] STOP in creation transaction initcode fails (evmone-tests: state_tests/state_transition/eof_create/creation_tx_initcontainer_stop.json) -- [ ] Creation transaction with initcode of max allowed size 0xc000 (evmone-tests: state_tests/state_transition/eof_create/creation_tx_initcontainer_max_size.json) -- [ ] Creation transaction with initcode size above limit (evmone-tests: state_tests/state_transition/eof_create/creation_tx_initcontainer_too_large.json) -- [ ] Creation transaction deploys container of max allowed size 0x6000 (evmone-tests: state_tests/state_transition/eof_create/creation_tx_deploy_container_max_size.json) -- [ ] Creation transaction deploying container of size above limit fails (evmone-tests: state_tests/state_transition/eof_create/creation_tx_deploy_container_too_large.json) -- [ ] EOFCREATE success nested in creation transaction initcode (evmone-tests: state_tests/state_transition/eof_create/creation_tx_nested_eofcreate.json) -- [ ] Creation transaction with invalid initcontainer (invalid header) (evmone-tests: state_tests/state_transition/eof_create/creation_tx_invalid_initcode_header.json) -- [ ] Creation transaction with invalid initcontainer (invalid EOF version) (evmone-tests: state_tests/state_transition/eof_create/creation_tx_invalid_eof_version.json) -- [ ] Creation transaction with invalid initcontainer (invalid max stack height) (evmone-tests: state_tests/state_transition/eof_create/creation_tx_invalid_initcode.json) -- [ ] Creation transaction fails if initcontainer has truncated data section (declared size > present data size ) (evmone-tests: state_tests/state_transition/eof_create/creation_tx_truncated_data_initcode.json) -- [ ] Creation transaction with invalid deploy container (evmone-tests: state_tests/state_transition/eof_create/creation_tx_invalid_deploycode.json) -- [ ] Create transaction with legacy initcode and EOF deploy code fails (evmone-tests: state_tests/state_transition/eof_create/creation_tx_deploying_eof.json) -- [ ] EOF creation transaction fails before Prague (evmone-tests: state_tests/state_transition/eof_create/initcode_transaction_before_osaka.json) diff --git a/tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py b/tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py index f8ff7dca71d..6cd2d2b3dbd 100644 --- a/tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py +++ b/tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py @@ -891,7 +891,7 @@ def test_static_to_pointer(state_test: StateTestFiller, pre: Alloc): ) -@pytest.mark.valid_from("Osaka") +@pytest.mark.valid_from("EOFv1") def test_pointer_to_eof(state_test: StateTestFiller, pre: Alloc): """ Tx -> call -> pointer A -> EOF diff --git a/tests/unscheduled/__init__.py b/tests/unscheduled/__init__.py new file mode 100644 index 00000000000..c0bc59e8d52 --- /dev/null +++ b/tests/unscheduled/__init__.py @@ -0,0 +1 @@ +"""Test cases for unscheduled EVM functionality. A temporary home for features that are not yet CFI'd for inclusion in the next hardfork.""" # noqa: E501 diff --git a/tests/osaka/eip7692_eof_v1/__init__.py b/tests/unscheduled/eip7692_eof_v1/__init__.py similarity index 98% rename from tests/osaka/eip7692_eof_v1/__init__.py rename to tests/unscheduled/eip7692_eof_v1/__init__.py index 32bdc8ddb69..39b893bb4af 100644 --- a/tests/osaka/eip7692_eof_v1/__init__.py +++ b/tests/unscheduled/eip7692_eof_v1/__init__.py @@ -19,4 +19,4 @@ - [ethpandaops/eof-devnet-0](https://notes.ethereum.org/@ethpandaops/eof-devnet-0). """ # noqa: E501 -EOF_FORK_NAME = "Osaka" +EOF_FORK_NAME = "EOFv1" diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/__init__.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/__init__.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/__init__.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/__init__.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/opcodes.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/opcodes.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/opcodes.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/opcodes.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/spec.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/spec.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/spec.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/spec.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_size.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_size.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_size.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_size.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_eof_example.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_eof_example.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_eof_example.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_eof_example.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_execution.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_execution.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_execution.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_execution.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_execution_function.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_execution_function.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_execution_function.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_execution_function.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_migrated_valid_invalid.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_migrated_valid_invalid.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_migrated_valid_invalid.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_migrated_valid_invalid.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_opcodes_in_legacy.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_opcodes_in_legacy.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_opcodes_in_legacy.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_opcodes_in_legacy.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_header_body_mismatch.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_header_body_mismatch.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_header_body_mismatch.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_header_body_mismatch.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py diff --git a/tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_size.py b/tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_size.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_size.py rename to tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_size.py diff --git a/tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/__init__.py b/tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/__init__.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/__init__.py rename to tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/__init__.py diff --git a/tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/helpers.py b/tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/helpers.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/helpers.py rename to tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/helpers.py diff --git a/tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py b/tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py rename to tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py diff --git a/tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py b/tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py rename to tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py diff --git a/tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py b/tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py rename to tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py diff --git a/tests/osaka/eip7692_eof_v1/eip4750_functions/__init__.py b/tests/unscheduled/eip7692_eof_v1/eip4750_functions/__init__.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip4750_functions/__init__.py rename to tests/unscheduled/eip7692_eof_v1/eip4750_functions/__init__.py diff --git a/tests/osaka/eip7692_eof_v1/eip4750_functions/helpers.py b/tests/unscheduled/eip7692_eof_v1/eip4750_functions/helpers.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip4750_functions/helpers.py rename to tests/unscheduled/eip7692_eof_v1/eip4750_functions/helpers.py diff --git a/tests/osaka/eip7692_eof_v1/eip4750_functions/test_callf_execution.py b/tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_callf_execution.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip4750_functions/test_callf_execution.py rename to tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_callf_execution.py diff --git a/tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py b/tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip4750_functions/test_code_validation.py rename to tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py diff --git a/tests/osaka/eip7692_eof_v1/eip5450_stack/__init__.py b/tests/unscheduled/eip7692_eof_v1/eip5450_stack/__init__.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip5450_stack/__init__.py rename to tests/unscheduled/eip7692_eof_v1/eip5450_stack/__init__.py diff --git a/tests/osaka/eip7692_eof_v1/eip5450_stack/test_code_validation.py b/tests/unscheduled/eip7692_eof_v1/eip5450_stack/test_code_validation.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip5450_stack/test_code_validation.py rename to tests/unscheduled/eip7692_eof_v1/eip5450_stack/test_code_validation.py diff --git a/tests/osaka/eip7692_eof_v1/eip5450_stack/test_execution.py b/tests/unscheduled/eip7692_eof_v1/eip5450_stack/test_execution.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip5450_stack/test_execution.py rename to tests/unscheduled/eip7692_eof_v1/eip5450_stack/test_execution.py diff --git a/tests/osaka/eip7692_eof_v1/eip6206_jumpf/__init__.py b/tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/__init__.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip6206_jumpf/__init__.py rename to tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/__init__.py diff --git a/tests/osaka/eip7692_eof_v1/eip6206_jumpf/helpers.py b/tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/helpers.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip6206_jumpf/helpers.py rename to tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/helpers.py diff --git a/tests/osaka/eip7692_eof_v1/eip6206_jumpf/spec.py b/tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/spec.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip6206_jumpf/spec.py rename to tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/spec.py diff --git a/tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py b/tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py rename to tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py diff --git a/tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py b/tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py rename to tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py diff --git a/tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_target.py b/tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_target.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_target.py rename to tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_target.py diff --git a/tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py b/tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py rename to tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py diff --git a/tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py b/tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py rename to tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py diff --git a/tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/__init__.py b/tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/__init__.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/__init__.py rename to tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/__init__.py diff --git a/tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_dupn.py b/tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_dupn.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_dupn.py rename to tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_dupn.py diff --git a/tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_exchange.py b/tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_exchange.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_exchange.py rename to tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_exchange.py diff --git a/tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_swapn.py b/tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_swapn.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_swapn.py rename to tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_swapn.py diff --git a/tests/osaka/eip7692_eof_v1/eip7069_extcall/__init__.py b/tests/unscheduled/eip7692_eof_v1/eip7069_extcall/__init__.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7069_extcall/__init__.py rename to tests/unscheduled/eip7692_eof_v1/eip7069_extcall/__init__.py diff --git a/tests/osaka/eip7692_eof_v1/eip7069_extcall/helpers.py b/tests/unscheduled/eip7692_eof_v1/eip7069_extcall/helpers.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7069_extcall/helpers.py rename to tests/unscheduled/eip7692_eof_v1/eip7069_extcall/helpers.py diff --git a/tests/osaka/eip7692_eof_v1/eip7069_extcall/spec.py b/tests/unscheduled/eip7692_eof_v1/eip7069_extcall/spec.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7069_extcall/spec.py rename to tests/unscheduled/eip7692_eof_v1/eip7069_extcall/spec.py diff --git a/tests/osaka/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py b/tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py rename to tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py diff --git a/tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calldata.py b/tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calldata.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calldata.py rename to tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calldata.py diff --git a/tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py b/tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py similarity index 99% rename from tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py rename to tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py index 645a53b58e9..2e4e8864ff4 100644 --- a/tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py +++ b/tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py @@ -375,7 +375,8 @@ def test_eof_calls_eof_mstore( # `blake2f`` is chosen for the test because it fails unless args_size == 213, which is what we are # interested in. blake2f = Address(0x09) -# `p256verify` / RIP-7212 has been in and out of prague and osaka. Hence we need to test explicitly +# `p256verify` / RIP-7212 has been in and out of prague and osaka. +# Hence we need to test explicitly p256verify = Address(0x100) diff --git a/tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py b/tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7069_extcall/test_gas.py rename to tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py diff --git a/tests/osaka/eip7692_eof_v1/eip7069_extcall/test_returndatacopy_memory_expansion.py b/tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_returndatacopy_memory_expansion.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7069_extcall/test_returndatacopy_memory_expansion.py rename to tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_returndatacopy_memory_expansion.py diff --git a/tests/osaka/eip7692_eof_v1/eip7069_extcall/test_returndataload.py b/tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_returndataload.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7069_extcall/test_returndataload.py rename to tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_returndataload.py diff --git a/tests/osaka/eip7692_eof_v1/eip7480_data_section/__init__.py b/tests/unscheduled/eip7692_eof_v1/eip7480_data_section/__init__.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7480_data_section/__init__.py rename to tests/unscheduled/eip7692_eof_v1/eip7480_data_section/__init__.py diff --git a/tests/osaka/eip7692_eof_v1/eip7480_data_section/spec.py b/tests/unscheduled/eip7692_eof_v1/eip7480_data_section/spec.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7480_data_section/spec.py rename to tests/unscheduled/eip7692_eof_v1/eip7480_data_section/spec.py diff --git a/tests/osaka/eip7692_eof_v1/eip7480_data_section/test_code_validation.py b/tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_code_validation.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7480_data_section/test_code_validation.py rename to tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_code_validation.py diff --git a/tests/osaka/eip7692_eof_v1/eip7480_data_section/test_data_opcodes.py b/tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_data_opcodes.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7480_data_section/test_data_opcodes.py rename to tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_data_opcodes.py diff --git a/tests/osaka/eip7692_eof_v1/eip7480_data_section/test_datacopy_memory_expansion.py b/tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_datacopy_memory_expansion.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7480_data_section/test_datacopy_memory_expansion.py rename to tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_datacopy_memory_expansion.py diff --git a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/__init__.py b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/__init__.py similarity index 90% rename from tests/osaka/eip7692_eof_v1/eip7620_eof_create/__init__.py rename to tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/__init__.py index a5729559f7f..886cfd7db23 100644 --- a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/__init__.py +++ b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/__init__.py @@ -12,7 +12,7 @@ - eofcreate_extcall_returncode - per the new initcode mode tests you cannot have RETURNCODE in a deployed contract - eofcreate_dataloadn_referring_to_auxdata - covered by - tests.osaka.eip7480_data_section.test_data_opcodes.test_data_section_succeed + tests.unscheduled.eip7480_data_section.test_data_opcodes.test_data_section_succeed - eofcreate_initcontainer_return - RETURN is banned in initcode containers - eofcreate_initcontainer_stop - STOP is banned in initcode containers - All TXCREATE tests. diff --git a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/helpers.py b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/helpers.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7620_eof_create/helpers.py rename to tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/helpers.py diff --git a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/spec.py b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/spec.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7620_eof_create/spec.py rename to tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/spec.py diff --git a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py rename to tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py diff --git a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_eofcreate_failures.py b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_eofcreate_failures.py similarity index 99% rename from tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_eofcreate_failures.py rename to tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_eofcreate_failures.py index abeae6c8e2d..155e937cdbb 100644 --- a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_eofcreate_failures.py +++ b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_eofcreate_failures.py @@ -666,11 +666,11 @@ def test_eof_eofcreate_msg_depth( Test EOFCREATE handles msg depth limit correctly (1024). NOTE: due to block gas limit and the 63/64th rule this limit is unlikely to be hit on mainnet. - NOTE: See `tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_msg_depth` + NOTE: See `tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_msg_depth` for more explanations and comments. Most notable deviation from that test is that here calls and `EOFCREATE`s alternate in order to reach the max depth. `who_fails` decides whether the failing depth 1024 will be on a call or on an `EOFCREATE` to happen. - """ + """ # noqa: E501 # Not a precise gas_limit formula, but enough to exclude risk of gas causing the failure. gas_limit = int(20000000 * (64 / 63) ** 1024) env = Environment(gas_limit=gas_limit) diff --git a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_gas.py b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_gas.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_gas.py rename to tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_gas.py diff --git a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_legacy_eof_creates.py b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_legacy_eof_creates.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_legacy_eof_creates.py rename to tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_legacy_eof_creates.py diff --git a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_memory.py b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_memory.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_memory.py rename to tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_memory.py diff --git a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_returncode.py b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_returncode.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_returncode.py rename to tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_returncode.py diff --git a/tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py b/tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py rename to tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py diff --git a/tests/osaka/eip7692_eof_v1/eip7873_tx_create/__init__.py b/tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/__init__.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7873_tx_create/__init__.py rename to tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/__init__.py diff --git a/tests/osaka/eip7692_eof_v1/eip7873_tx_create/spec.py b/tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/spec.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7873_tx_create/spec.py rename to tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/spec.py diff --git a/tests/osaka/eip7692_eof_v1/eip7873_tx_create/test_creation_tx.py b/tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_creation_tx.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7873_tx_create/test_creation_tx.py rename to tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_creation_tx.py diff --git a/tests/osaka/eip7692_eof_v1/eip7873_tx_create/test_txcreate.py b/tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_txcreate.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7873_tx_create/test_txcreate.py rename to tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_txcreate.py diff --git a/tests/osaka/eip7692_eof_v1/eip7873_tx_create/test_txcreate_failures.py b/tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_txcreate_failures.py similarity index 99% rename from tests/osaka/eip7692_eof_v1/eip7873_tx_create/test_txcreate_failures.py rename to tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_txcreate_failures.py index 529ae9caa9c..21afb82f38c 100644 --- a/tests/osaka/eip7692_eof_v1/eip7873_tx_create/test_txcreate_failures.py +++ b/tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_txcreate_failures.py @@ -628,11 +628,11 @@ def test_eof_txcreate_msg_depth( Test TXCREATE handles msg depth limit correctly (1024). NOTE: due to block gas limit and the 63/64th rule this limit is unlikely to be hit on mainnet. - NOTE: See `tests/osaka/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_msg_depth` + NOTE: See `tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_msg_depth` for more explanations and comments. Most notable deviation from that test is that here calls and `TXCREATE`s alternate in order to reach the max depth. `who_fails` decides whether the failing depth 1024 will be on a call or on an `TXCREATE` to happen. - """ + """ # noqa: E501 # Not a precise gas_limit formula, but enough to exclude risk of gas causing the failure. gas_limit = int(20000000 * (64 / 63) ** 1024) env = Environment(gas_limit=gas_limit) diff --git a/tests/osaka/eip7692_eof_v1/eip7873_tx_create/test_txcreate_validates.py b/tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_txcreate_validates.py similarity index 100% rename from tests/osaka/eip7692_eof_v1/eip7873_tx_create/test_txcreate_validates.py rename to tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_txcreate_validates.py diff --git a/tests/unscheduled/eip7692_eof_v1/eof_tracker.md b/tests/unscheduled/eip7692_eof_v1/eof_tracker.md new file mode 100644 index 00000000000..98e02aa9c85 --- /dev/null +++ b/tests/unscheduled/eip7692_eof_v1/eof_tracker.md @@ -0,0 +1,502 @@ +# EOF Testing Coverage Tracker + +- [ ] Example Test Case 1 +- [x] Example Test Case 2 ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_eof_example.py`](./eip3540_eof_v1/test_eof_example/index.md)) + +## EIP-3540: EOF - EVM Object Format v1 + +### Validation + +- [x] Empty code is not a valid EOF ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k empty_container`) +- [x] Valid container without data section ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k single_code_section_no_data_section`) +- [x] Valid container with data section ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md) `-k single_code_section_with_data_section`) +- [x] Valid container with truncated data section ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k data_section_contents_incomplete`, [`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_migrated_valid_invalid.py::test_migrated_valid_invalid`](./eip3540_eof_v1/test_migrated_valid_invalid/test_migrated_valid_invalid.md) `-k data_section_contents_incomplete`) +- [x] Valid container with data section truncated to empty ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_data_section_contents`, [`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_migrated_valid_invalid.py::test_migrated_valid_invalid`](./eip3540_eof_v1/test_migrated_valid_invalid/test_migrated_valid_invalid.md) `-k no_data_section_contents`) +- [x] Valid containers with multiple code sections ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md) `-k multiple_code_sections`) +- [x] Valid containers with max number of code sections ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_max_code_sections`](./eip3540_eof_v1/test_container_validation/test_max_code_sections.md)) +- [x] Too many code sections ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k too_many_code_sections`) +- [x] Truncated magic ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k incomplete_magic`) +- [x] Valid container except magic ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_magic_validation`](./eip3540_eof_v1/test_container_validation/test_magic_validation.md)) +- [x] Truncated before version ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_version`) +- [x] Valid container except version ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_version_validation`](./eip3540_eof_v1/test_container_validation/test_version_validation.md)) +- [x] Truncated before type section header ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_type_header`) +- [x] Truncated before type section size ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_type_section_size`) +- [x] Truncated type section size ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k incomplete_type_section_size`) +- [x] No type section header ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k test_position_CasePosition.HEADER-section_test_SectionTest.MISSING-section_kind_TYPE`) +- [x] Truncated before code section header ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_code_header`) +- [x] Truncated before code section number ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k code_section_count_missing`) +- [x] Truncated code section number ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k code_section_count_incomplete`) +- [x] Truncated before code section size ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k code_section_size_missing`) +- [x] Truncated code section size ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k code_section_size_incomplete`) +- [x] No code section header ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k test_position_CasePosition.HEADER-section_test_SectionTest.MISSING-section_kind_CODE`) +- [x] Zero code section number ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k zero_code_sections_header`) +- [x] Zero code section size ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k empty_code_section`) +- [x] Zero code section size with non-empty data section ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k empty_code_section_with_non_empty_data`) +- [x] No container sections, truncated before data section header ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_header_data_section`) +- [x] Container sections present, truncated before data section header ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_header_data_section_with_container_section`) +- [x] Truncated before data section size ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_data_section_size`) +- [x] Truncated data section size ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k data_section_size_incomplete`) +- [x] Truncated before header terminator ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k terminator_incomplete`) +- [x] Truncated before type section ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_before_type_section`) +- [x] Type section truncated before outputs ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_type_section_before_outputs`) +- [x] Type section truncated before max_stack_height ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_type_section_before_max_stack_height`) +- [x] Type section truncated max_stack_height ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k truncated_type_section_truncated_max_stack_height`) +- [x] Truncated before code sections ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_code_section_contents`) +- [x] Truncated code section ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k incomplete_code_section_contents`) +- [x] Data section empty, trailing bytes ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k no_data_section_contents`) +- [x] Data section non-empty, trailing bytes ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k trailing_bytes_after_data_section`) +- [x] Wrong order of sections ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py`](./eip3540_eof_v1/index.md)) +- [x] No data section header ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k test_position_CasePosition.HEADER-section_test_SectionTest.MISSING-section_kind_DATA`) +- [x] Multiple data sections ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k multiple_data_sections`, [`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k multiple_code_and_data_sections`) +- [x] Unknown section id ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k unknown_section_1`, [`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k unknown_section_2`) +- [x] Type section size != 4 * code section number ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k type_section_too`) +- [x] Code section with max max_stack_height ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md) `-k single_code_section_max_stack_size`) +- [x] Code section with max_stack_height above limit ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_invalid_containers`](./eip3540_eof_v1/test_container_validation/test_invalid_containers.md) `-k single_code_section_max_stack_size_too_large`) +- [x] Valid code sections with inputs/outputs ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_with_inputs_outputs`) +- [x] Valid code section with max inputs ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_input_maximum`) +- [x] Valid code section with max outputs ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_output_maximum`) +- [x] Code sections with invalid number of inputs/outputs ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_input_too_large`, [`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_output_too_large`) +- [x] First section with inputs/outputs ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k invalid_first_code_section`) +- [x] Multiple type section headers ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k too_many_type_sections`) +- [x] Multiple code section headers ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k multiple_code_headers`) +- [x] Multiple data section headers ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k multiple_data_sections`) +- [x] Container without type section ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k 'SectionTest.MISSING-section_kind_TYPE'`) +- [x] Container without code sections ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k 'SectionTest.MISSING-section_kind_CODE'`) +- [x] Container without data section ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py::test_section_order`](./eip3540_eof_v1/test_section_order/index.md) `-k 'SectionTest.MISSING-section_kind_DATA'`) +- [x] Valid containers without data section and with subcontainers ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md)`[fork_unscheduled-eof_test-single_subcontainer_without_data]`) +- [x] Valid containers with data section and with subcontainers ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md)`[fork_unscheduled-eof_test-single_subcontainer_with_data]`) +- [x] Valid container with maximum number of subcontainers ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py::test_wide_container`](./eip7620_eof_create/test_subcontainer_validation/test_wide_container.md)`[fork_unscheduled-eof_test-256]`) +- [x] Container with number of subcontainers above the limit ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py::test_wide_container`](./eip7620_eof_create/test_subcontainer_validation/test_wide_container.md)`[fork_unscheduled-eof_test-257]`) +- [x] Subcontainer section header truncated before subcontainer number ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k no_container_section_count`) +- [x] Subcontainer section header truncated before subcontainer size ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k incomplete_container_section_count`) +- [x] Truncated subcontainer size ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k no_container_section_size`, [`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k incomplete_container_section_size`) +- [x] Zero container section number ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k zero_container_section_count`) +- [x] Zero container section size ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k zero_size_container_section`) +- [x] Truncated container section body ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k no_container_section_contents`) +- [x] Multiple container section headers ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k multiple_container_headers`) +- [x] Invalid subcontainer ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py`](./eip7620_eof_create/test_subcontainer_validation/index.md)`-k invalid`) +- [x] Invalid subcontainer on a deep nesting level ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py::test_deep_container`](./eip7620_eof_create/test_subcontainer_validation/test_deep_container.md)) +- [x] Max number of inputs/outputs in a section ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md)`[fork_unscheduled-eof_test-code_section_input_maximum]`, [`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py::test_valid_containers`](./eip3540_eof_v1/test_container_validation/test_valid_containers.md)`[fork_unscheduled-eof_test-code_section_output_maximum]`) +- [x] Number of inputs/outputs in a section above the limit ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_input_too_large`, [`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py`](./eip3540_eof_v1/test_container_validation/index.md)`-k code_section_output_too_large`) + +### Execution + +- [x] Execution of EOF contracts ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_execution.py::test_eof_execution`](./eip3540_eof_v1/test_execution/test_eof_execution.md)) +- [x] Legacy executing EXTCODESIZE of EOF contract ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py::test_legacy_calls_eof_sstore`](./eip3540_eof_v1/test_extcode/test_legacy_calls_eof_sstore.md)) +- [x] Legacy executing EXTCODEHASH of EOF contract ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py::test_legacy_calls_eof_sstore`](./eip3540_eof_v1/test_extcode/test_legacy_calls_eof_sstore.md)) +- [x] Legacy executing EXTCODECOPY of EOF contract ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py::test_legacy_calls_eof_sstore`](./eip3540_eof_v1/test_extcode/test_legacy_calls_eof_sstore.md)) + +## EIP-3670: EOF - Code Validation + +### Validation + +- [x] Code section with invalid opcodes is rejected ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_all_opcodes_in_container`](./eip3540_eof_v1/test_all_opcodes_in_container/test_all_opcodes_in_container.md)) +- [x] INVALID opcode is valid ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_all_opcodes_in_container`](./eip3540_eof_v1/test_all_opcodes_in_container/test_all_opcodes_in_container.md)) +- [x] Truncated PUSH data ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_truncated_data_portion_opcodes`](./eip3540_eof_v1/test_all_opcodes_in_container/test_truncated_data_portion_opcodes.md)) +- [x] Opcodes deprecated in EOF are rejected ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_all_opcodes_in_container`](./eip3540_eof_v1/test_all_opcodes_in_container/test_all_opcodes_in_container.md)) +- [x] Codes with each valid opcodes ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_all_opcodes_in_container`](./eip3540_eof_v1/test_all_opcodes_in_container/test_all_opcodes_in_container.md)) +- [x] Undefined instruction after terminating instruction ([`tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py::test_invalid_opcodes_after_stop`](./eip3540_eof_v1/test_all_opcodes_in_container/test_invalid_opcodes_after_stop.md)) + +## EIP-4200: EOF - Static relative jumps + +### Validation + +- [x] Valid RJUMP with various offsets ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_positive_negative`](./eip4200_relative_jumps/test_rjump/test_rjump_positive_negative.md)) +- [x] Valid RJUMP with maximum offset ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_maxes`](./eip4200_relative_jumps/test_rjump/test_rjump_maxes.md)) +- [x] Valid RJUMP with minimum offset ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_maxes`](./eip4200_relative_jumps/test_rjump/test_rjump_maxes.md)) +- [x] Valid RJUMPI with various offsets ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_forwards`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_forwards.md)) +- [x] Valid RJUMPI with maximum offset ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_max_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_max_forward.md)) +- [x] Valid RJUMPI with minimum offset ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_max_backward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_max_backward.md)) +- [x] Valid RJUMPV with various number of offsets and various offsets ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_forwards`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_forwards.md)) +- [x] Valid RJUMPV with table size 256 ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_full_table`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_full_table.md)) +- [x] Valid RJUMPV containing maximum offset ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_max_forwards`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_max_forwards.md)) +- [ ] Valid RJUMPV containing minimum offset +- [x] Truncated before RJUMP immediate ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_truncated_rjump`](./eip4200_relative_jumps/test_rjump/test_rjump_truncated_rjump.md)) +- [x] Truncated RJUMP immediate ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_truncated_rjump_2`](./eip4200_relative_jumps/test_rjump/test_rjump_truncated_rjump_2.md)) +- [x] RJUMP out of container bounds ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_after_container`](./eip4200_relative_jumps/test_rjump/test_rjump_after_container.md)) +- [x] RJUMP out of section bounds ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_into_data`](./eip4200_relative_jumps/test_rjump/test_rjump_into_data.md)) +- [x] RJUMP into immediate ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_into_push_1`](./eip4200_relative_jumps/test_rjump/test_rjump_into_push_1.md)) +- [x] Truncated before RJUMPI immediate ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_truncated`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_truncated.md)) +- [x] Truncated RJUMPI immediate ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_truncated_2`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_truncated_2.md)) +- [x] RJUMPI out of container bounds ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_after_container`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_after_container.md)) +- [x] RJUMPI out of section bounds ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_into_data`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_into_data.md)) +- [x] RJUMPI into immediate ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_into_push_1`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_into_push_1.md)) +- [x] Truncated before RJUMPV immediate ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_truncated_empty`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_truncated_empty.md)) +- [x] Truncated RJUMPV immediate ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_truncated`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_truncated.md)) +- [x] RJUMPV out of container bounds ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_after_container`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_after_container.md)) +- [x] RJUMPV out of section bounds ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_into_data`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_into_data.md)) +- [x] RJUMPV into immediate ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_into_push_1`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_into_push_1.md)) + +### Execution + +- [x] RJUMP forwards ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_positive_negative`](./eip4200_relative_jumps/test_rjump/test_rjump_positive_negative.md)) +- [x] RJUMP backwards ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_positive_negative`](./eip4200_relative_jumps/test_rjump/test_rjump_positive_negative.md)) +- [x] RJUMP with 0 offset ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_zero`](./eip4200_relative_jumps/test_rjump/test_rjump_zero.md)) +- [x] RJUMPI forwards with condition true/false ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_condition_forwards`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_condition_forwards.md)) +- [x] RJUMPI backwards with condition true/false ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_condition_backwards`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_condition_backwards.md)) +- [x] RJUMPI with 0 offset with condition true/false ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_condition_zero`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_condition_zero.md)) +- [x] RJUMPV with different case values ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_condition`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_condition.md)) +- [x] RJUMPV with case value out of table bounds ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_condition`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_condition.md)) +- [x] RJUMPV with max cases number ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_condition`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_condition.md), [`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py`](./eip4200_relative_jumps/test_rjumpv/index.md)`-k test_rjumpv_full_table`) + +## EIP-4750: EOF - Functions + +### Validation + +- [x] Valid CALLFs ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_callf_execution.py::test_callf`](./eip4750_functions/test_callf_execution/test_callf.md)) +- [x] CALLFs to non-existing sections ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_invalid_code_section_index`](./eip4750_functions/test_code_validation/test_invalid_code_section_index.md)) +- [x] Truncated CALLF immediate ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_truncated_immediate`](./eip4750_functions/test_code_validation/test_callf_truncated_immediate.md)) +- [x] Unreachable code sections ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_unreachable_code_sections`](./eip4750_functions/test_code_validation/test_unreachable_code_sections.md)) +- [x] Sections reachable from other sections, but not reachable from section 0 ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_unreachable_code_sections`](./eip4750_functions/test_code_validation/test_unreachable_code_sections.md)) +- [x] Unreachable code section that calls itself with JUMPF ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_unreachable_code_sections`](./eip4750_functions/test_code_validation/test_unreachable_code_sections.md)) +- [x] Unreachable code section that calls itself with CALLF ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_unreachable_code_sections`](./eip4750_functions/test_code_validation/test_unreachable_code_sections.md)) +- [ ] RETF with maximum number of outputs (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) + +### Execution + +- [ ] CALLF/RETF execution (ethereum/tests: src/EIPTestsFiller/StateTests/stEOF/stEIP4200/CALLF_RETF_ExecutionFiller.yml) +- [ ] Dispatch to CALLF to different functions based on calldata (ethereum/tests: src/EIPTestsFiller/StateTests/stEOF/stEIP4200/CALLF_RETF_ExecutionFiller.yml) +- [ ] Maximum number of code sections, calling each section with CALLF (ethereum/tests: src/EIPTestsFiller/StateTests/stEOF/stEIP4200/CALLF_RETF_ExecutionFiller.yml) + +## EIP-5450: EOF - Stack Validation + +### Validation + +#### Terminating instructions + +- [ ] Check all terminating opcodes (ethereum/tests: ./src/EOFTestsFiller/efExample/validInvalidFiller.yml src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) +- [ ] Code section not terminating (executing beyond section end) (ethereum/tests: ./src/EOFTestsFiller/efExample/validInvalidFiller.yml src/EOFTestsFiller/EIP5450/validInvalidFiller.yml src/EOFTestsFiller/efStack/no_terminating_instruction_Copier.json) +- [ ] Code section ending with NOP (not terminating) (src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) +- [ ] Check that unreachable code is invalid after all terminating instructions (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) + +#### Jumps + +##### RJUMP + +- [x] Valid RJUMP backwards in a constant stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_backward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_backward.md) +- [x] Invalid RJUMP backwards with mismatching stack in a constant stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjump/test_rjump_backward_invalid_max_stack_height.md) +- [x] Valid RJUMP backwards in a variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_backward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_backward.md) +- [x] Invalid RJUMP backwards with mismatching stack in a variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjump/test_rjump_backward_invalid_max_stack_height.md) +- [x] Valid RJUMP forwards ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_forward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_forward.md) +- [x] Valid RJUMP forwards from different stack ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_forward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_forward.md) +- [x] Valid RJUMP forwards in variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_forward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_forward.md) +- [x] Valid RJUMP forwards from different stack in variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_valid_forward`](./eip4200_relative_jumps/test_rjump/test_rjump_valid_forward.md) +- [ ] Valid empty infinite loop with RJUMP (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) +- [ ] Valid balanced infinite loop (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) +- [x] RJUMP to self (including variadic stack height) ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_into_self`](./eip4200_relative_jumps/test_rjump/test_rjump_into_self.md)) + +##### RJUMPI + +- [x] Valid RJUMPI backwards in a constant stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_backward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_backward.md) +- [x] Invalid RJUMPI backwards with mismatching stack in a constant stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_backward_invalid_max_stack_height.md) +- [x] Valid RJUMPI backwards in a variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_backward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_backward.md) +- [x] Invalid RJUMPI backwards with mismatching stack in a variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_backward_invalid_max_stack_height.md) +- [x] RJUMPI forward with branches of equal stack height ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] RJUMPI forward with branches of equal stack height in a variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] RJUMPI forward with branches of different stack height ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] RJUMPI forward with branches of different stack height in a variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] Valid loop using RJUMPI ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] Valid loop with a break using RJUMPI - equal stack after break and normal loop end ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] Valid loop with a break using RJUMPI - equal stack after break and normal loop end, variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] Valid loop with a break using RJUMPI - different stack after break and normal loop end ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] Valid loop with a break using RJUMPI - different stack after break and normal loop end, variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] If-then-else with equal stack height in branches ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] If-then-else with equal stack height in branches, variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] If-then-else with different stack height in branches ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] If-then-else with different stack height in branches, variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_valid_forward`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_valid_forward.md) +- [x] RJUMPI to self (including variadic stack height) ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py::test_rjumpi_into_self`](./eip4200_relative_jumps/test_rjumpi/test_rjumpi_into_self.md)) + +##### RJUMPV + +- [x] Valid RJUMPV backwards in a constant stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_backward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_backward.md) +- [x] Invalid RJUMPV backwards with mismatching stack in a constant stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_backward_invalid_max_stack_height.md) +- [x] Valid RJUMPV backwards in a variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_backward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_backward.md) +- [x] Invalid RJUMPV backwards with mismatching stack in a variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_backward_invalid_max_stack_height`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_backward_invalid_max_stack_height.md) +- [x] RJUMPV forward with branches of equal stack height ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) +- [x] RJUMPV forward with branches of equal stack height in a variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) +- [x] RJUMPV forward with branches of different stack height ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) +- [x] RJUMPV forward with branches of different stack height in a variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) +- [ ] Valid infinite loop using RJUMPV (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) +- [x] Switch with equal stack height in branches ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) +- [x] Switch with equal stack height in branches, variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) +- [x] Switch with different stack height in branches ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) +- [x] Switch with different stack height in branches, variable stack segment ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_valid_forward`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_valid_forward.md) +- [x] RJUMPV to self (including variadic stack height) ([`tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py::test_rjumpv_into_self`](./eip4200_relative_jumps/test_rjumpv/test_rjumpv_into_self.md)) + +##### Combinations + +- [ ] RJUMP and RJUMPI with the same target and equal stack height (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpi_Copier.json) +- [ ] RJUMP and RJUMPI with the same target and equal stack height in a variable stack segment (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpi_variable_stack_Copier.json) +- [ ] RJUMP and RJUMPI with the same target and different stack height (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpi_Copier.json) +- [ ] RJUMP and RJUMPI with the same target and different stack height in a variable stack segment (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpi_variable_stack_Copier.json) +- [ ] RJUMP and RJUMPV with the same target and equal stack height (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpv_Copier.json) +- [ ] RJUMP and RJUMPV with the same target and equal stack height in a variable stack segment (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpv_variable_stack_Copier.json) +- [ ] RJUMP and RJUMPV with the same target and different stack height (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpv_Copier.json) +- [ ] RJUMP and RJUMPV with the same target and different stack height in a variable stack segment (ethereum/tests: src/EOFTestsFiller/efStack/forwards_rjumpv_variable_stack_Copier.json) +- [ ] RJUMPI and RJUMPV with the same target + +#### Stack underflow + +- [x] Stack underflows ([`tests/unscheduled/eip7692_eof_v1/eip5450_stack/test_code_validation.py::test_all_opcodes_stack_underflow`](./eip5450_stack/test_code_validation/test_all_opcodes_stack_underflow.md)) +- [x] Stack underflow with enough items available in caller stack - can't dig into caller frame ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) +- [x] Stack underflow in variable stack segment, only min underflow ([`tests/unscheduled/eip7692_eof_v1/eip5450_stack/test_code_validation.py::test_all_opcodes_stack_underflow`](./eip5450_stack/test_code_validation/test_all_opcodes_stack_underflow.md)) +- [x] Stack underflow in variable stack segment, both min and max underflow ([`tests/unscheduled/eip7692_eof_v1/eip5450_stack/test_code_validation.py::test_all_opcodes_stack_underflow`](./eip5450_stack/test_code_validation/test_all_opcodes_stack_underflow.md)) + +#### CALLF + +- [x] Valid CALLFs to functions with inputs ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) +- [ ] CALLF stack underflows ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) + - [ ] ./src/EOFTestsFiller/efExample/validInvalidFiller.yml + - [ ] src/EOFTestsFiller/EIP5450/validInvalidFiller.yml +- [x] CALLF stack underflow in variable stack segment, only min underflow ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_underflow_examples`](./eip4750_functions/test_code_validation/test_callf_stack_underflow_examples.md)) +- [x] CALLF stack underflow in variable stack segment, both min and max underflow ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_underflow_examples`](./eip4750_functions/test_code_validation/test_callf_stack_underflow_examples.md)) +- [ ] Branching to CALLFs with the same number of outputs (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) +- [ ] Check that CALLF stack inputs/outputs equal to target section type definition + +#### RETF + +- [ ] Valid RETF with correct number of items on stack ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) + - [ ] src/EOFTestsFiller/EIP5450/validInvalidFiller.yml +- [ ] Invalid RETF with extra items on stack ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) + - [ ] ./src/EOFTestsFiller/efExample/validInvalidFiller.yml +- [x] RETF stack underflow ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) +- [x] RETF reached via different paths ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) +- [x] RETF in variable stack segment is not allowed ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_eof_validity`](./eip4750_functions/test_code_validation/test_eof_validity.md)) +- [ ] Extra items on stack allowed for terminating instructions other than RETF (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) +- [x] Invalid RETF in a non-returning function ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_first_section_returning`](./eip6206_jumpf/test_nonreturning_validation/test_first_section_returning.md)) + +#### JUMPF + +- [x] Extra items on stack are allowed for JUMPF to non-returning function ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_non_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_non_returning.md) [`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_non_returning_variable_stack`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_non_returning_variable_stack.md)) +- [x] JUMPF stack underflows ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_non_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_non_returning.md) [`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning.md)) +- [x] JUMPF stack underflow in a variable stack segment - only min underflow ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_non_returning_variable_stack`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_non_returning_variable_stack.md)) +- [x] JUMPF stack underflow in a variable stack segment - both min and max underflow ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_non_returning_variable_stack`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_non_returning_variable_stack.md)) +- [x] JUMPF into function with the same number of outputs ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning.md)) +- [x] JUMPF into function with fewer outputs than current one ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning.md)) +- [x] Extra items on stack are allowed for JUMPF to returning function ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning.md)) +- [x] JUMPF to returning in a variable stack segment is not allowed ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning_variable_stack_1`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning_variable_stack_1.md) [`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning_variable_stack_2`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning_variable_stack_2.md) [`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_to_returning_variable_stack_3`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_to_returning_variable_stack_3.md)) +- (ethereum/tests: src/EOFTestsFiller/efStack/jumpf_to_returning_variable_stack_Copier.json) +- [x] Invalid JUMPF in a non-returning function ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_retf_in_nonreturning`](./eip6206_jumpf/test_nonreturning_validation/test_retf_in_nonreturning.md)) +- [ ] Truncated JUMPF immediate + +#### Stack overflow + +##### CALLF + +- [x] Max allowed stack height reached in CALLF-ed function ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow`](./eip4750_functions/test_code_validation/test_callf_stack_overflow.md)) +- [x] CALLF validation time stack overflow ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow_after_callf`](./eip4750_functions/test_code_validation/test_callf_stack_overflow_after_callf.md)) +- [x] Max allowed stack height reached in CALLF-ed function with inputs ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_with_inputs_stack_overflow`](./eip4750_functions/test_code_validation/test_callf_with_inputs_stack_overflow.md)) +- [x] CALLF validation time stack overflow in function with inputs ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_with_inputs_stack_overflow`](./eip4750_functions/test_code_validation/test_callf_with_inputs_stack_overflow.md)) +- [x] Max allowed stack height reached in CALLF-ed function. CALLF in variable stack segment. ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow_variable_stack`](./eip4750_functions/test_code_validation/test_callf_stack_overflow_variable_stack.md) [`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow_variable_stack_2`](./eip4750_functions/test_code_validation/test_callf_stack_overflow_variable_stack_2.md))) +- [x] CALLF validation time stack overflow in variable stack segment. ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow_variable_stack_3`](./eip4750_functions/test_code_validation/test_callf_stack_overflow_variable_stack_3.md) [`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_stack_overflow_variable_stack_4`](./eip4750_functions/test_code_validation/test_callf_stack_overflow_variable_stack_4.md))) +- [x] Max allowed stack height reached in CALLF-ed function with inputs. CALLF in variable stack segment. ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_with_inputs_stack_overflow_variable_stack`](./eip4750_functions/test_code_validation/test_callf_with_inputs_stack_overflow_variable_stack.md)) +- [x] CALLF validation time stack overflow in function with inputs in variable stack segment. ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py::test_callf_with_inputs_stack_overflow_variable_stack`](./eip4750_functions/test_code_validation/test_callf_with_inputs_stack_overflow_variable_stack.md)) +- [ ] Function inputs are accessible and accounted for (no stack underflow if they are popped) (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) + +##### JUMPF + +- [x] Max allowed stack height reached in JUMPF-ed function ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_other_stack_overflow`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_other_stack_overflow.md)) +- [x] JUMPF validation time stack overflow ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_jumpf_other_stack_overflow`](./eip6206_jumpf/test_jumpf_validation/test_jumpf_other_stack_overflow.md)) +- [x] Max allowed stack height reached in JUMPF-ed function with inputs ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow.md)) +- [x] JUMPF validation time stack overflow in function with inputs ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow.md)) +- [x] JUMPF validation time stack overflow in function with inputs, variable stack segment, only max overflow ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow_variable_stack`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow_variable_stack.md)) +- [x] JUMPF validation time stack overflow in function with inputs, variable stack segment, both max and min overflow ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow_variable_stack`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow_variable_stack.md)) +- [x] Max allowed stack height reached in JUMPF-ed function. JUMPF in variable stack segment. ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_variadic_stack_overflow`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_variadic_stack_overflow.md)) +- [x] JUMPF validation time stack overflow in variable stack segment - only max overflow. ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_variadic_stack_overflow`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_variadic_stack_overflow.md)) +- [x] JUMPF validation time stack overflow in variable stack segment - both min and max overflow. ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_variadic_stack_overflow`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_variadic_stack_overflow.md)) +- [x] Max allowed stack height reached in JUMPF-ed function with inputs. JUMPF in variable stack segment. ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow_variable_stack`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow_variable_stack.md)) +- [x] JUMPF validation time stack overflow in function with inputs in variable stack segment. ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_with_inputs_stack_overflow_variable_stack`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_with_inputs_stack_overflow_variable_stack.md)) + +#### SWAPN/DUPN/EXCHANGE + +- [ ] Valid DUPN with enough items on stack (ethereum/tests: src/EOFTestsFiller/efStack/dupn_stack_validation_Copier.json) +- [ ] DUPN stack underflow (ethereum/tests: src/EOFTestsFiller/efStack/dupn_stack_validation_Copier.json) +- [ ] Valid SWAPN with enough items on stack (ethereum/tests: src/EOFTestsFiller/efStack/swapn_stack_validation_Copier.json) +- [ ] SWAPN stack underflow (ethereum/tests: src/EOFTestsFiller/efStack/swapn_stack_validation_Copier.json) +- [ ] Valid EXCHANGE with enough items on stack (ethereum/tests: src/EOFTestsFiller/efStack/exchange_deep_stack_validation_Copier.json src/EOFTestsFiller/efStack/exchange_stack_validation_Copier.json) +- [ ] EXCHANGE stack underflow (ethereum/tests: src/EOFTestsFiller/efStack/exchange_stack_validation_Copier.json src/EOFTestsFiller/efStack/exchange_empty_stack_validation_Copier.json) + +#### Other + +- [ ] Wrong max_stack_height (ethereum/tests: ./src/EOFTestsFiller/efExample/validInvalidFiller.yml src/EOFTestsFiller/efValidation/max_stack_height_Copier.json) +- [ ] All opcodes correctly account for stack inputs/outputs (ethereum/tests: src/EOFTestsFiller/EIP5450/validInvalidFiller.yml) +- [ ] Code reachable only via backwards jump is invalid +- [x] Maximally broad [0, 1023] stack range ([`tests/unscheduled/eip7692_eof_v1/eip_5450_stack/test_code_validation.py::test_stack_range_maximally_broad`](./eip5450_stack/test_code_validation/test_stack_range_maximally_broad.md)) + +### Execution + +- [x] Max stack size (1024) in CALLF-ed function ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_callf_execution.py::test_callf_operand_stack_size_max`](./eip4750_functions/test_callf_execution/test_callf_operand_stack_size_max.md) + + +## EIP-6206: EOF - JUMPF and non-returning functions + +### Validation + +- [x] Zero section returning ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_first_section_returning`](./eip6206_jumpf/test_nonreturning_validation/test_first_section_returning.md), ethereum/tests: ./src/EOFTestsFiller/efExample/validInvalidFiller.yml src/EOFTestsFiller/EIP4750/validInvalidFiller.yml) +- [x] Zero section declared non-returning but ends with RETF ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_retf_in_nonreturning`](./eip6206_jumpf/test_nonreturning_validation/test_retf_in_nonreturning.md), ethereum/tests: src/EOFTestsFiller/EIP4750/validInvalidFiller.yml) +- [x] CALLF into non-returning function ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_callf_to_nonreturning`](./eip6206_jumpf/test_nonreturning_validation/test_callf_to_nonreturning.md)) +- [x] Valid JUMPF into sections with equal number of outputs ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py::test_jumpf_to_retf`](./eip6206_jumpf/test_jumpf_execution/test_jumpf_to_retf.md)) +- [x] Valid JUMPF into sections with different but compatible number of outputs ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py::test_jumpf_to_retf`](./eip6206_jumpf/test_jumpf_execution/test_jumpf_to_retf.md)) +- [x] JUMPF into sections with incompatible outputs ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py::test_jumpf_incompatible_outputs`](./eip6206_jumpf/test_jumpf_stack/test_jumpf_incompatible_outputs.md)) +- [x] Non-returning section without JUMPF ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py::test_jumpf_forward`](./eip6206_jumpf/test_jumpf_execution/test_jumpf_forward.md)) +- [x] Non-returning section with JUMPF ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_jumpf_in_nonreturning`](./eip6206_jumpf/test_nonreturning_validation/test_jumpf_in_nonreturning.md)) +- [x] Returning section with RETF ([`tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_callf_execution.py::test_callf`](./eip4750_functions/test_callf_execution/test_callf.md)) +- [x] Returning section with JUMPF ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_returning_jumpf`](./eip6206_jumpf/test_jumpf_validation/test_returning_jumpf.md)) +- [x] Returning section with JUMPF to returning and RETF ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py::test_jumpf_to_retf`](./eip6206_jumpf/test_jumpf_execution/test_jumpf_to_retf.md)) +- [x] Returning section with JUMPF to non-returning and RETF ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_returning_jumpf`](./eip6206_jumpf/test_jumpf_validation/test_returning_jumpf.md)) +- [x] Returning section without JUMPF nor RETF ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_returning_section_not_returning`](./eip6206_jumpf/test_nonreturning_validation/test_returning_section_not_returning.md)) +- [x] Invalid non-returning flag ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py::test_returning_section_not_returning`](./eip6206_jumpf/test_nonreturning_validation/test_returning_section_not_returning.md)) +- [x] Circular JUMPF between two sections ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py::test_jumpf_infinite_loop`](./eip6206_jumpf/test_jumpf_execution/test_jumpf_infinite_loop.md)) +- [x] JUMPF into non-existing section ([`tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py::test_invalid_code_section_index`](./eip6206_jumpf/test_jumpf_validation/test_invalid_code_section_index.md)) + +## EIP-7480: EOF - Data section access instructions + +### Validation + +- [x] Valid DATALOADN with various offsets ([`tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_data_opcodes.py::test_dataloadn`](./eip7480_data_section/test_data_opcodes/test_dataloadn.md) +- [x] Truncated DATALOADN immediate ([`tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_code_validation.py::test_dataloadn_truncated_immediate`](./eip7480_data_section/test_code_validation/test_dataloadn_truncated_immediate.md) +- [x] DATALOADN offset out of bounds ([`tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_code_validation.py::test_invalid_containers_with_data_section`](./eip7480_data_section/test_code_validation/test_invalid_containers_with_data_section.md) +- [x] DATALOADN accessing not full word ([`tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_code_validation.py::test_invalid_containers_with_data_section`](./eip7480_data_section/test_code_validation/test_invalid_containers_with_data_section.md) + +## EIP-663: SWAPN, DUPN and EXCHANGE instructions + +### Validation + +- [ ] A DUPN instruction causes stack overflow +- [ ] A DUPN instruction causes stack underflow +- [ ] A DUPN instruction causes max stack height mismatch +- [ ] A SWAPN instruction causes stack underflow + +### Execution + +- [x] Positive tests for DUPN instructions ([`./tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_dupn.py::test_dupn_all_valid_immediates`](./eip663_dupn_swapn_exchange/test_dupn/test_dupn_all_valid_immediates.md)) +- [x] Positive tests for SWAPN instructions ([`./tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_swapn.py::test_swapn_all_valid_immediates`](./eip663_dupn_swapn_exchange/test_swapn/test_swapn_all_valid_immediates.md)) +- [x] Positive tests for EXCHANGE instruction ([`./tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_exchange.py::test_exchange_all_valid_immediates`](./eip663_dupn_swapn_exchange/test_exchange/test_exchange_all_valid_immediates.md)) + +## EIP-7069: Revamped CALL instructions + +### Execution + +- [x] EXTDELEGATECALL from EOF to EOF ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_sstore`](./eip7069_extcall/test_calls/test_eof_calls_eof_sstore.md)) +- [x] EXTDELEGATECALL from EOF to legacy fails ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_legacy_sstore`](./eip7069_extcall/test_calls/test_eof_calls_legacy_sstore.md)) +- [ ] EXTDELEGATECALL forwards static mode (evmone-tests: state_tests/state_transition/eof_calls/extdelegatecall_static.json) +- [x] EXTCALL with value success ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_with_value`](./eip7069_extcall/test_calls/test_eof_calls_with_value.md)) +- [x] EXTCALL with value from EXTSTATICCALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_static_flag_with_value`](./eip7069_extcall/test_calls/test_eof_calls_static_flag_with_value.md)) +- [x] EXTCALL with value, not enough balance ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_with_value`](./eip7069_extcall/test_calls/test_eof_calls_with_value.md)) +- [x] EXTCALL with value, check additional charge for value ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) +- [x] EXTCALL with gas not enough for callee to get 5000 gas ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_min_callee_gas`](./eip7069_extcall/test_calls/test_eof_calls_min_callee_gas.md)) +- [x] RETURNDATA* after EXTCALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_returndataload.py`](./eip7069_extcall/test_returndataload/index.md)) +- [x] RETURNDATA* after EXTDELEGATECALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_returndataload.py`](./eip7069_extcall/test_returndataload/index.md)) +- [x] RETURNDATA* after EXTSTATICCALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_returndataload.py`](./eip7069_extcall/test_returndataload/index.md)) +- [x] RETURNDATA* after aborted EXT*CALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_clear_return_buffer`](./eip7069_extcall/test_calls/test_eof_calls_clear_return_buffer.md)) +- [x] Failed EXTCALL clears returndata from previous EXTCALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_clear_return_buffer`](./eip7069_extcall/test_calls/test_eof_calls_clear_return_buffer.md)) +- [x] EXTCALL not enough gas for input memory charge ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) +- [x] EXTDELEGATECALL not enough gas for input memory charge ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) +- [x] EXTSTATICCALL not enough gas for input memory charge ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) +- [x] EXTCALL exception due to target address overflow (bits set in high 12 bytes) ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py`](./eip7069_extcall/test_address_space_extension/index.md)) +- [x] EXTDELEGATECALL exception due to target address overflow (bits set in high 12 bytes) ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py`](./eip7069_extcall/test_address_space_extension/index.md)) +- [x] EXTSTATICCALL exception due to target address overflow (bits set in high 12 bytes) ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py`](./eip7069_extcall/test_address_space_extension/index.md)) +- [x] EXTCALL not enough gas for warming up target address ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) +- [x] EXTDELEGATECALL not enough gas for warming up target address ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) +- [x] EXTSTATICCALL not enough gas for warming up target address ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) +- [x] EXTCALL not enough gas for account creation cost (transfer value to non-existing account) ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py::test_ext_calls_gas`](./eip7069_extcall/test_gas/test_ext_calls_gas.md)) +- [x] OOG after EXTCALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_then_fails`](./eip7069_extcall/test_calls/test_eof_calls_eof_then_fails.md)) +- [x] OOG after EXTDELEGATECALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_then_fails`](./eip7069_extcall/test_calls/test_eof_calls_eof_then_fails.md)) +- [x] OOG after EXTSTATICCALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_then_fails`](./eip7069_extcall/test_calls/test_eof_calls_eof_then_fails.md)) +- [x] REVERT inside EXTCALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_fails`](./eip7069_extcall/test_calls/test_callee_fails.md)) +- [x] REVERT inside EXTDELEGATECALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_fails`](./eip7069_extcall/test_calls/test_callee_fails.md)) +- [x] REVERT inside EXTSTATICCALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_fails`](./eip7069_extcall/test_calls/test_callee_fails.md)) +- [x] EXTCALL with input (`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calldata.py`) +- [x] EXTDELEGATECALL with input (`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calldata.py`) +- [x] EXTSTATICCALL with input (`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calldata.py`) +- [x] EXTCALL with just enough gas for MIN_RETAINED_GAS and MIN_CALLEE_GAS ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_min_callee_gas`](./eip7069_extcall/test_calls/test_eof_calls_min_callee_gas.md)) +- [x] EXTCALL with not enough gas for MIN_CALLEE_GAS ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_min_callee_gas`](./eip7069_extcall/test_calls/test_eof_calls_min_callee_gas.md)) +- [x] ADDRESS and CALLER inside EXTCALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_context`](./eip7069_extcall/test_calls/test_callee_context.md)) +- [x] ADDRESS and CALLER inside EXTDELEGATECALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_context`](./eip7069_extcall/test_calls/test_callee_context.md)) +- [x] ADDRESS and CALLER inside EXTSTATICCALL ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_callee_context`](./eip7069_extcall/test_calls/test_callee_context.md)) +- [ ] Refund inside EXTCALL is applied after the transaction (evmone-tests: state_tests/state_transition/eof_calls/extcall_gas_refund_propagation.json) +- [ ] Refund inside EXTDELEGATECALL is applied after the transaction (evmone-tests: state_tests/state_transition/eof_calls/extdelegatecall_gas_refund_propagation.json) +- [x] EXTSTATICCALL from EOF to non-pure legacy contract failing ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_legacy_sstore`](./eip7069_extcall/test_calls/test_eof_calls_legacy_sstore.md)) +- [x] EXTSTATICCALL from EOF to pure EOF contract ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_legacy_mstore`](./eip7069_extcall/test_calls/test_eof_calls_legacy_mstore.md)) +- [x] EXTSTATICCALL from EOF to non-pure EOF contract failing ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_sstore`](./eip7069_extcall/test_calls/test_eof_calls_eof_sstore.md)) +- [x] `*CALLs` from legacy contracts to EOF contracts (ethereum/tests: ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_legacy_calls_eof_sstore`](./eip7069_extcall/test_calls/test_eof_calls_eof_sstore.md)) +- [x] `EXT*CALLs` from EOF to legacy contracts ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_legacy_sstore`](./eip7069_extcall/test_calls/test_eof_calls_eof_sstore.md)) +- [x] EXTDELEGATECALL from EOF to EOF contract ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_eof_calls_eof_sstore`](./eip7069_extcall/test_calls/test_eof_calls_eof_sstore.md)) +- [x] EXTDELEGATECALL from EOF to legacy contract failing ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_extdelegate_call_targets`](./eip7069_extcall/test_calls/test_extdelegate_call_targets.md)) +- [x] EXTDELEGATECALL from EOF to EOA failing ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_extdelegate_call_targets`](./eip7069_extcall/test_calls/test_extdelegate_call_targets.md)) +- [x] EXTDELEGATECALL from EOF to empty account failing ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_extdelegate_call_targets`](./eip7069_extcall/test_calls/test_extdelegate_call_targets.md)) +- [x] EXTDELEGATECALL to EIP-7702 delegate ([`./tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py::test_extdelegate_call_targets`](./eip7069_extcall/test_calls/test_extdelegate_call_targets.md)) + + +## EIP-7620: EOF Contract Creation + +### Validation + +- [ ] Valid EOFCREATEs referring to various container numbers (ethereum/tests: ./src/EOFTestsFiller/efValidation/EOF1_eofcreate_valid_Copier.json) +- [x] Truncated before EOFCREATE immediate ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py`](./eip7620_eof_create/test_eofcreate/index.md)`-k test_eofcreate_invalid_truncated_immediate`) +- [ ] EOFCREATE is not a valid terminating instruction +- [x] EOFCREATE immediate referring to non-existing container ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py`](./eip7620_eof_create/test_eofcreate/index.md)`-k test_eofcreate_invalid_index`) +- [x] EOFCREATE immediate referring to container with truncated data ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py`](./eip7620_eof_create/test_eofcreate/index.md)`-k test_eofcreate_truncated_container`) +- [x] Valid RETURNCODEs referring to various container numbers ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_returncode.py`](./eip7620_eof_create/test_returncode/index.md)`-k test_returncode_valid_index`) +- [x] Truncated before RETURNCODE immediate ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_returncode.py::test_returncode_invalid_truncated_immediate`](./eip7620_eof_create/test_returncode/test_returncode_invalid_truncated_immediate.md)) +- [x] RETURNCODE immediate referring to non-existing container ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_returncode.py`](./eip7620_eof_create/test_returncode/index.md)`-k test_returncode_invalid_index`) +- [x] Unreachable code after RETURNCODE, check that RETURNCODE is terminating ([`tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_returncode.py::test_returncode_terminating`](./eip7620_eof_create/test_returncode/test_returncode_terminating.md)) + +### Execution + +- [ ] CREATE with EOF initcode fails in Prague (evmone-tests: state_tests/state_transition/eof_create/create_with_eof_initcode.json) +- [ ] CREATE with EOF initcode fails in Cancun (evmone-tests: state_tests/state_transition/eof_create/create_with_eof_initcode_cancun.json) +- [ ] CREATE2 with EOF initcode fails in Prague (evmone-tests: state_tests/state_transition/eof_create/create2_with_eof_initcode.json) +- [ ] CREATE2 with EOF initcode fails in Cancun (evmone-tests: state_tests/state_transition/eof_create/create2_with_eof_initcode_cancun.json) +- [ ] CREATE with legacy initcode and EOF deploy code fails (evmone-tests: state_tests/state_transition/eof_create/create_deploying_eof.json) +- [ ] CREATE2 with legacy initcode and EOF deploy code fails (evmone-tests: state_tests/state_transition/eof_create/create2_deploying_eof.json) +- [ ] EOFCREATE success with empty aux data (evmone-tests: state_tests/state_transition/eof_create/eofcreate_empty_auxdata.json) +- [ ] EOFCREATE success with aux data length equal to declared in deploy container (evmone-tests: state_tests/state_transition/eof_create/eofcreate_auxdata_equal_to_declared.json) +- [ ] EOFCREATE success with aux data longer than size declared in deploy container (evmone-tests: state_tests/state_transition/eof_create/eofcreate_auxdata_longer_than_declared.json) +- [ ] EOFCREATE with aux data shorter than size declared in deploy container fails (evmone-tests: state_tests/state_transition/eof_create/eofcreate_auxdata_shorter_than_declared.json) +- [ ] EOFCREATE success deploying DATALOADN referring to aux data portion of deploy container data (evmone-tests: state_tests/state_transition/eof_create/eofcreate_dataloadn_referring_to_auxdata.json) +- [ ] EOFCREATE success with deploy container having aux data and subcontainer (evmone-tests: state_tests/state_transition/eof_create/eofcreate_with_auxdata_and_subcontainer.json) +- [ ] REVERT in initcontainer (evmone-tests: state_tests/state_transition/eof_create/eofcreate_revert_empty_returndata.json) +- [ ] REVERT with return data in initcontainer (evmone-tests: state_tests/state_transition/eof_create/eofcreate_revert_non_empty_returndata.json) +- [ ] Exceptional abort in initcontainer (evmone-tests: state_tests/state_transition/eof_create/eofcreate_initcontainer_aborts.json) +- [ ] EOFCREATE with deploy container of max size 0x6000 (evmone-tests: state_tests/state_transition/eof_create/eofcreate_deploy_container_max_size.json) +- [ ] EOFCREATE with deploy container size above limit (evmone-tests: state_tests/state_transition/eof_create/eofcreate_deploy_container_too_large.json) +- [ ] EOFCREATE with deploy container data size above 64K after appending aux data (evmone-tests: state_tests/state_transition/eof_create/eofcreate_appended_data_size_larger_than_64K.json) +- [ ] EOFCREATE with deploy container size above limit after appending aux data (evmone-tests: state_tests/state_transition/eof_create/eofcreate_deploy_container_with_aux_data_too_large.json) +- [ ] EOFCREATE success nested in EOFCREATE initcode (evmone-tests: state_tests/state_transition/eof_create/eofcreate_nested_eofcreate.json) +- [ ] EOFCREATE success nested in EOFCREATE initcode that reverts (evmone-tests: state_tests/state_transition/eof_create/eofcreate_nested_eofcreate_revert.json) +- [ ] EOFCREATE with value success +- [ ] EOFCREATE with value - not enough caller balance (evmone-tests: state_tests/state_transition/eof_create/eofcreate_caller_balance_too_low.json) +- [ ] EOFCREATE not enough gas for initcode (EIP-3860) charge (evmone-tests: state_tests/state_transition/eof_create/eofcreate_not_enough_gas_for_initcode_charge.json) +- [ ] EOFCREATE not enough gas for input memory expansion (evmone-tests: state_tests/state_transition/eof_create/eofcreate_not_enough_gas_for_mem_expansion.json) +- [ ] RETURNCODE not enough gas for aux data memory expansion (evmone-tests: state_tests/state_transition/eof_create/returncode_not_enough_gas_for_mem_expansion.json) +- [ ] Successful EOFCREATE clears returndata (evmone-tests: state_tests/state_transition/eof_create/eofcreate_clears_returndata.json) +- [ ] Second EOFCREATE with the same container and salt fails (evmone-tests: state_tests/state_transition/eof_create/eofcreate_failure_after_eofcreate_success.json) +- [ ] Call created contract after EOFCREATE (evmone-tests: state_tests/state_transition/eof_create/eofcreate_call_created_contract.json) + +## EIP-7698: EOF - Creation transaction + +TODO: replace with `EIP-7873: EOF - TXCREATE and InitcodeTransaction type` test cases + +### Execution + +- [ ] Creation transaction success with empty deploy container data (evmone-tests: state_tests/state_transition/eof_create/creation_tx.json) +- [ ] Creation transaction success with data in deploy container without aux data (evmone-tests: state_tests/state_transition/eof_create/creation_tx_deploy_data.json) +- [ ] Creation transaction success with data in deploy container with aux data length equal to declared (evmone-tests: state_tests/state_transition/eof_create/creation_tx_static_auxdata_in_calldata.json) +- [ ] Creation transaction success with data in deploy container with aux data longer than declared (evmone-tests: state_tests/state_transition/eof_create/creation_tx_dynamic_auxdata_in_calldata.json) +- [ ] Creation transaction success deploying DATALOADN referring to aux data portion of deploy container data (evmone-tests: state_tests/state_transition/eof_create/creation_tx_dataloadn_referring_to_auxdata.json) +- [ ] Exceptional abort in creation transaction initcode (evmone-tests: state_tests/state_transition/eof_create/creation_tx_initcontainer_aborts.json) +- [ ] RETURN in creation transaction initcode fails (evmone-tests: state_tests/state_transition/eof_create/creation_tx_initcontainer_return.json) +- [ ] STOP in creation transaction initcode fails (evmone-tests: state_tests/state_transition/eof_create/creation_tx_initcontainer_stop.json) +- [ ] Creation transaction with initcode of max allowed size 0xc000 (evmone-tests: state_tests/state_transition/eof_create/creation_tx_initcontainer_max_size.json) +- [ ] Creation transaction with initcode size above limit (evmone-tests: state_tests/state_transition/eof_create/creation_tx_initcontainer_too_large.json) +- [ ] Creation transaction deploys container of max allowed size 0x6000 (evmone-tests: state_tests/state_transition/eof_create/creation_tx_deploy_container_max_size.json) +- [ ] Creation transaction deploying container of size above limit fails (evmone-tests: state_tests/state_transition/eof_create/creation_tx_deploy_container_too_large.json) +- [ ] EOFCREATE success nested in creation transaction initcode (evmone-tests: state_tests/state_transition/eof_create/creation_tx_nested_eofcreate.json) +- [ ] Creation transaction with invalid initcontainer (invalid header) (evmone-tests: state_tests/state_transition/eof_create/creation_tx_invalid_initcode_header.json) +- [ ] Creation transaction with invalid initcontainer (invalid EOF version) (evmone-tests: state_tests/state_transition/eof_create/creation_tx_invalid_eof_version.json) +- [ ] Creation transaction with invalid initcontainer (invalid max stack height) (evmone-tests: state_tests/state_transition/eof_create/creation_tx_invalid_initcode.json) +- [ ] Creation transaction fails if initcontainer has truncated data section (declared size > present data size ) (evmone-tests: state_tests/state_transition/eof_create/creation_tx_truncated_data_initcode.json) +- [ ] Creation transaction with invalid deploy container (evmone-tests: state_tests/state_transition/eof_create/creation_tx_invalid_deploycode.json) +- [ ] Create transaction with legacy initcode and EOF deploy code fails (evmone-tests: state_tests/state_transition/eof_create/creation_tx_deploying_eof.json) +- [ ] EOF creation transaction fails before Prague (evmone-tests: state_tests/state_transition/eof_create/initcode_transaction_before_unscheduled.json) diff --git a/tests/osaka/eip7692_eof_v1/gas_test.py b/tests/unscheduled/eip7692_eof_v1/gas_test.py similarity index 98% rename from tests/osaka/eip7692_eof_v1/gas_test.py rename to tests/unscheduled/eip7692_eof_v1/gas_test.py index 511c205a1a5..70640f6018a 100644 --- a/tests/osaka/eip7692_eof_v1/gas_test.py +++ b/tests/unscheduled/eip7692_eof_v1/gas_test.py @@ -7,7 +7,7 @@ from ethereum_test_tools.vm.opcode import Opcodes as Op from ethereum_test_types.eof.v1 import Container, Section from ethereum_test_vm import Bytecode, EVMCodeType -from tests.osaka.eip7692_eof_v1.eip7069_extcall.spec import ( +from tests.unscheduled.eip7692_eof_v1.eip7069_extcall.spec import ( LEGACY_CALL_FAILURE, LEGACY_CALL_SUCCESS, ) diff --git a/tox.ini b/tox.ini index 9b0123a11ed..646aef5fd64 100644 --- a/tox.ini +++ b/tox.ini @@ -65,7 +65,7 @@ commands = [forks] develop = Prague -eip7692 = Osaka +eip7692 = EOFv1 [testenv:tests-deployed] description = Fill test cases in ./tests/ for deployed mainnet forks. @@ -83,14 +83,6 @@ setenv = commands_pre = solc-select use {[testenv]solc_version} --always-install commands = pytest -n auto --until={[forks]develop} -k "not slow" --skip-evm-dump -[testenv:tests-eip7692] -description = Fill test cases in ./tests/ for EIP-7692 (EOF) on Osaka -setenv = - # Use custom EELS_RESOLUTIONS_FILE if it is set via the environment (eg, in CI) - EELS_RESOLUTIONS_FILE = {env:EELS_RESOLUTIONS_FILE:} -commands_pre = solc-select use {[testenv]solc_version} --always-install -commands = pytest -n auto --evm-bin=evmone-t8n --fork={[forks]eip7692} -k "not slow" ./tests/osaka --skip-evm-dump - # ---------------------------------------------------------------------------------------------- # ALIAS ENVIRONMENTS # ---------------------------------------------------------------------------------------------- diff --git a/whitelist.txt b/whitelist.txt index ed149d44c98..a8cd826c02e 100644 --- a/whitelist.txt +++ b/whitelist.txt @@ -886,3 +886,4 @@ uncomp isogeny codomain nametag +CFI'd \ No newline at end of file