From 58b51339617fbe6e4e554d8d3fc82ea155f39579 Mon Sep 17 00:00:00 2001 From: pdobacz <5735525+pdobacz@users.noreply.github.com> Date: Thu, 12 Feb 2026 11:50:35 +0100 Subject: [PATCH] Revert "Merge upstream changes (#4)" This reverts commit 9d6f8203a85423d7f412f79e6d5210a852866bd3. --- .claude/commands/assess-eip.md | 45 - .claude/commands/audit-config.md | 47 - .claude/commands/edit-workflow.md | 18 - .claude/commands/eip-checklist.md | 58 - .claude/commands/fill-tests.md | 60 - .claude/commands/grammar-check.md | 59 - .claude/commands/implement-eip.md | 62 - .claude/commands/lint.md | 42 - .claude/commands/write-test.md | 66 - .claude/settings.json | 31 - .github/PULL_REQUEST_TEMPLATE.md | 7 +- .github/actions/build-fixtures/action.yaml | 3 - .github/configs/feature.yaml | 8 +- .github/workflows/test.yaml | 16 - .gitignore | 7 +- CLAUDE.md | 62 - EIP_AUTHORS_MANUAL.md | 4 +- docs/CHANGELOG.md | 7 - docs/dev/docs.md | 2 +- docs/getting_started/repository_overview.md | 38 +- docs/navigation.md | 15 +- docs/writing_tests/benchmarks.md | 313 +-- .../eip_testing_checklist_template.md | 19 +- docs/writing_tests/fork_methods.md | 5 +- docs/writing_tests/index.md | 4 - docs/writing_tests/opcode_metadata.md | 406 --- docs/writing_tests/test_markers.md | 61 +- packages/testing/pyproject.toml | 3 +- packages/testing/src/conftest.py | 26 +- .../testing/src/execution_testing/__init__.py | 26 +- .../execution_testing/base_types/__init__.py | 2 - .../base_types/composite_types.py | 3 +- .../base_types/conversions.py | 3 +- .../execution_testing/base_types/mixins.py | 6 +- .../reference_spec/git_reference_spec.py | 3 +- .../base_types/serialization.py | 25 +- .../base_types/tests/test_base_types.py | 3 +- .../base_types/typing_utils.py | 34 - .../benchmark/benchmark_code_generator.py | 9 +- .../checklists/eip_checklist.py | 7 +- .../checklists/eip_checklist.pyi | 1 - .../test_checklist_template_consistency.py | 4 +- .../execution_testing/cli/benchmark_parser.py | 156 +- .../execution_testing/cli/check_fixtures.py | 8 +- .../cli/diff_opcode_counts.py | 11 +- .../cli/eest/commands/info.py | 3 +- .../cli/eest/make/commands/test.py | 6 +- .../src/execution_testing/cli/eest/quotes.py | 33 +- .../src/execution_testing/cli/eofwrap.py | 440 +++ .../src/execution_testing/cli/evm_bytes.py | 25 +- .../execution_testing/cli/extract_config.py | 25 +- .../cli/fillerconvert/verify_filled.py | 3 +- .../cli/fuzzer_bridge/cli.py | 22 +- .../cli/fuzzer_bridge/converter.py | 3 +- .../src/execution_testing/cli/gen_index.py | 169 +- .../cli/generate_checklist_stubs.py | 11 +- .../cli/gentest/source_code_generator.py | 4 +- .../cli/gentest/test_context_providers.py | 3 +- .../src/execution_testing/cli/hasher.py | 393 +-- .../cli/modify_static_test_gas_limits.py | 33 +- .../cli/pytest_commands/base.py | 3 - .../cli/pytest_commands/checklist.py | 2 +- .../cli/pytest_commands/fill.py | 2 +- .../plugins/consume/consume.py | 46 +- .../plugins/consume/direct/conftest.py | 28 +- .../plugins/consume/simulators/base.py | 3 +- .../plugins/consume/simulators/exceptions.py | 4 +- .../consume/simulators/helpers/exceptions.py | 5 +- .../consume/simulators/helpers/ruleset.py | 23 +- .../consume/simulators/helpers/timing.py | 3 +- .../consume/simulators/rlp/conftest.py | 5 +- .../simulator_logic/test_via_engine.py | 49 +- .../simulator_logic/test_via_rlp.py | 6 +- .../simulator_logic/test_via_sync.py | 94 +- .../consume/simulators/single_test_client.py | 16 +- .../consume/simulators/sync/conftest.py | 3 +- .../simulators/test_case_description.py | 20 +- .../consume/tests/test_consume_args.py | 5 +- .../tests/test_fixtures_source_input_types.py | 6 +- .../plugins/custom_logging/plugin_logging.py | 14 +- .../plugins/execute/contracts.py | 24 +- .../plugins/execute/eth_config/eth_config.py | 62 +- .../execute/eth_config/execute_eth_config.py | 21 +- .../plugins/execute/eth_config/networks.yml | 2 +- .../tests/test_execute_eth_config.py | 60 +- .../execute/eth_config/tests/test_genesis.py | 6 +- .../plugins/execute/execute.py | 130 +- .../execute_deploy_required_contracts.py | 19 +- .../execute/execute_flags/execute_flags.py | 6 +- .../plugins/execute/pre_alloc.py | 196 +- .../execute/rpc/chain_builder_eth_rpc.py | 3 +- .../plugins/execute/rpc/hive.py | 16 +- .../plugins/execute/rpc/remote.py | 58 +- .../plugins/execute/rpc/remote_seed_sender.py | 11 +- .../pytest_commands/plugins/execute/sender.py | 66 +- .../plugins/execute/tests/test_pre_alloc.py | 4 +- .../plugins/filler/eip_checklist.py | 30 +- .../pytest_commands/plugins/filler/filler.py | 421 +-- .../plugins/filler/fixture_output.py | 73 +- .../filler/gen_test_doc/gen_test_doc.py | 28 +- .../plugins/filler/gen_test_doc/page_props.py | 10 +- .../plugins/filler/ported_tests.py | 18 +- .../plugins/filler/pre_alloc.py | 56 +- .../plugins/filler/static_filler.py | 39 +- .../plugins/filler/tests/conftest.py | 6 +- .../plugins/filler/tests/test_benchmarking.py | 502 +--- .../filler/tests/test_generate_all_formats.py | 2 +- .../plugins/filler/tests/test_pre_alloc.py | 21 +- .../filler/tests/test_prealloc_group.py | 48 +- .../test_prealloc_group_usage_example.py | 3 +- .../tests/test_slow_marker_pre_alloc.py | 8 +- .../filler/tests/test_verify_sync_marker.py | 2 +- .../pytest_commands/plugins/filler/witness.py | 19 +- .../pytest_commands/plugins/forks/forks.py | 244 +- .../tests/test_bad_command_line_options.py | 5 +- .../forks/tests/test_bad_validity_markers.py | 80 +- .../forks/tests/test_covariant_markers.py | 45 +- .../plugins/forks/tests/test_forks.py | 11 +- .../plugins/forks/tests/test_markers.py | 192 +- .../cli/pytest_commands/plugins/help/help.py | 27 +- .../plugins/pytest_hive/pytest_hive.py | 22 +- .../plugins/shared/benchmarking.py | 239 +- .../plugins/shared/execute_fill.py | 66 +- .../cli/pytest_commands/plugins/solc/solc.py | 10 +- .../spec_version_checker.py | 22 +- .../cli/pytest_commands/processors.py | 3 +- .../cli/pytest_commands/watcher.py | 5 +- .../cli/show_pre_alloc_group_stats.py | 31 +- .../cli/tests/test_eofwrap.py | 67 + .../cli/tests/test_evm_bytes.py | 24 + .../cli/tests/test_hasher.py | 769 ------ .../cli/tests/test_pytest_execute_command.py | 11 +- .../cli/tests/test_pytest_fill_command.py | 11 +- .../src/execution_testing/cli/tox_helpers.py | 18 +- .../client_clis/cli_types.py | 9 +- .../client_clis/clis/besu.py | 115 +- .../client_clis/clis/erigon.py | 98 +- .../client_clis/clis/ethereumjs.py | 63 +- .../client_clis/clis/ethrex.py | 53 +- .../client_clis/clis/evmone.py | 126 +- .../client_clis/clis/execution_specs.py | 49 +- .../client_clis/clis/geth.py | 70 +- .../client_clis/clis/nethermind.py | 211 +- .../client_clis/clis/nimbus.py | 43 +- .../client_clis/clis/reth.py | 56 +- .../client_clis/ethereum_cli.py | 15 +- .../client_clis/tests/fixtures/1/exp.json | 4 +- .../client_clis/tests/fixtures/3/exp.json | 4 +- .../client_clis/tests/test_execution_specs.py | 5 +- .../client_clis/tests/test_transition_tool.py | 5 +- .../client_clis/transition_tool.py | 23 +- .../src/execution_testing/config/app.py | 4 +- .../src/execution_testing/config/docs.py | 4 +- .../execution_testing/exceptions/__init__.py | 4 + .../exceptions/exceptions.py | 131 +- .../exceptions/exceptions/__init__.py | 4 + .../exceptions/exceptions/base.py | 3 +- .../exceptions/exceptions/eof.py | 125 + .../exceptions/exceptions/exceptions_types.py | 9 +- .../exceptions/exceptions/transaction.py | 2 - .../src/execution_testing/execution/base.py | 5 +- .../execution/blob_transaction.py | 54 +- .../execution/transaction_post.py | 37 +- .../execution_testing/fixtures/__init__.py | 9 +- .../src/execution_testing/fixtures/base.py | 3 +- .../execution_testing/fixtures/blockchain.py | 128 +- .../execution_testing/fixtures/collector.py | 278 +- .../src/execution_testing/fixtures/common.py | 92 +- .../src/execution_testing/fixtures/consume.py | 4 +- .../src/execution_testing/fixtures/eof.py | 51 + .../src/execution_testing/fixtures/file.py | 8 +- .../fixtures/pre_alloc_groups.py | 153 +- .../src/execution_testing/fixtures/state.py | 7 +- .../fixtures/tests/test_blockchain.py | 64 +- .../fixtures/tests/test_collector.py | 438 --- .../fixtures/tests/test_eof.py | 108 + .../fixtures/tests/test_state.py | 10 +- .../src/execution_testing/forks/__init__.py | 16 +- .../src/execution_testing/forks/base_fork.py | 88 +- .../execution_testing/forks/forks/forks.py | 1021 +------ .../forks/forks/transition.py | 16 +- .../src/execution_testing/forks/gas_costs.py | 1 - .../src/execution_testing/forks/helpers.py | 19 +- .../forks/tests/test_forks.py | 19 +- .../forks/tests/test_opcode_gas_costs.py | 602 ---- .../src/execution_testing/logging/__init__.py | 5 +- .../testing/src/execution_testing/rpc/rpc.py | 68 +- .../src/execution_testing/rpc/rpc_types.py | 7 +- .../execution_testing/rpc/tests/test_types.py | 26 +- .../src/execution_testing/specs/__init__.py | 14 + .../src/execution_testing/specs/base.py | 31 +- .../src/execution_testing/specs/benchmark.py | 89 +- .../src/execution_testing/specs/blockchain.py | 91 +- .../src/execution_testing/specs/debugging.py | 3 +- .../src/execution_testing/specs/eof.py | 729 +++++ .../src/execution_testing/specs/helpers.py | 86 +- .../src/execution_testing/specs/state.py | 45 +- .../specs/static_state/account.py | 3 +- .../specs/static_state/common/common.py | 3 +- .../specs/static_state/environment.py | 6 +- .../blockchain_london_invalid_filled.json | 422 +-- .../blockchain_london_valid_filled.json | 392 +-- ...ncun_blockchain_test_engine_tx_type_0.json | 30 +- ...inid_cancun_blockchain_test_tx_type_0.json | 155 +- .../chainid_cancun_state_test_tx_type_0.json | 33 +- .../chainid_cancun_state_test_tx_type_1.json | 39 +- ...id_istanbul_blockchain_test_tx_type_0.json | 133 +- ...inid_london_blockchain_test_tx_type_0.json | 133 +- ...aris_blockchain_test_engine_tx_type_0.json | 30 +- .../chainid_paris_state_test_tx_type_0.json | 33 +- ...ghai_blockchain_test_engine_tx_type_0.json | 30 +- ...chainid_shanghai_state_test_tx_type_0.json | 33 +- .../specs/tests/test_benchmark.py | 16 +- .../specs/tests/test_expect.py | 176 +- .../specs/tests/test_fixtures.py | 32 +- .../execution_testing/test_types/__init__.py | 5 +- .../test_types/account_types.py | 15 +- .../test_types/blob_types.py | 76 +- .../account_absent_values.py | 63 +- .../block_access_list/account_changes.py | 37 +- .../block_access_list/expectations.py | 192 +- .../test_types/block_access_list/modifiers.py | 268 +- .../test_types/block_access_list/t8n.py | 113 - .../test_types/eof/__init__.py | 5 + .../test_types/eof/constants.py | 20 + .../test_types/eof/v1/__init__.py | 622 +++++ .../test_types/eof/v1/constants.py | 45 + .../execution_testing/test_types/helpers.py | 13 + .../test_types/phase_manager.py | 15 +- .../test_types/receipt_types.py | 39 +- .../test_types/tests/test_blob_types.py | 23 +- .../test_block_access_list_serialization.py | 86 - .../tests/test_block_access_list_t8n.py | 395 --- ...ectation.py => test_block_access_lists.py} | 423 ++- .../test_types/tests/test_eof_v1.py | 903 ++++++ .../test_types/tests/test_helpers.py | 4 +- .../test_types/tests/test_phase_manager.py | 3 +- .../test_types/tests/test_post_alloc.py | 16 +- .../test_types/tests/test_types.py | 33 +- .../test_types/transaction_types.py | 59 +- .../src/execution_testing/tools/__init__.py | 8 - .../tools/tests/test_code.py | 18 +- .../tools/tests/test_iterating_bytecode.py | 338 --- .../tools/tools_code/__init__.py | 8 - .../tools/tools_code/generators.py | 800 +----- .../tools/utility/generators.py | 30 +- .../execution_testing/tools/utility/pytest.py | 3 +- .../tools/utility/tests/test_pytest.py | 4 +- .../tools/utility/versioning.py | 2 +- .../src/execution_testing/vm/__init__.py | 12 +- .../testing/src/execution_testing/vm/bases.py | 52 - .../src/execution_testing/vm/bytecode.py | 44 +- .../src/execution_testing/vm/evm_types.py | 16 + .../src/execution_testing/vm/helpers.py | 10 +- .../src/execution_testing/vm/opcodes.py | 1655 ++++++----- .../src/execution_testing/vm/tests/test_vm.py | 184 +- .../stubs/requests_unixsocket/__init__.pyi | 7 +- .../stubs/requests_unixsocket/adapters.pyi | 9 +- pyproject.toml | 23 - scripts/lint-dispatch.sh | 39 - src/ethereum/ethash.py | 4 +- src/ethereum/exceptions.py | 2 +- src/ethereum/forks/amsterdam/__init__.py | 7 +- .../amsterdam/block_access_lists/__init__.py | 31 - .../amsterdam/block_access_lists/builder.py | 519 ---- .../amsterdam/block_access_lists/rlp_types.py | 121 - .../amsterdam/block_access_lists/rlp_utils.py | 117 - src/ethereum/forks/amsterdam/blocks.py | 16 +- src/ethereum/forks/amsterdam/bloom.py | 2 +- src/ethereum/forks/amsterdam/fork.py | 128 +- src/ethereum/forks/amsterdam/requests.py | 2 +- src/ethereum/forks/amsterdam/state.py | 92 +- src/ethereum/forks/amsterdam/state_tracker.py | 558 ---- src/ethereum/forks/amsterdam/trie.py | 2 +- src/ethereum/forks/amsterdam/utils/message.py | 6 - src/ethereum/forks/amsterdam/vm/__init__.py | 16 +- .../forks/amsterdam/vm/eoa_delegation.py | 60 +- src/ethereum/forks/amsterdam/vm/gas.py | 21 +- .../amsterdam/vm/instructions/arithmetic.py | 4 +- .../forks/amsterdam/vm/instructions/block.py | 2 +- .../amsterdam/vm/instructions/environment.py | 60 +- .../forks/amsterdam/vm/instructions/memory.py | 6 +- .../forks/amsterdam/vm/instructions/stack.py | 8 +- .../amsterdam/vm/instructions/storage.py | 46 +- .../forks/amsterdam/vm/instructions/system.py | 325 +-- .../forks/amsterdam/vm/interpreter.py | 148 +- .../bls12_381/bls12_381_pairing.py | 6 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../vm/precompiled_contracts/modexp.py | 2 +- .../vm/precompiled_contracts/p256verify.py | 5 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/amsterdam/vm/runtime.py | 2 +- src/ethereum/forks/arrow_glacier/blocks.py | 4 +- src/ethereum/forks/arrow_glacier/bloom.py | 2 +- src/ethereum/forks/arrow_glacier/state.py | 10 +- src/ethereum/forks/arrow_glacier/trie.py | 2 +- .../forks/arrow_glacier/vm/__init__.py | 2 +- src/ethereum/forks/arrow_glacier/vm/gas.py | 2 +- .../vm/instructions/arithmetic.py | 4 +- .../arrow_glacier/vm/instructions/block.py | 2 +- .../vm/instructions/environment.py | 2 +- .../arrow_glacier/vm/instructions/memory.py | 4 +- .../arrow_glacier/vm/instructions/stack.py | 8 +- .../arrow_glacier/vm/instructions/system.py | 4 +- .../forks/arrow_glacier/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../vm/precompiled_contracts/modexp.py | 2 +- .../forks/arrow_glacier/vm/runtime.py | 2 +- src/ethereum/forks/berlin/blocks.py | 4 +- src/ethereum/forks/berlin/bloom.py | 2 +- src/ethereum/forks/berlin/state.py | 10 +- src/ethereum/forks/berlin/trie.py | 2 +- src/ethereum/forks/berlin/vm/__init__.py | 2 +- src/ethereum/forks/berlin/vm/gas.py | 2 +- .../berlin/vm/instructions/arithmetic.py | 4 +- .../forks/berlin/vm/instructions/block.py | 2 +- .../berlin/vm/instructions/environment.py | 2 +- .../forks/berlin/vm/instructions/memory.py | 4 +- .../forks/berlin/vm/instructions/stack.py | 8 +- .../forks/berlin/vm/instructions/system.py | 4 +- src/ethereum/forks/berlin/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../berlin/vm/precompiled_contracts/modexp.py | 2 +- src/ethereum/forks/berlin/vm/runtime.py | 2 +- src/ethereum/forks/bpo1/blocks.py | 4 +- src/ethereum/forks/bpo1/bloom.py | 2 +- src/ethereum/forks/bpo1/requests.py | 2 +- src/ethereum/forks/bpo1/state.py | 8 +- src/ethereum/forks/bpo1/trie.py | 2 +- src/ethereum/forks/bpo1/vm/__init__.py | 2 +- src/ethereum/forks/bpo1/vm/eoa_delegation.py | 2 + src/ethereum/forks/bpo1/vm/gas.py | 4 +- .../forks/bpo1/vm/instructions/arithmetic.py | 4 +- .../forks/bpo1/vm/instructions/block.py | 2 +- .../forks/bpo1/vm/instructions/environment.py | 2 +- .../forks/bpo1/vm/instructions/memory.py | 6 +- .../forks/bpo1/vm/instructions/stack.py | 8 +- .../forks/bpo1/vm/instructions/system.py | 4 +- src/ethereum/forks/bpo1/vm/interpreter.py | 82 +- .../bls12_381/bls12_381_pairing.py | 6 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../bpo1/vm/precompiled_contracts/mapping.py | 2 +- .../bpo1/vm/precompiled_contracts/modexp.py | 2 +- .../vm/precompiled_contracts/p256verify.py | 5 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/bpo1/vm/runtime.py | 2 +- src/ethereum/forks/bpo2/blocks.py | 4 +- src/ethereum/forks/bpo2/bloom.py | 2 +- src/ethereum/forks/bpo2/requests.py | 2 +- src/ethereum/forks/bpo2/state.py | 8 +- src/ethereum/forks/bpo2/trie.py | 2 +- src/ethereum/forks/bpo2/vm/__init__.py | 2 +- src/ethereum/forks/bpo2/vm/eoa_delegation.py | 2 + src/ethereum/forks/bpo2/vm/gas.py | 4 +- .../forks/bpo2/vm/instructions/arithmetic.py | 4 +- .../forks/bpo2/vm/instructions/block.py | 2 +- .../forks/bpo2/vm/instructions/environment.py | 2 +- .../forks/bpo2/vm/instructions/memory.py | 6 +- .../forks/bpo2/vm/instructions/stack.py | 8 +- .../forks/bpo2/vm/instructions/system.py | 4 +- src/ethereum/forks/bpo2/vm/interpreter.py | 82 +- .../bls12_381/bls12_381_pairing.py | 6 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../bpo2/vm/precompiled_contracts/mapping.py | 2 +- .../bpo2/vm/precompiled_contracts/modexp.py | 2 +- .../vm/precompiled_contracts/p256verify.py | 5 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/bpo2/vm/runtime.py | 2 +- src/ethereum/forks/bpo3/blocks.py | 4 +- src/ethereum/forks/bpo3/bloom.py | 2 +- src/ethereum/forks/bpo3/requests.py | 2 +- src/ethereum/forks/bpo3/state.py | 8 +- src/ethereum/forks/bpo3/trie.py | 2 +- src/ethereum/forks/bpo3/vm/__init__.py | 2 +- src/ethereum/forks/bpo3/vm/eoa_delegation.py | 2 + src/ethereum/forks/bpo3/vm/gas.py | 4 +- .../forks/bpo3/vm/instructions/arithmetic.py | 4 +- .../forks/bpo3/vm/instructions/block.py | 2 +- .../forks/bpo3/vm/instructions/environment.py | 2 +- .../forks/bpo3/vm/instructions/memory.py | 6 +- .../forks/bpo3/vm/instructions/stack.py | 8 +- .../forks/bpo3/vm/instructions/system.py | 4 +- src/ethereum/forks/bpo3/vm/interpreter.py | 82 +- .../bls12_381/bls12_381_pairing.py | 6 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../bpo3/vm/precompiled_contracts/mapping.py | 2 +- .../bpo3/vm/precompiled_contracts/modexp.py | 2 +- .../vm/precompiled_contracts/p256verify.py | 5 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/bpo3/vm/runtime.py | 2 +- src/ethereum/forks/bpo4/blocks.py | 4 +- src/ethereum/forks/bpo4/bloom.py | 2 +- src/ethereum/forks/bpo4/requests.py | 2 +- src/ethereum/forks/bpo4/state.py | 8 +- src/ethereum/forks/bpo4/trie.py | 2 +- src/ethereum/forks/bpo4/vm/__init__.py | 2 +- src/ethereum/forks/bpo4/vm/eoa_delegation.py | 2 + src/ethereum/forks/bpo4/vm/gas.py | 4 +- .../forks/bpo4/vm/instructions/arithmetic.py | 4 +- .../forks/bpo4/vm/instructions/block.py | 2 +- .../forks/bpo4/vm/instructions/environment.py | 2 +- .../forks/bpo4/vm/instructions/memory.py | 6 +- .../forks/bpo4/vm/instructions/stack.py | 8 +- .../forks/bpo4/vm/instructions/system.py | 4 +- src/ethereum/forks/bpo4/vm/interpreter.py | 82 +- .../bls12_381/bls12_381_pairing.py | 6 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../bpo4/vm/precompiled_contracts/mapping.py | 2 +- .../bpo4/vm/precompiled_contracts/modexp.py | 2 +- .../vm/precompiled_contracts/p256verify.py | 5 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/bpo4/vm/runtime.py | 2 +- src/ethereum/forks/bpo5/__init__.py | 2 +- src/ethereum/forks/bpo5/blocks.py | 4 +- src/ethereum/forks/bpo5/bloom.py | 2 +- src/ethereum/forks/bpo5/requests.py | 2 +- src/ethereum/forks/bpo5/state.py | 8 +- src/ethereum/forks/bpo5/trie.py | 2 +- src/ethereum/forks/bpo5/vm/__init__.py | 2 +- src/ethereum/forks/bpo5/vm/eoa_delegation.py | 2 + src/ethereum/forks/bpo5/vm/gas.py | 4 +- .../forks/bpo5/vm/instructions/arithmetic.py | 4 +- .../forks/bpo5/vm/instructions/block.py | 2 +- .../forks/bpo5/vm/instructions/environment.py | 2 +- .../forks/bpo5/vm/instructions/memory.py | 6 +- .../forks/bpo5/vm/instructions/stack.py | 8 +- .../forks/bpo5/vm/instructions/system.py | 4 +- src/ethereum/forks/bpo5/vm/interpreter.py | 82 +- .../bls12_381/bls12_381_pairing.py | 6 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../bpo5/vm/precompiled_contracts/mapping.py | 2 +- .../bpo5/vm/precompiled_contracts/modexp.py | 2 +- .../vm/precompiled_contracts/p256verify.py | 5 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/bpo5/vm/runtime.py | 2 +- src/ethereum/forks/byzantium/blocks.py | 4 +- src/ethereum/forks/byzantium/bloom.py | 2 +- src/ethereum/forks/byzantium/state.py | 10 +- src/ethereum/forks/byzantium/trie.py | 2 +- src/ethereum/forks/byzantium/vm/__init__.py | 2 +- src/ethereum/forks/byzantium/vm/gas.py | 2 +- .../byzantium/vm/instructions/arithmetic.py | 4 +- .../forks/byzantium/vm/instructions/block.py | 2 +- .../byzantium/vm/instructions/environment.py | 2 +- .../forks/byzantium/vm/instructions/memory.py | 4 +- .../forks/byzantium/vm/instructions/stack.py | 8 +- .../forks/byzantium/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../vm/precompiled_contracts/modexp.py | 2 +- src/ethereum/forks/byzantium/vm/runtime.py | 2 +- src/ethereum/forks/cancun/blocks.py | 4 +- src/ethereum/forks/cancun/bloom.py | 2 +- src/ethereum/forks/cancun/state.py | 8 +- src/ethereum/forks/cancun/trie.py | 2 +- src/ethereum/forks/cancun/vm/__init__.py | 2 +- src/ethereum/forks/cancun/vm/gas.py | 4 +- .../cancun/vm/instructions/arithmetic.py | 4 +- .../forks/cancun/vm/instructions/block.py | 2 +- .../cancun/vm/instructions/environment.py | 2 +- .../forks/cancun/vm/instructions/memory.py | 6 +- .../forks/cancun/vm/instructions/stack.py | 8 +- .../forks/cancun/vm/instructions/system.py | 4 +- src/ethereum/forks/cancun/vm/interpreter.py | 71 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../cancun/vm/precompiled_contracts/modexp.py | 2 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/cancun/vm/runtime.py | 2 +- src/ethereum/forks/constantinople/blocks.py | 4 +- src/ethereum/forks/constantinople/bloom.py | 2 +- src/ethereum/forks/constantinople/state.py | 10 +- src/ethereum/forks/constantinople/trie.py | 2 +- .../forks/constantinople/vm/__init__.py | 2 +- src/ethereum/forks/constantinople/vm/gas.py | 2 +- .../vm/instructions/arithmetic.py | 4 +- .../constantinople/vm/instructions/block.py | 2 +- .../vm/instructions/environment.py | 2 +- .../constantinople/vm/instructions/memory.py | 4 +- .../constantinople/vm/instructions/stack.py | 8 +- .../constantinople/vm/instructions/system.py | 4 +- .../forks/constantinople/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../vm/precompiled_contracts/modexp.py | 2 +- .../forks/constantinople/vm/runtime.py | 2 +- src/ethereum/forks/dao_fork/__init__.py | 2 +- src/ethereum/forks/dao_fork/blocks.py | 4 +- src/ethereum/forks/dao_fork/bloom.py | 2 +- src/ethereum/forks/dao_fork/state.py | 10 +- src/ethereum/forks/dao_fork/trie.py | 2 +- src/ethereum/forks/dao_fork/vm/__init__.py | 2 +- .../dao_fork/vm/instructions/arithmetic.py | 4 +- .../forks/dao_fork/vm/instructions/block.py | 2 +- .../forks/dao_fork/vm/instructions/memory.py | 4 +- .../forks/dao_fork/vm/instructions/stack.py | 8 +- src/ethereum/forks/dao_fork/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- src/ethereum/forks/dao_fork/vm/runtime.py | 2 +- src/ethereum/forks/frontier/blocks.py | 4 +- src/ethereum/forks/frontier/bloom.py | 2 +- src/ethereum/forks/frontier/state.py | 10 +- src/ethereum/forks/frontier/trie.py | 2 +- src/ethereum/forks/frontier/vm/__init__.py | 2 +- .../frontier/vm/instructions/arithmetic.py | 4 +- .../forks/frontier/vm/instructions/block.py | 2 +- .../forks/frontier/vm/instructions/memory.py | 4 +- .../forks/frontier/vm/instructions/stack.py | 8 +- src/ethereum/forks/frontier/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- src/ethereum/forks/frontier/vm/runtime.py | 2 +- src/ethereum/forks/gray_glacier/blocks.py | 4 +- src/ethereum/forks/gray_glacier/bloom.py | 2 +- src/ethereum/forks/gray_glacier/state.py | 10 +- src/ethereum/forks/gray_glacier/trie.py | 2 +- .../forks/gray_glacier/vm/__init__.py | 2 +- src/ethereum/forks/gray_glacier/vm/gas.py | 2 +- .../vm/instructions/arithmetic.py | 4 +- .../gray_glacier/vm/instructions/block.py | 2 +- .../vm/instructions/environment.py | 2 +- .../gray_glacier/vm/instructions/memory.py | 4 +- .../gray_glacier/vm/instructions/stack.py | 8 +- .../gray_glacier/vm/instructions/system.py | 4 +- .../forks/gray_glacier/vm/interpreter.py | 77 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../vm/precompiled_contracts/modexp.py | 2 +- src/ethereum/forks/gray_glacier/vm/runtime.py | 2 +- src/ethereum/forks/homestead/blocks.py | 4 +- src/ethereum/forks/homestead/bloom.py | 2 +- src/ethereum/forks/homestead/state.py | 10 +- src/ethereum/forks/homestead/trie.py | 2 +- src/ethereum/forks/homestead/vm/__init__.py | 2 +- .../homestead/vm/instructions/arithmetic.py | 4 +- .../forks/homestead/vm/instructions/block.py | 2 +- .../forks/homestead/vm/instructions/memory.py | 4 +- .../forks/homestead/vm/instructions/stack.py | 8 +- .../forks/homestead/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- src/ethereum/forks/homestead/vm/runtime.py | 2 +- src/ethereum/forks/istanbul/blocks.py | 4 +- src/ethereum/forks/istanbul/bloom.py | 2 +- src/ethereum/forks/istanbul/state.py | 10 +- src/ethereum/forks/istanbul/trie.py | 2 +- src/ethereum/forks/istanbul/vm/__init__.py | 2 +- src/ethereum/forks/istanbul/vm/gas.py | 2 +- .../istanbul/vm/instructions/arithmetic.py | 4 +- .../forks/istanbul/vm/instructions/block.py | 2 +- .../istanbul/vm/instructions/environment.py | 2 +- .../forks/istanbul/vm/instructions/memory.py | 4 +- .../forks/istanbul/vm/instructions/stack.py | 8 +- .../forks/istanbul/vm/instructions/system.py | 4 +- src/ethereum/forks/istanbul/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../vm/precompiled_contracts/modexp.py | 2 +- src/ethereum/forks/istanbul/vm/runtime.py | 2 +- src/ethereum/forks/london/blocks.py | 4 +- src/ethereum/forks/london/bloom.py | 2 +- src/ethereum/forks/london/state.py | 10 +- src/ethereum/forks/london/trie.py | 2 +- src/ethereum/forks/london/vm/__init__.py | 2 +- src/ethereum/forks/london/vm/gas.py | 2 +- .../london/vm/instructions/arithmetic.py | 4 +- .../forks/london/vm/instructions/block.py | 2 +- .../london/vm/instructions/environment.py | 2 +- .../forks/london/vm/instructions/memory.py | 4 +- .../forks/london/vm/instructions/stack.py | 8 +- .../forks/london/vm/instructions/system.py | 4 +- src/ethereum/forks/london/vm/interpreter.py | 74 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../london/vm/precompiled_contracts/modexp.py | 2 +- src/ethereum/forks/london/vm/runtime.py | 2 +- src/ethereum/forks/monad_eight/blocks.py | 4 +- src/ethereum/forks/monad_eight/bloom.py | 2 +- src/ethereum/forks/monad_eight/state.py | 8 +- src/ethereum/forks/monad_eight/trie.py | 2 +- src/ethereum/forks/monad_eight/vm/__init__.py | 2 +- .../forks/monad_eight/vm/eoa_delegation.py | 2 + src/ethereum/forks/monad_eight/vm/gas.py | 4 +- .../monad_eight/vm/instructions/arithmetic.py | 4 +- .../monad_eight/vm/instructions/block.py | 2 +- .../vm/instructions/environment.py | 2 +- .../monad_eight/vm/instructions/memory.py | 6 +- .../monad_eight/vm/instructions/stack.py | 8 +- .../monad_eight/vm/instructions/system.py | 4 +- .../forks/monad_eight/vm/interpreter.py | 123 +- .../bls12_381/bls12_381_pairing.py | 6 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../vm/precompiled_contracts/modexp.py | 2 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/monad_eight/vm/runtime.py | 2 +- src/ethereum/forks/monad_next/blocks.py | 4 +- src/ethereum/forks/monad_next/bloom.py | 2 +- src/ethereum/forks/monad_next/requests.py | 2 +- src/ethereum/forks/monad_next/state.py | 8 +- src/ethereum/forks/monad_next/trie.py | 2 +- src/ethereum/forks/monad_next/vm/__init__.py | 2 +- .../forks/monad_next/vm/eoa_delegation.py | 3 +- src/ethereum/forks/monad_next/vm/gas.py | 4 +- .../monad_next/vm/instructions/arithmetic.py | 4 +- .../forks/monad_next/vm/instructions/block.py | 2 +- .../monad_next/vm/instructions/environment.py | 2 +- .../monad_next/vm/instructions/memory.py | 6 +- .../forks/monad_next/vm/instructions/stack.py | 8 +- .../monad_next/vm/instructions/system.py | 4 +- .../forks/monad_next/vm/interpreter.py | 123 +- .../bls12_381/bls12_381_pairing.py | 6 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../vm/precompiled_contracts/modexp.py | 2 +- .../vm/precompiled_contracts/p256verify.py | 5 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/monad_next/vm/runtime.py | 2 +- src/ethereum/forks/muir_glacier/blocks.py | 4 +- src/ethereum/forks/muir_glacier/bloom.py | 2 +- src/ethereum/forks/muir_glacier/state.py | 10 +- src/ethereum/forks/muir_glacier/trie.py | 2 +- .../forks/muir_glacier/vm/__init__.py | 2 +- src/ethereum/forks/muir_glacier/vm/gas.py | 2 +- .../vm/instructions/arithmetic.py | 4 +- .../muir_glacier/vm/instructions/block.py | 2 +- .../vm/instructions/environment.py | 2 +- .../muir_glacier/vm/instructions/memory.py | 4 +- .../muir_glacier/vm/instructions/stack.py | 8 +- .../muir_glacier/vm/instructions/system.py | 4 +- .../forks/muir_glacier/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../vm/precompiled_contracts/modexp.py | 2 +- src/ethereum/forks/muir_glacier/vm/runtime.py | 2 +- src/ethereum/forks/osaka/blocks.py | 4 +- src/ethereum/forks/osaka/bloom.py | 2 +- src/ethereum/forks/osaka/requests.py | 2 +- src/ethereum/forks/osaka/state.py | 8 +- src/ethereum/forks/osaka/trie.py | 2 +- src/ethereum/forks/osaka/vm/__init__.py | 2 +- src/ethereum/forks/osaka/vm/eoa_delegation.py | 3 +- src/ethereum/forks/osaka/vm/gas.py | 4 +- .../forks/osaka/vm/instructions/arithmetic.py | 4 +- .../forks/osaka/vm/instructions/block.py | 2 +- .../osaka/vm/instructions/environment.py | 2 +- .../forks/osaka/vm/instructions/memory.py | 6 +- .../forks/osaka/vm/instructions/stack.py | 8 +- .../forks/osaka/vm/instructions/system.py | 4 +- src/ethereum/forks/osaka/vm/interpreter.py | 82 +- .../bls12_381/bls12_381_pairing.py | 6 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../osaka/vm/precompiled_contracts/mapping.py | 2 +- .../osaka/vm/precompiled_contracts/modexp.py | 2 +- .../vm/precompiled_contracts/p256verify.py | 5 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/osaka/vm/runtime.py | 2 +- src/ethereum/forks/paris/blocks.py | 4 +- src/ethereum/forks/paris/bloom.py | 2 +- src/ethereum/forks/paris/state.py | 8 +- src/ethereum/forks/paris/trie.py | 2 +- src/ethereum/forks/paris/vm/__init__.py | 2 +- src/ethereum/forks/paris/vm/gas.py | 2 +- .../forks/paris/vm/instructions/arithmetic.py | 4 +- .../forks/paris/vm/instructions/block.py | 2 +- .../paris/vm/instructions/environment.py | 2 +- .../forks/paris/vm/instructions/memory.py | 4 +- .../forks/paris/vm/instructions/stack.py | 8 +- .../forks/paris/vm/instructions/system.py | 4 +- src/ethereum/forks/paris/vm/interpreter.py | 71 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../paris/vm/precompiled_contracts/mapping.py | 2 +- .../paris/vm/precompiled_contracts/modexp.py | 2 +- src/ethereum/forks/paris/vm/runtime.py | 2 +- src/ethereum/forks/prague/blocks.py | 4 +- src/ethereum/forks/prague/bloom.py | 2 +- src/ethereum/forks/prague/state.py | 8 +- src/ethereum/forks/prague/trie.py | 2 +- src/ethereum/forks/prague/vm/__init__.py | 2 +- .../forks/prague/vm/eoa_delegation.py | 2 + src/ethereum/forks/prague/vm/gas.py | 4 +- .../prague/vm/instructions/arithmetic.py | 4 +- .../forks/prague/vm/instructions/block.py | 2 +- .../prague/vm/instructions/environment.py | 2 +- .../forks/prague/vm/instructions/memory.py | 6 +- .../forks/prague/vm/instructions/stack.py | 8 +- .../forks/prague/vm/instructions/system.py | 4 +- src/ethereum/forks/prague/vm/interpreter.py | 82 +- .../bls12_381/bls12_381_pairing.py | 6 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../prague/vm/precompiled_contracts/modexp.py | 2 +- .../precompiled_contracts/point_evaluation.py | 2 +- src/ethereum/forks/prague/vm/runtime.py | 2 +- src/ethereum/forks/shanghai/blocks.py | 4 +- src/ethereum/forks/shanghai/bloom.py | 2 +- src/ethereum/forks/shanghai/state.py | 8 +- src/ethereum/forks/shanghai/trie.py | 2 +- src/ethereum/forks/shanghai/vm/__init__.py | 2 +- src/ethereum/forks/shanghai/vm/gas.py | 2 +- .../shanghai/vm/instructions/arithmetic.py | 4 +- .../forks/shanghai/vm/instructions/block.py | 2 +- .../shanghai/vm/instructions/environment.py | 2 +- .../forks/shanghai/vm/instructions/memory.py | 4 +- .../forks/shanghai/vm/instructions/stack.py | 8 +- .../forks/shanghai/vm/instructions/system.py | 4 +- src/ethereum/forks/shanghai/vm/interpreter.py | 71 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../vm/precompiled_contracts/modexp.py | 2 +- src/ethereum/forks/shanghai/vm/runtime.py | 2 +- src/ethereum/forks/spurious_dragon/blocks.py | 4 +- src/ethereum/forks/spurious_dragon/bloom.py | 2 +- src/ethereum/forks/spurious_dragon/state.py | 10 +- src/ethereum/forks/spurious_dragon/trie.py | 2 +- .../forks/spurious_dragon/vm/__init__.py | 2 +- src/ethereum/forks/spurious_dragon/vm/gas.py | 2 +- .../vm/instructions/arithmetic.py | 4 +- .../spurious_dragon/vm/instructions/block.py | 2 +- .../spurious_dragon/vm/instructions/memory.py | 4 +- .../spurious_dragon/vm/instructions/stack.py | 8 +- .../forks/spurious_dragon/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../forks/spurious_dragon/vm/runtime.py | 2 +- .../forks/tangerine_whistle/blocks.py | 4 +- src/ethereum/forks/tangerine_whistle/bloom.py | 2 +- src/ethereum/forks/tangerine_whistle/state.py | 10 +- src/ethereum/forks/tangerine_whistle/trie.py | 2 +- .../forks/tangerine_whistle/vm/__init__.py | 2 +- .../forks/tangerine_whistle/vm/gas.py | 2 +- .../vm/instructions/arithmetic.py | 4 +- .../vm/instructions/block.py | 2 +- .../vm/instructions/memory.py | 4 +- .../vm/instructions/stack.py | 8 +- .../forks/tangerine_whistle/vm/interpreter.py | 75 +- .../vm/precompiled_contracts/ecrecover.py | 2 +- .../vm/precompiled_contracts/mapping.py | 2 +- .../forks/tangerine_whistle/vm/runtime.py | 2 +- src/ethereum/genesis.py | 3 - src/ethereum_spec_tools/docc.py | 2 +- src/ethereum_spec_tools/evm_tools/daemon.py | 2 +- .../evm_tools/loaders/fixture_loader.py | 11 +- .../evm_tools/loaders/fork_loader.py | 21 - .../evm_tools/t8n/__init__.py | 43 +- src/ethereum_spec_tools/evm_tools/t8n/env.py | 3 - .../evm_tools/t8n/t8n_types.py | 104 +- src/ethereum_spec_tools/lint/__init__.py | 2 +- src/ethereum_spec_tools/new_fork/builder.py | 2 +- src/ethereum_spec_tools/sync.py | 241 +- .../test_block_access_lists.py | 1721 ++---------- .../test_block_access_lists_cross_index.py | 318 --- .../test_block_access_lists_eip4788.py | 459 ---- .../test_block_access_lists_eip4895.py | 860 ------ .../test_block_access_lists_eip7002.py | 811 ------ .../test_block_access_lists_eip7251.py | 185 -- .../test_block_access_lists_eip7702.py | 737 +---- .../test_block_access_lists_invalid.py | 287 +- .../test_block_access_lists_opcodes.py | 2424 +---------------- .../test_cases.md | 104 +- tests/benchmark/compute/helpers.py | 301 +- .../compute/instruction/test_account_query.py | 428 +-- .../compute/instruction/test_arithmetic.py | 1 + .../compute/instruction/test_block_context.py | 1 - .../compute/instruction/test_control_flow.py | 2 +- .../compute/instruction/test_keccak.py | 26 +- .../benchmark/compute/instruction/test_log.py | 20 +- .../compute/instruction/test_storage.py | 426 ++- .../compute/instruction/test_system.py | 272 +- .../compute/instruction/test_tx_context.py | 47 +- .../compute/precompile/test_bls12_381.py | 8 - .../compute/precompile/test_ecrecover.py | 2 +- .../precompile/test_point_evaluation.py | 2 +- .../scenario/test_transaction_types.py | 47 +- .../scenario/test_unchunkified_bytecode.py | 165 -- tests/benchmark/stateful/bloatnet/stubs.json | 17 - .../benchmark/stateful/bloatnet/stubs_99.json | 299 -- .../test_extcodesize_bytecode_sizes.py | 34 +- .../stateful/bloatnet/test_multi_opcode.py | 698 +++-- .../stateful/bloatnet/test_single_opcode.py | 900 ++---- .../eip2929_gas_cost_increases/test_call.py | 7 +- .../eip2930_access_list/test_tx_type.py | 3 +- tests/byzantium/eip196_ec_add_mul/test_gas.py | 3 +- tests/byzantium/eip197_ec_pairing/test_gas.py | 3 +- tests/byzantium/eip214_staticcall/__init__.py | 7 - tests/byzantium/eip214_staticcall/spec.py | 17 - .../eip214_staticcall/test_staticcall.py | 672 ----- tests/cancun/create/__init__.py | 1 - .../test_create_oog_from_eoa_refunds.py | 423 --- .../test_tstorage_clear_after_tx.py | 16 +- tests/cancun/eip4844_blobs/spec.py | 181 +- .../test_excess_blob_gas_fork_transition.py | 34 +- .../test_point_evaluation_precompile.py | 16 +- tests/cancun/eip5656_mcopy/test_mcopy.py | 2 + .../eip5656_mcopy/test_mcopy_contexts.py | 8 +- .../test_mcopy_memory_expansion.py | 106 +- .../test_selfdestruct_revert.py | 79 +- .../create/test_create_deposit_oog.py | 92 +- tests/frontier/create/test_create_one_byte.py | 4 +- .../create/test_create_suicide_during_init.py | 3 +- .../create/test_create_suicide_store.py | 3 +- tests/frontier/opcodes/test_all_opcodes.py | 151 +- tests/frontier/opcodes/test_blockhash.py | 6 +- .../test_call_and_callcode_gas_calculation.py | 118 +- tests/frontier/opcodes/test_calldatacopy.py | 3 +- tests/frontier/opcodes/test_calldataload.py | 5 +- tests/frontier/opcodes/test_calldatasize.py | 5 +- tests/frontier/opcodes/test_dup.py | 8 +- tests/frontier/opcodes/test_exp.py | 13 +- tests/frontier/opcodes/test_log.py | 19 +- tests/frontier/opcodes/test_push.py | 5 +- tests/frontier/opcodes/test_swap.py | 5 +- tests/frontier/precompiles/test_ecrecover.py | 3 +- tests/frontier/precompiles/test_ripemd.py | 3 +- .../scenarios/scenarios/call_combinations.py | 8 +- .../scenarios/create_combinations.py | 13 +- tests/homestead/yul/__init__.py | 1 + tests/json_infra/__init__.py | 6 +- .../helpers/load_blockchain_tests.py | 5 +- tests/json_infra/test_ethash.py | 2 +- .../eip1559_fee_market_change/test_tx_type.py | 3 +- .../test_modexp_upper_bounds.py | 2 +- .../test_tx_gas_limit_transition_fork.py | 2 +- .../test_modexp_thresholds_transition.py | 2 +- .../test_blob_reserve_price_with_bpo.py | 1 - ...blob_reserve_price_with_bpo_transitions.py | 1 - .../test_max_block_rlp_size.py | 218 +- .../test_count_leading_zeros.py | 10 +- .../test_initcollision.py | 13 - .../test_revert_in_create.py | 168 -- .../security/test_selfdestruct_balance_bug.py | 2 + .../prague/eip6110_deposits/test_deposits.py | 1 - .../test_execution_gas.py | 4 +- tests/prague/eip7702_set_code_tx/test_gas.py | 27 +- .../eip7702_set_code_tx/test_set_code_txs.py | 143 +- .../test_set_code_txs_2.py | 48 + .../eip3860_initcode/test_initcode.py | 8 +- .../eip3860_initcode/test_with_eof.py | 104 + .../ContractCreationSpamFiller.json | 3 - .../undefinedOpcodeFirstByteFiller.yml | 1407 ++++++++++ ...evertInCreateInInitCreate2ParisFiller.json | 60 + .../create2collisionStorageParisFiller.json | 149 + .../CreateOOGFromEOARefundsFiller.yml | 483 ++++ .../Return50000_2Filler.json | 3 - .../static_Return50000_2Filler.json | 3 - ...ueToPrecompileFromCalledContractFiller.yml | 197 ++ ...ompileFromContractInitializationFiller.yml | 207 ++ ...ValueToPrecompileFromTransactionFiller.yml | 176 ++ ...ueToPrecompileFromCalledContractFiller.yml | 234 ++ ...ompileFromContractInitializationFiller.yml | 226 ++ ...ValueToPrecompileFromTransactionFiller.yml | 216 ++ ...StaticcallForPrecompilesIssue683Filler.yml | 47 + tests/tangerine_whistle/__init__.py | 4 - .../eip150_operation_gas_costs/__init__.py | 1 - .../eip150_operation_gas_costs/spec.py | 21 - .../test_eip150_selfdestruct.py | 1223 --------- tests/unscheduled/eip7692_eof_v1/__init__.py | 22 + .../eip7692_eof_v1/eip3540_eof_v1/__init__.py | 10 + .../eip7692_eof_v1/eip3540_eof_v1/opcodes.py | 250 ++ .../eip7692_eof_v1/eip3540_eof_v1/spec.py | 1 + .../test_all_opcodes_in_container.py | 484 ++++ .../eip3540_eof_v1/test_container_size.py | 126 + .../test_container_validation.py | 1461 ++++++++++ .../eip3540_eof_v1/test_eof_example.py | 173 ++ .../eip3540_eof_v1/test_execution.py | 83 + .../eip3540_eof_v1/test_execution_function.py | 461 ++++ .../eip3540_eof_v1/test_extcode.py | 93 + .../test_migrated_valid_invalid.py | 477 ++++ .../eip3540_eof_v1/test_opcodes_in_legacy.py | 263 ++ .../test_section_header_body_mismatch.py | 160 ++ .../eip3540_eof_v1/test_section_order.py | 386 +++ .../eip3540_eof_v1/test_section_size.py | 348 +++ .../eip4200_relative_jumps/__init__.py | 7 + .../eip4200_relative_jumps/helpers.py | 23 + .../eip4200_relative_jumps/test_rjump.py | 1212 +++++++++ .../eip4200_relative_jumps/test_rjumpi.py | 2024 ++++++++++++++ .../eip4200_relative_jumps/test_rjumpv.py | 1986 ++++++++++++++ .../eip4750_functions/__init__.py | 7 + .../eip4750_functions/helpers.py | 14 + .../eip4750_functions/test_callf_execution.py | 707 +++++ .../eip4750_functions/test_code_validation.py | 1407 ++++++++++ .../eip7692_eof_v1/eip5450_stack/__init__.py | 8 + .../eip5450_stack/test_code_validation.py | 732 +++++ .../eip5450_stack/test_execution.py | 82 + .../eip7692_eof_v1/eip6206_jumpf/__init__.py | 7 + .../eip7692_eof_v1/eip6206_jumpf/helpers.py | 14 + .../eip7692_eof_v1/eip6206_jumpf/spec.py | 1 + .../eip6206_jumpf/test_jumpf_execution.py | 772 ++++++ .../eip6206_jumpf/test_jumpf_stack.py | 424 +++ .../eip6206_jumpf/test_jumpf_target.py | 135 + .../eip6206_jumpf/test_jumpf_validation.py | 554 ++++ .../test_nonreturning_validation.py | 313 +++ .../eip663_dupn_swapn_exchange/__init__.py | 10 + .../eip663_dupn_swapn_exchange/test_dupn.py | 174 ++ .../test_exchange.py | 148 + .../eip663_dupn_swapn_exchange/test_swapn.py | 154 ++ .../eip7069_extcall/__init__.py | 11 + .../eip7692_eof_v1/eip7069_extcall/helpers.py | 34 + .../eip7692_eof_v1/eip7069_extcall/spec.py | 7 + .../test_address_space_extension.py | 258 ++ .../eip7069_extcall/test_calldata.py | 601 ++++ .../eip7069_extcall/test_calls.py | 1371 ++++++++++ .../eip7069_extcall/test_gas.py | 247 ++ .../test_returndatacopy_memory_expansion.py | 309 +++ .../eip7069_extcall/test_returndataload.py | 410 +++ .../eip7480_data_section/__init__.py | 9 + .../eip7480_data_section/spec.py | 1 + .../test_code_validation.py | 301 ++ .../eip7480_data_section/test_data_opcodes.py | 177 ++ .../test_datacopy_memory_expansion.py | 338 +++ .../eip7620_eof_create/__init__.py | 26 + .../eip7620_eof_create/helpers.py | 90 + .../eip7692_eof_v1/eip7620_eof_create/spec.py | 3 + .../eip7620_eof_create/test_eofcreate.py | 892 ++++++ .../test_eofcreate_failures.py | 927 +++++++ .../eip7620_eof_create/test_gas.py | 170 ++ .../test_legacy_eof_creates.py | 265 ++ .../eip7620_eof_create/test_memory.py | 145 + .../eip7620_eof_create/test_returncode.py | 319 +++ .../test_subcontainer_validation.py | 1009 +++++++ .../eip7873_tx_create/__init__.py | 3 + .../eip7692_eof_v1/eip7873_tx_create/spec.py | 3 + .../eip7873_tx_create/test_creation_tx.py | 135 + .../eip7873_tx_create/test_txcreate.py | 822 ++++++ .../test_txcreate_failures.py | 1089 ++++++++ .../test_txcreate_validates.py | 273 ++ .../unscheduled/eip7692_eof_v1/eof_tracker.md | 502 ++++ tests/unscheduled/eip7692_eof_v1/gas_test.py | 215 ++ tox.ini | 12 +- vulture_whitelist.py | 4 + whitelist.txt | 22 +- 935 files changed, 42796 insertions(+), 30496 deletions(-) delete mode 100644 .claude/commands/assess-eip.md delete mode 100644 .claude/commands/audit-config.md delete mode 100644 .claude/commands/edit-workflow.md delete mode 100644 .claude/commands/eip-checklist.md delete mode 100644 .claude/commands/fill-tests.md delete mode 100644 .claude/commands/grammar-check.md delete mode 100644 .claude/commands/implement-eip.md delete mode 100644 .claude/commands/lint.md delete mode 100644 .claude/commands/write-test.md delete mode 100644 .claude/settings.json delete mode 100644 CLAUDE.md delete mode 100644 docs/writing_tests/opcode_metadata.md delete mode 100644 packages/testing/src/execution_testing/base_types/typing_utils.py create mode 100644 packages/testing/src/execution_testing/cli/eofwrap.py create mode 100644 packages/testing/src/execution_testing/cli/tests/test_eofwrap.py delete mode 100644 packages/testing/src/execution_testing/cli/tests/test_hasher.py create mode 100644 packages/testing/src/execution_testing/exceptions/exceptions/eof.py create mode 100644 packages/testing/src/execution_testing/fixtures/eof.py delete mode 100644 packages/testing/src/execution_testing/fixtures/tests/test_collector.py create mode 100644 packages/testing/src/execution_testing/fixtures/tests/test_eof.py delete mode 100644 packages/testing/src/execution_testing/forks/tests/test_opcode_gas_costs.py create mode 100644 packages/testing/src/execution_testing/specs/eof.py create mode 100644 packages/testing/src/execution_testing/test_types/eof/__init__.py create mode 100644 packages/testing/src/execution_testing/test_types/eof/constants.py create mode 100644 packages/testing/src/execution_testing/test_types/eof/v1/__init__.py create mode 100644 packages/testing/src/execution_testing/test_types/eof/v1/constants.py delete mode 100644 packages/testing/src/execution_testing/test_types/tests/test_block_access_list_serialization.py delete mode 100644 packages/testing/src/execution_testing/test_types/tests/test_block_access_list_t8n.py rename packages/testing/src/execution_testing/test_types/tests/{test_block_access_list_expectation.py => test_block_access_lists.py} (71%) create mode 100644 packages/testing/src/execution_testing/test_types/tests/test_eof_v1.py delete mode 100644 packages/testing/src/execution_testing/tools/tests/test_iterating_bytecode.py delete mode 100644 packages/testing/src/execution_testing/vm/bases.py create mode 100644 packages/testing/src/execution_testing/vm/evm_types.py delete mode 100755 scripts/lint-dispatch.sh delete mode 100644 src/ethereum/forks/amsterdam/block_access_lists/__init__.py delete mode 100644 src/ethereum/forks/amsterdam/block_access_lists/builder.py delete mode 100644 src/ethereum/forks/amsterdam/block_access_lists/rlp_types.py delete mode 100644 src/ethereum/forks/amsterdam/block_access_lists/rlp_utils.py delete mode 100644 src/ethereum/forks/amsterdam/state_tracker.py delete mode 100644 tests/amsterdam/eip7928_block_level_access_lists/test_block_access_lists_cross_index.py delete mode 100644 tests/amsterdam/eip7928_block_level_access_lists/test_block_access_lists_eip4788.py delete mode 100644 tests/amsterdam/eip7928_block_level_access_lists/test_block_access_lists_eip4895.py delete mode 100644 tests/amsterdam/eip7928_block_level_access_lists/test_block_access_lists_eip7002.py delete mode 100644 tests/amsterdam/eip7928_block_level_access_lists/test_block_access_lists_eip7251.py delete mode 100644 tests/benchmark/compute/scenario/test_unchunkified_bytecode.py delete mode 100644 tests/benchmark/stateful/bloatnet/stubs.json delete mode 100644 tests/benchmark/stateful/bloatnet/stubs_99.json delete mode 100644 tests/byzantium/eip214_staticcall/__init__.py delete mode 100644 tests/byzantium/eip214_staticcall/spec.py delete mode 100644 tests/byzantium/eip214_staticcall/test_staticcall.py delete mode 100644 tests/cancun/create/__init__.py delete mode 100644 tests/cancun/create/test_create_oog_from_eoa_refunds.py create mode 100644 tests/homestead/yul/__init__.py delete mode 100644 tests/paris/eip7610_create_collision/test_revert_in_create.py create mode 100644 tests/shanghai/eip3860_initcode/test_with_eof.py create mode 100644 tests/static/state_tests/stBadOpcode/undefinedOpcodeFirstByteFiller.yml create mode 100644 tests/static/state_tests/stCreate2/RevertInCreateInInitCreate2ParisFiller.json create mode 100644 tests/static/state_tests/stCreate2/create2collisionStorageParisFiller.json create mode 100644 tests/static/state_tests/stCreateTest/CreateOOGFromEOARefundsFiller.yml create mode 100644 tests/static/state_tests/stStaticFlagEnabled/CallWithNOTZeroValueToPrecompileFromCalledContractFiller.yml create mode 100644 tests/static/state_tests/stStaticFlagEnabled/CallWithNOTZeroValueToPrecompileFromContractInitializationFiller.yml create mode 100644 tests/static/state_tests/stStaticFlagEnabled/CallWithNOTZeroValueToPrecompileFromTransactionFiller.yml create mode 100644 tests/static/state_tests/stStaticFlagEnabled/CallWithZeroValueToPrecompileFromCalledContractFiller.yml create mode 100644 tests/static/state_tests/stStaticFlagEnabled/CallWithZeroValueToPrecompileFromContractInitializationFiller.yml create mode 100644 tests/static/state_tests/stStaticFlagEnabled/CallWithZeroValueToPrecompileFromTransactionFiller.yml create mode 100644 tests/static/state_tests/stStaticFlagEnabled/StaticcallForPrecompilesIssue683Filler.yml delete mode 100644 tests/tangerine_whistle/__init__.py delete mode 100644 tests/tangerine_whistle/eip150_operation_gas_costs/__init__.py delete mode 100644 tests/tangerine_whistle/eip150_operation_gas_costs/spec.py delete mode 100644 tests/tangerine_whistle/eip150_operation_gas_costs/test_eip150_selfdestruct.py create mode 100644 tests/unscheduled/eip7692_eof_v1/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/opcodes.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/spec.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_all_opcodes_in_container.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_size.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_container_validation.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_eof_example.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_execution.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_execution_function.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_extcode.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_migrated_valid_invalid.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_opcodes_in_legacy.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_header_body_mismatch.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_order.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip3540_eof_v1/test_section_size.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/helpers.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpi.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip4200_relative_jumps/test_rjumpv.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip4750_functions/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip4750_functions/helpers.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_callf_execution.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip4750_functions/test_code_validation.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip5450_stack/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip5450_stack/test_code_validation.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip5450_stack/test_execution.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/helpers.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/spec.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_execution.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_stack.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_target.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_jumpf_validation.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip6206_jumpf/test_nonreturning_validation.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_dupn.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_exchange.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip663_dupn_swapn_exchange/test_swapn.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7069_extcall/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7069_extcall/helpers.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7069_extcall/spec.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_address_space_extension.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calldata.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_calls.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_gas.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_returndatacopy_memory_expansion.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7069_extcall/test_returndataload.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7480_data_section/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7480_data_section/spec.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_code_validation.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_data_opcodes.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7480_data_section/test_datacopy_memory_expansion.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/helpers.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/spec.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_eofcreate.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_eofcreate_failures.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_gas.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_legacy_eof_creates.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_memory.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_returncode.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7620_eof_create/test_subcontainer_validation.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/__init__.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/spec.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_creation_tx.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_txcreate.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_txcreate_failures.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eip7873_tx_create/test_txcreate_validates.py create mode 100644 tests/unscheduled/eip7692_eof_v1/eof_tracker.md create mode 100644 tests/unscheduled/eip7692_eof_v1/gas_test.py diff --git a/.claude/commands/assess-eip.md b/.claude/commands/assess-eip.md deleted file mode 100644 index 1144a9fb93..0000000000 --- a/.claude/commands/assess-eip.md +++ /dev/null @@ -1,45 +0,0 @@ -# Assess EIP - -Structured assessment of EIP implementation complexity. When invoked with an EIP number or description, perform the following analysis. - -## 1. Classify the Change Type(s) - -- **New opcode** — requires: `vm/instructions/`, gas cost, `op_implementation` registration -- **New precompile** — requires: `vm/precompiled_contracts/`, address constant, mapping, gas cost -- **New transaction type** — requires: `transactions.py`, `fork.py` validation, exception types -- **System contract** — requires: contract deployment in genesis, state handling -- **Block header/body field** — requires: `blocks.py`, RLP encoding changes -- **Gas cost change** — requires: `vm/gas.py` constant updates, possibly interpreter changes -- **Execution layer request** — requires: request handling in `requests.py` -- **Constraint change** — requires: validation logic in `fork.py` or `blocks.py` - -## 2. Estimate Scope - -- **Small** (1-2 files in spec, 1 test file): gas repricing, simple constraint -- **Medium** (3-5 files in spec, 2-3 test files): new opcode, new precompile -- **Large** (5-10 files in spec, 5+ test files): new tx type, new system contract -- **XL** (10+ files, multi-EIP umbrella): VM overhaul (e.g., EOF) - -## 3. Identify Required Test Categories - -Map the change types to the relevant `EIPChecklist` categories (from `execution_testing.checklists.eip_checklist`). List the checklist items that need to be covered. - -## 4. Identify Prior Art - -Find similar completed EIPs in the repo to use as implementation reference: - -- New opcode → check recent opcode additions in latest fork's `vm/instructions/` -- New precompile → `tests/osaka/eip7951_p256verify_precompiles/` -- New tx type → `tests/prague/eip7702_set_code_tx/` -- Gas changes → check `vm/gas.py` diffs between recent forks - -## 5. Output Structured Assessment - -Produce a summary with: - -- Change types identified -- Estimated scope (Small / Medium / Large / XL) -- Spec files to modify (with paths) -- Test files to create -- EIPChecklist categories to cover -- Reference implementations to follow diff --git a/.claude/commands/audit-config.md b/.claude/commands/audit-config.md deleted file mode 100644 index 932074ac9a..0000000000 --- a/.claude/commands/audit-config.md +++ /dev/null @@ -1,47 +0,0 @@ -# Audit Config - -Periodic verification skill to prevent CLAUDE.md and skills from going stale. Run this manually to check freshness (e.g., after a major refactor, before a release, or when onboarding). - -## Checks to Perform - -### 1. Verify File Paths - -Check that every file path or directory referenced in `CLAUDE.md` and `.claude/commands/*.md` still exists. Report any broken references. - -### 2. Verify CLI Commands - -Run `--help` on referenced commands and confirm mentioned flags still exist: - -- `uv run fill --help` -- `uv run ethereum-spec-new-fork --help` -- `uv run ethereum-spec-lint --help` -- `uv run checklist --help` - -### 3. Verify Code Patterns - -Spot-check code patterns mentioned in skills against actual code: - -- Does `op_implementation` dict exist in the latest fork's `vm/instructions/__init__.py`? -- Does `PRE_COMPILED_CONTRACTS` exist in the latest fork's `vm/precompiled_contracts/mapping.py`? -- Does the `Ops` enum exist in `vm/instructions/__init__.py`? -- Does `FORK_CRITERIA` or equivalent exist in the latest fork's `__init__.py`? - -### 4. Verify Fork List - -Check that the fork order and default branch mentioned in `CLAUDE.md` match reality by inspecting `src/ethereum/forks/` and git branch configuration. - -### 5. Verify Docs References - -Confirm that `docs/` paths referenced in skills still exist: - -- `docs/writing_tests/` -- `docs/writing_tests/opcode_metadata.md` -- `docs/writing_tests/checklist_templates/` -- `docs/filling_tests/` - -## Output - -Produce a summary with: - -- **Current**: references that are still valid -- **Stale**: references that need updating, with suggested fixes diff --git a/.claude/commands/edit-workflow.md b/.claude/commands/edit-workflow.md deleted file mode 100644 index f576b8572f..0000000000 --- a/.claude/commands/edit-workflow.md +++ /dev/null @@ -1,18 +0,0 @@ -# Edit Workflow - -GitHub Actions conventions. Run this skill before modifying workflow files in `.github/`. - -## Action Version Pinning (Required) - -All actions must be pinned to commit SHA with version comment: - -```yaml -uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -``` - -- Never use version tags alone (`@v4` is wrong) -- Local actions (`./.github/actions/*`) are exempt from pinning - -## Validation - -Run `uvx tox -e static` before committing — this runs `actionlint` to validate YAML syntax and structure. diff --git a/.claude/commands/eip-checklist.md b/.claude/commands/eip-checklist.md deleted file mode 100644 index 68170ca545..0000000000 --- a/.claude/commands/eip-checklist.md +++ /dev/null @@ -1,58 +0,0 @@ -# EIP Checklist - -Guide for using the EIP testing checklist system to track test coverage. Run this skill when working on EIP test coverage or checklists. - -## What It Is - -The `EIPChecklist` class (in `execution_testing.checklists.eip_checklist`) provides a hierarchical marker system for tagging tests with what aspect of an EIP they cover. Categories include: - -- `General`, `Opcode`, `Precompile`, `SystemContract`, `TransactionType` -- `BlockHeaderField`, `BlockBodyField`, `GasCostChanges`, `GasRefundsChanges` -- `ExecutionLayerRequest`, `BlobCountChanges` - -Each category has deep sub-items (e.g., `EIPChecklist.Opcode.Test.GasUsage.Normal`). - -## Usage in Tests - -```python -@EIPChecklist.TransactionType.Test.IntrinsicValidity.GasLimit.Exact() -def test_exact_intrinsic_gas(state_test: StateTestFiller): - ... - -# Multi-EIP coverage: -@EIPChecklist.TransactionType.Test.Signature.Invalid.V.Two(eip=[2930]) -def test_invalid_v(state_test: StateTestFiller): - ... -``` - -## Generating Checklists - -Run `uv run checklist` to generate coverage reports. Template at `docs/writing_tests/checklist_templates/eip_testing_checklist_template.md`. - -## Marking Items as Externally Covered or N/A - -Create `eip_checklist_external_coverage.txt` in the EIP test directory: - -``` -general/code_coverage/eels = Covered by EELS test suite -``` - -Create `eip_checklist_not_applicable.txt` for inapplicable items: - -``` -system_contract = EIP-7702 does not introduce a system contract -precompile/ = EIP-7702 does not introduce a precompile -``` - -(trailing `/` marks entire category as N/A) - -## Completed Examples - -Reference these for patterns: - -- `tests/prague/eip7702_set_code_tx/` — comprehensive checklist for a transaction type EIP -- `tests/osaka/eip7951_p256verify_precompiles/` — precompile checklist example - -## References - -See `docs/writing_tests/checklist_templates/` for templates and detailed documentation. diff --git a/.claude/commands/fill-tests.md b/.claude/commands/fill-tests.md deleted file mode 100644 index e1f3db7967..0000000000 --- a/.claude/commands/fill-tests.md +++ /dev/null @@ -1,60 +0,0 @@ -# Fill Tests - -CLI reference for the `fill` command. Run this skill before filling test fixtures. The `fill` command is pytest-based — all standard pytest flags work. - -## Basic Usage - -``` -uv run fill tests/ # Fill all tests -uv run fill tests/cancun/ --fork Cancun # Specific fork -uv run fill tests/path/to/test.py -k "test_name" # Specific test -uv run fill tests/osaka/ --until Osaka # Up to fork (inclusive) -uv run fill --collect-only tests/ # Dry run: list tests without executing -``` - -## Key Flags - -- `--fork FORK` / `--until FORK` — target specific fork or range -- `--output DIR` + `--clean` — output directory; `--clean` required when re-filling -- `-k "pattern"` — filter tests by name pattern -- `-m "marker"` — filter by pytest marker (e.g. `-m state_test`, `-m blockchain_test`) -- `-n auto --maxprocesses N` — parallel execution (use `--dist=loadgroup`) -- `--evm-bin PATH` — specify t8n tool (default: `ethereum-spec-evm-resolver`) -- `--verify-fixtures` — verify generated fixtures against geth blocktest -- `--generate-all-formats` — generate all fixture formats (2-phase) - -## Debugging - -- `--evm-dump-dir DIR` — dump t8n input/output for debugging -- `--traces` — collect execution traces -- `--pdb` — drop into debugger on failure -- `-vv` — verbose output; `-x` — stop on first failure; `-s` — print stdout - -## Watch Mode - -- `--watch` — re-run on file changes (clears screen between runs) -- `--watcherfall` — same but keeps output history - -## Benchmark Tests - -- Must use `-m benchmark` — benchmark tests are excluded by default -- Require evmone as backend: `--evm-bin=evmone-t8n` -- Default benchmark fork is Prague (set in `tests/benchmark/conftest.py`) -- Gas values mode: `--gas-benchmark-values 1,10,100` (values in millions of gas) -- Fixed opcode count mode: `--fixed-opcode-count 1,10,100` (values in thousands) -- These two modes are **mutually exclusive** -- Use `--generate-pre-alloc-groups` for stateful benchmarks - -## Static Tests (Legacy) - -- `uv run fill --fill-static-tests tests/static/` — fills YAML/JSON fillers from `ethereum/tests` -- Legacy only — do NOT add new static fillers. Use Python tests instead -- Useful to check if spec changes broke how legacy tests fill - -## Fixture Formats - -One test function auto-generates multiple formats: `StateFixture`, `BlockchainFixture`, `BlockchainEngineFixture`. Use `--generate-all-formats` for additional formats via 2-phase execution. - -## References - -See `docs/filling_tests/` for detailed documentation. diff --git a/.claude/commands/grammar-check.md b/.claude/commands/grammar-check.md deleted file mode 100644 index 5f55a6eaa5..0000000000 --- a/.claude/commands/grammar-check.md +++ /dev/null @@ -1,59 +0,0 @@ -# Grammar Check - -Audit grammar in documentation and code comments. - -## Files to Check - -Check `$ARGUMENTS` (default: `src/`). Use Glob to find: - -- `**/*.py` - check docstrings and `#` comments only -- `**/*.md` - check prose content, skip code blocks - -## What to Detect - -1. Missing prepositions ("refer the" → "refer to the", "comply the" → "comply with the") -2. Subject-verb disagreement -3. Missing articles where required -4. Incorrect word order -5. Sentence fragments in documentation -6. Double words ("the the", "is is") - -## What to Ignore - -- Code syntax and variable names -- Technical terms, EIP numbers, hex values -- Intentional shorthand in inline code comments -- Content inside code blocks (``` or indented blocks in markdown) -- URLs and email addresses - -## Output Format - -For each issue, output a clickable link with line number: - -``` -path/to/file.md:42 - "original problematic text" - Suggestion: "corrected text" - Reason: brief explanation -``` - -For issues spanning multiple lines, use range format: - -``` -path/to/file.py:15-17 - "multi-line docstring issue" - Suggestion: "corrected text" - Reason: brief explanation -``` - -## Process - -1. Find all matching files -2. For `.md` files: check full prose content, skip code blocks -3. For `.py` files: extract and check only docstrings (triple-quoted) and `#` comments -4. Group findings by file -5. End with summary: "Found N grammar issues in M files." or "No grammar issues found." - -## Important - -- Report findings only, do not auto-fix -- Be conservative: only flag clear errors, not style preferences -- When uncertain, skip rather than false-positive diff --git a/.claude/commands/implement-eip.md b/.claude/commands/implement-eip.md deleted file mode 100644 index c06c6e22d1..0000000000 --- a/.claude/commands/implement-eip.md +++ /dev/null @@ -1,62 +0,0 @@ -# Implement EIP - -Patterns for implementing spec changes in `src/ethereum/forks/`. Run this skill before implementing an EIP or modifying fork code. - -## Fork Directory Layout - -Each fork lives at `src/ethereum/forks//`. Explore the latest fork directory for current structure. Key files: - -- `__init__.py` — FORK_CRITERIA, fork metadata -- `fork.py` — state transition functions -- `blocks.py` — block structure and validation -- `transactions.py` — transaction types and processing -- `state.py` — state trie operations -- `vm/instructions/__init__.py` — Ops enum + `op_implementation` dict -- `vm/gas.py` — gas constants and calculations -- `vm/precompiled_contracts/__init__.py` — precompile address constants -- `vm/precompiled_contracts/mapping.py` — `PRE_COMPILED_CONTRACTS` registry - -## Import Isolation (enforced by `ethereum-spec-lint`) - -- **Within same fork**: relative imports (`from . import vm`, `from .state import ...`) -- **Previous fork only**: absolute imports (`from ethereum.cancun import ...`) -- **Shared modules**: always OK (`ethereum.crypto`, `ethereum.utils`, `ethereum.exceptions`) -- **Future forks**: NEVER allowed -- **Ancient forks (2+ back)**: NEVER allowed -- Run `ethereum-spec-lint` to verify before committing - -## Adding a New Opcode - -1. Add to `Ops` enum in `vm/instructions/__init__.py` with hex value -2. Implement function in appropriate `vm/instructions/.py` — follows pattern: STACK → GAS (`charge_gas`) → OPERATION → PROGRAM COUNTER -3. Register in `op_implementation` dict in `vm/instructions/__init__.py` -4. Add gas constant in `vm/gas.py` if needed - -## Adding a New Precompile - -1. Define address constant in `vm/precompiled_contracts/__init__.py` using `hex_to_address("0x...")` -2. Create implementation file `vm/precompiled_contracts/.py` -3. Register in `PRE_COMPILED_CONTRACTS` dict in `vm/precompiled_contracts/mapping.py` -4. Add gas constant in `vm/gas.py` - -## Adding a New Transaction Type - -1. Define `@slotted_freezable @dataclass` class in `transactions.py` -2. Add to `Transaction` union type at bottom of file -3. Handle in `fork.py` validation/processing logic -4. Add exception type in `exceptions.py` if needed - -## Creating a New Fork - -```bash -uv run ethereum-spec-new-fork --new-fork= --template-fork=