ethereum / ethereum/execution-specs

Meta: Archive `ethereum/tests` and `ethereum/legacytests`

Open
#2,556 13 comments 0 reactions 0 assignees View on GitHub
stale
Dominant language
Python
Stars
1.2k
Forks
505
Avg merge
2d 14h
Merged PRs (30d)
116

Description

ethereum/tests -> EELS

🔴 AI Helped Issue Dump. Needs fully checked over. Sharing for collab.

**Goal:** Archive `ethereum/tests` and `ethereum/legacytests` by porting all remaining
test fillers into EELS, making EELS the single source of truth. After migration, EELS
must be able to fill all tests for all forks and publish releases from this repo alone.

## Action Plan

### Phase 0: Triage the legacy Constantinople corpus

Before porting anything, decide what to do with the ~10,000 Constantinople-era files.

- [x] **0.1** Diff Constantinople `GeneralStateTests/` (9,549 files) against the Cancun
`GeneralStateTestsFiller/` (~1,100 files) to determine overlap. The Cancun version
consolidated many per-vector files into single parametrized fillers — most
Constantinople files are likely redundant.
- [x] **0.2** Diff Constantinople `VMTestsFiller/` (613 files) against EELS existing
`tests/static/state_tests/VMTests/` (6 files). Determine which VM tests add unique
coverage vs. what's already tested through state tests.
- [x] **0.3** Decide: port only net-new coverage from Constantinople, or bulk-import
everything and let the filler deduplicate at fill time.
- [x] **0.4** For auto-generated test suites (`stBadOpcode/*DiffPlaces*`,
`stZeroKnowledge*`, `stSelfBalance/diffPlaces`), decide whether to port the
generators from `ethereum/tests` `src/Templates/` rather than the 375+ output files.

### Phase 1: Port missing GeneralStateTestsFiller files (~507 files)

Static state filler infrastructure already exists (`specs/static_state/`,
`filler/static_filler` plugin, `--fill-static-tests`). This phase is mechanical copy
work.

- [ ] **1.1** Copy the ~507 missing filler files from `ethereum/tests` pinned commit
`7dc757ec` `src/GeneralStateTestsFiller/` into `tests/static/state_tests/`.
See [Appendix A](#appendix-a-missing-generalstatetestsfiller-files) for the full list.
- [ ] **1.2** Add the missing `stExpectSection/` directory.
- [ ] **1.3** Verify all copied files parse and fill correctly:
`fill --fill-static-tests -k "stExtCodeHash or stZeroKnowledge" --until Cancun`
- [ ] **1.4** Update `amsterdam_skip_list.txt` if any new files fail under Amsterdam
due to EIP-8037 gas model changes.
- [ ] **1.5** Remove the empty `tests/ported_static/` stub directories (they contain
only `__pycache__` — no actual test files).

### Phase 2: Add BlockchainTestsFiller support (~400 files)

EELS has `BlockchainTest` spec and `BlockchainFixture` format but no static blockchain
filler infrastructure.

- [ ] **2.1** Create `tests/static/blockchain_tests/` directory structure mirroring
`src/BlockchainTestsFiller/` layout (InvalidBlocks/, ValidBlocks/).
- [ ] **2.2** Implement `specs/static_blockchain/` module — analogous to
`specs/static_state/` but producing `BlockchainFixture` output.
Key differences from state fillers:
- Multi-block test sequences
- Invalid block rejection tests
- Uncle/ommer validation
- Withdrawal tests
- [ ] **2.3** Update the `filler/static_filler` pytest plugin to discover and dispatch
blockchain test fillers (currently only handles state fillers).
- [ ] **2.4** Copy the ~361 filler files from `ethereum/tests` develop
`src/BlockchainTestsFiller/`. See [Appendix B](#appendix-b-blockchaintestsfiller-files).
- [ ] **2.5** Copy the ~56 additional legacy-only files from `ethereum/legacytests`
`Cancun/BlockchainTestsFiller/` not present on develop.
- [ ] **2.6** Port the 21 TransitionTests fillers from `ethereum/legacytests`
`Cancun/BlockchainTestsFiller/TransitionTests/`.
See [Appendix B](#appendix-b-blockchaintestsfiller-files).
- [ ] **2.7** Verify: `fill --fill-static-tests -k "blockchain" --until Cancun`

### Phase 3: Add TransactionTestsFiller support (~210 files)

EELS has `TransactionTest` spec and `TransactionFixture` format but no static
transaction filler infrastructure.

- [ ] **3.1** Create `tests/static/transaction_tests/` directory structure mirroring
`src/TransactionTestsFiller/` layout (tt*/ subdirectories).
- [ ] **3.2** Implement `specs/static_transaction/` module — analogous to
`specs/static_state/` but producing `TransactionFixture` output.
Key differences from state fillers:
- Tests transaction validity/invalidity (not state transitions)
- RLP encoding edge cases
- Signature validation
- No post-state, just accept/reject
- [ ] **3.3** Update the `filler/static_filler` plugin to discover transaction fillers.
- [ ] **3.4** Copy the 210 filler files from `ethereum/tests` develop
`src/TransactionTestsFiller/`.
See [Appendix C](#appendix-c-transactiontestsfiller-files).
- [ ] **3.5** Verify: `fill --fill-static-tests -k "transaction" --until Cancun`

### Phase 4: Add InvalidRLP support (~20 files)

- [ ] **4.1** Create `tests/static/invalid_rlp/` directory.
- [ ] **4.2** Determine if InvalidRLP fillers can reuse the blockchain filler
infrastructure (they produce invalid blockchain test fixtures) or need a dedicated
handler.
- [ ] **4.3** Copy the 20 files from `ethereum/tests` develop `src/InvalidRLP/`.
See [Appendix D](#appendix-d-invalidrlp-files).
- [ ] **4.4** Verify filling works.

### Phase 5: Port legacy-only tests (conditional on Phase 0 triage)

- [ ] **5.1** If Phase 0 determines Constantinople `GeneralStateTests/` adds unique
coverage: port the net-new files into `tests/static/state_tests/`.
- [ ] **5.2** If Phase 0 determines Constantinople `VMTestsFiller/` adds unique
coverage: create `tests/static/vm_tests/` and implement a VM test filler, or
fold into state test infrastructure.
- [ ] **5.3** Port any additional blockchain test fillers from
`Constantinople/BlockchainTestsFiller/` that aren't already covered by Phase 2.

### Phase 6: Update fill pipeline for full fork coverage

- [ ] **6.1** Ensure `--fill-static-tests` flag covers all new test types (blockchain,
transaction, InvalidRLP) — not just state tests.
- [ ] **6.2** Verify filling works across the full fork range: Frontier through
Amsterdam (and beyond). Each filler specifies its applicable fork range, but the
infrastructure must support dispatching to any fork.
- [ ] **6.3** Update `tox.ini` `py3` environment to include new test types in the
default fill command.
- [ ] **6.4** Run a full fill and compare output against the last `ethereum/tests`
release fixtures to verify parity.

### Phase 7: Update release pipeline

- [ ] **7.1** Update `.github/configs/feature.yaml` release configs:
- `stable` fill-params: add blockchain + transaction fixture generation
- `develop` fill-params: same
- Ensure `--fill-static-tests` now covers all fixture types
- [ ] **7.2** Update `.github/workflows/release_fixture_full.yaml` if needed to handle
new artifact types (blockchain fixtures, transaction fixtures).
- [ ] **7.3** Publish a test release and verify fixture output matches what
`ethereum/tests` previously produced.
- [ ] **7.4** Update `ethereum/execution-spec-tests` release notes / README to indicate
EELS is now the canonical source.

### Phase 8: Deprecate upstream repos

- [ ] **8.1** Confirm fixture parity: EELS release fixtures are a superset of the last
`ethereum/tests` v13 release.
- [ ] **8.2** Archive `ethereum/tests` (mark as deprecated, point README to EELS).
- [ ] **8.3** Archive `ethereum/legacytests` (same).
- [ ] **8.4** Remove the pinned commit reference in
`tests/static/state_tests/README.md` — EELS is now the source of truth.

---

## Appendix A: Missing GeneralStateTestsFiller files

**Source:** `ethereum/tests` pinned commit `7dc757ec` `src/GeneralStateTestsFiller/`

These filler files exist at the pinned commit but are missing from
`tests/static/state_tests/`.

### stExpectSection/ (entire directory missing)

All files in this directory.

### stBadOpcode/ (116 missing of 120)

- All `*DiffPlacesFiller` variants (~115 files: opc0C-opc0F, opc1E-opc1F, opc21-opc2F,
opc49-opc4F, opc5C-opc5F, opcA5-opcAF, opcB0-opcBF, opcC0-opcCF, opcD0-opcDF,
opcE0-opcEF, opcF6-opcF9, opcFB-opcFC, opcFE, invalidDiffPlaces)
- undefinedOpcodeFirstByteFiller

### stZeroKnowledge2/ (130 missing of 130 — entirely empty)

All `ecadd_*` and `ecmul_*` files.

### stZeroKnowledge/ (129 missing of 134)

All `ecmul_1-2_*`, `ecmul_1-3_*`, `ecmul_7827-6598_*`, and `ecpairing_*` files.

### stExtCodeHash/ (34 missing of 36)

- callToNonExistentFiller
- callToSuicideThenExtcodehashFiller
- createEmptyThenExtcodehashFiller
- dynamicAccountOverwriteEmpty_ParisFiller
- extCodeCopyBoundsFiller
- extCodeHashAccountWithoutCodeFiller
- extCodeHashCALLCODEFiller
- extCodeHashCALLFiller
- extCodeHashChangedAccountFiller
- extCodeHashCreatedAndDeletedAccountCallFiller
- extCodeHashCreatedAndDeletedAccountFiller
- extCodeHashCreatedAndDeletedAccountStaticCallFiller
- extCodeHashDELEGATECALLFiller
- extCodeHashDeletedAccount1CancunFiller
- extCodeHashDeletedAccount1Filler
- extCodeHashDeletedAccount2CancunFiller
- extCodeHashDeletedAccount2Filler
- extCodeHashDeletedAccount3Filler
- extCodeHashDeletedAccount4Filler
- extCodeHashDeletedAccountCancunFiller
- extCodeHashDeletedAccountFiller
- extCodeHashDynamicArgumentFiller
- extcodehashEmpty_ParisFiller
- extCodeHashInInitCodeFiller
- extCodeHashMaxCodeSizeFiller
- extCodeHashNewAccountFiller
- extCodeHashNonExistingAccountFiller
- extCodeHashPrecompilesFiller
- extCodeHashSelfFiller
- extCodeHashSelfInInitFiller
- extCodeHashSTATICCALLFiller
- extCodeHashSubcallOOGFiller
- extCodeHashSubcallSuicideCancunFiller
- extCodeHashSubcallSuicideFiller

### stPreCompiledContracts2/ (20 missing of 100)

- CALLCODEIdentitiy_0Filler
- CALLCODEIdentitiy_1Filler
- CALLCODEIdentity_1_nonzeroValueFiller
- CALLCODEIdentity_2Filler
- CALLCODEIdentity_3Filler
- CALLCODEIdentity_4_gas17Filler
- CALLCODEIdentity_4_gas18Filler
- CALLCODEIdentity_4Filler
- CALLCODEIdentity_5Filler
- CallIdentitiy_0Filler
- CallIdentitiy_1Filler
- CallIdentity_1_nonzeroValueFiller
- CallIdentity_2Filler
- CallIdentity_3Filler
- CallIdentity_4_gas17Filler
- CallIdentity_4_gas18Filler
- CallIdentity_4Filler
- CallIdentity_5Filler
- CallIdentity_6_inputShorterThanOutputFiller
- CallRipemd160_0Filler

### Cancun/stEIP4844_blobtransactions/ (8 missing of 13)

- blobhashListBounds3Filler
- blobhashListBounds4Filler
- blobhashListBounds5Filler
- blobhashListBounds6Filler
- blobhashListBounds7Filler
- blobhashListBounds8Filler
- blobhashListBounds9Filler
- blobhashListBounds10Filler

### stStaticFlagEnabled/ (7 missing of 13)

- CallWithNOTZeroValueToPrecompileFromCalledContractFiller
- CallWithNOTZeroValueToPrecompileFromContractInitializationFiller
- CallWithNOTZeroValueToPrecompileFromTransactionFiller
- CallWithZeroValueToPrecompileFromCalledContractFiller
- CallWithZeroValueToPrecompileFromContractInitializationFiller
- CallWithZeroValueToPrecompileFromTransactionFiller
- StaticcallForPrecompilesIssue683Filler

### stCreateTest/ (7 missing of 47)

- CREATE_AcreateB_BSuicide_BStoreFiller
- CREATE_ContractSuicideDuringInit_ThenStoreThenReturnFiller
- CREATE_ContractSuicideDuringInit_WithValueFiller
- CREATE_ContractSuicideDuringInit_WithValueToItselfFiller
- CREATE_ContractSuicideDuringInitFiller
- CREATE_FirstByte_loopFiller
- CreateOOGFromEOARefundsFiller

### Cancun/stEIP1153_transientStorage/ (4 missing of 8)

- 15_tstoreCannotBeDosdFiller
- 17_tstoreGasFiller
- 19_oogUndoesTransientStoreFiller
- 21_tstoreCannotBeDosdOOOFiller

### stEIP1559/ (3 missing of 14)

- intrinsicCancunFiller
- intrinsicGenCancun
- typeTwoBerlinFiller

### stCreate2/ (2 missing of 51)

- create2collisionStorageParisFiller
- RevertInCreateInInitCreate2ParisFiller

### stPreCompiledContracts/ (2 missing of 6)

- identity_to_biggerFiller
- identity_to_smallerFiller

### stSStoreTest/ (2 missing of 28)

- InitCollisionNonZeroNonceFiller
- InitCollisionParisFiller

### stTimeConsuming/ (2 missing of 14)

- CALLBlake2f_MaxRoundsFiller
- static_Call50000_sha256Filler

### stExample/ (2 missing of 12)

- accessListExampleFiller
- solidityExampleFiller

### stRevertTest/ (1 missing of 46)

- RevertRemoteSubCallStorageOOGFiller

### stSelfBalance/ (1 missing of 6)

- diffPlacesFiller

### stShift/ (1 missing of 43)

- shiftCombinationsFiller

### stSolidityTest/ (1 missing of 18)

- SelfDestructFiller

### VMTests/ (1 missing of 6)

- vmPerformance

---

## Appendix B: BlockchainTestsFiller files

**Source:** `ethereum/tests` develop `src/BlockchainTestsFiller/`
**Also in:** `ethereum/legacytests` `src/LegacyTests/Cancun/BlockchainTestsFiller/`
(superset, includes TransitionTests)

### InvalidBlocks/

#### bc4895-withdrawals/ (15 files)

- accountInteractionsFiller.json
- amountIs0Filler.json
- amountIs0TouchAccountAndTransactionFiller.json
- amountIs0TouchAccountFiller.json
- differentValidatorToTheSameAddressFiller.json
- incorrectWithdrawalsRootFiller.json
- shanghaiWithoutWithdrawalsRLPFiller.json
- staticcallFiller.json
- twoIdenticalIndexDifferentValidatorFiller.json
- twoIdenticalIndexFiller.json
- warmupFiller.yml
- withdrawalsAddressBoundsFiller.json
- withdrawalsAmountBoundsFiller.json
- withdrawalsIndexBoundsFiller.json
- withdrawalsValidatorIndexBoundsFiller.json

#### bcBlockGasLimitTest/ (2 files)

- GasUsedHigherThanBlockGasLimitButNotWithRefundsSuicideFirstFiller.json
- GasUsedHigherThanBlockGasLimitButNotWithRefundsSuicideLastFiller.json

#### bcEIP1559/ (9 files on develop, 10 in legacytests)

- badBlocksFiller.yml
- badUnclesFiller.yml
- baseFeeFiller.yml
- checkGasLimitFiller.yml
- feeCapFiller.yml
- gasLimit20mFiller.yml
- gasLimit40mFiller.yml
- transFailFiller.yml
- valCausesOOFFiller.yml
- intrinsicOrFailFiller.yml *(legacytests only)*

#### bcEIP3675/ (1 file)

- timestampPerBlockFiller.yml

#### bcExpectSection/ (15 files, develop only)

- filling_missingExpectedAccountFiller.json
- filling_unexpectedExceptionFiller.json
- filling_wrongAccountFiller.json
- filling_wrongStorage2Filler.json
- filling_wrongStorageFiller.json
- lastblockhashExceptionCopier.json
- result_CancunEnvConvertionFiller.json
- result_MergeEnvConvertionFiller.json
- result_ShanghaiEnvConvertionFiller.json
- result_eip1559EnvConvertionFiller.json
- result_legacyEnvConvertionFiller.json
- unexpectedAccountCopier.json
- wrongAccountCopier.json
- wrongRLPGenesisCopier.json
- wrongStorageCopier.json

#### bcInvalidHeaderTest/ (22 files)

- DifferentExtraData1025Filler.json
- DifficultyIsZeroFiller.json
- ExtraData1024Filler.json
- ExtraData33Filler.json
- GasLimitHigherThan2p63m1Filler.json
- GasLimitIsZeroFiller.json
- badTimestampFiller.yml
- log1_wrongBlockNumberFiller.json
- log1_wrongBloomFiller.json
- timeDiff0Filler.json
- wrongCoinbaseFiller.json
- wrongDifficultyFiller.json
- wrongGasLimitFiller.json
- wrongGasUsedFiller.json
- wrongNumberFiller.json
- wrongParentHash2Filler.json
- wrongParentHashFiller.json
- wrongReceiptTrieFiller.json
- wrongStateRootFiller.json
- wrongTimestampFiller.json
- wrongTransactionsTrieFiller.json
- wrongUncleHashFiller.json

#### bcMultiChainTest/ (1 on develop, 2 in legacytests)

- UncleFromSideChainFiller.json
- lotsOfLeafsFiller.json *(legacytests only)*

#### bcStateTests/ (24 on develop, 30 in legacytests)

- CreateTransactionRevertedFiller.json
- EmptyTransactionFiller.json
- NotEnoughCashContractCreationFiller.json
- RefundOverflow2Filler.json
- RefundOverflowFiller.json
- TransactionFromCoinbaseNotEnoughFoundsFiller.json
- TransactionNonceCheck2Filler.json
- TransactionNonceCheckFiller.json
- UserTransactionGasLimitIsTooLowWhenZeroCostFiller.json
- ZeroValue_TransactionCALL_OOGRevertFiller.json
- ZeroValue_TransactionCALL_ToEmpty_OOGRevert_ParisFiller.json
- ZeroValue_TransactionCALL_ToNonZeroBalance_OOGRevertFiller.json
- ZeroValue_TransactionCALL_ToOneStorageKey_OOGRevertFiller.json
- ZeroValue_TransactionCALLwithData_ToEmpty_OOGRevert_Istanbul_ParisFiller.json
- ZeroValue_TransactionCALLwithData_ToOneStorageKey_OOGRevert_Istanbul_ParisFiller.json
- callcodeOutput2Filler.json
- createNameRegistratorPerTxsNotEnoughGasAfterFiller.json
- createNameRegistratorPerTxsNotEnoughGasAtFiller.json
- createNameRegistratorPerTxsNotEnoughGasBeforeFiller.json
- createRevertFiller.json
- dataTxFiller.json
- gasLimitTooHighFiller.json
- transactionFromSelfDestructedContractFiller.yml
- txCost-sec73Filler.json
- TransactionToItselfNotEnoughFoundsFiller.json *(legacytests only)*
- ZeroValue_TransactionCALL_ToEmpty_OOGRevertFiller.json *(legacytests only)*
- ZeroValue_TransactionCALL_ToOneStorageKey_OOGRevert_ParisFiller.json *(legacytests only)*
- ZeroValue_TransactionCALLwithData_ToEmpty_OOGRevert_IstanbulFiller.json *(legacytests only)*
- ZeroValue_TransactionCALLwithData_ToOneStorageKey_OOGRevert_IstanbulFiller.json *(legacytests only)*
- transactionFromNotExistingAccountFiller.json *(legacytests only)*

#### bcUncleHeaderValidity/ (25 files)

- correctFiller.json
- diffTooHighFiller.json
- diffTooLow2Filler.json
- diffTooLowFiller.json
- gasLimitLTGasUsageUncleFiller.json
- gasLimitTooHighExactBoundFiller.json
- gasLimitTooHighFiller.json
- gasLimitTooLowExactBound2Filler.json
- gasLimitTooLowExactBoundFiller.json
- gasLimitTooLowExactBoundLondonFiller.json
- gasLimitTooLowFiller.json
- incorrectUncleNumber0Filler.json
- incorrectUncleNumber1Filler.json
- incorrectUncleNumber500Filler.json
- incorrectUncleTimestamp2Filler.json
- incorrectUncleTimestamp3Filler.json
- incorrectUncleTimestamp4Filler.json
- incorrectUncleTimestamp5Filler.json
- incorrectUncleTimestampFiller.json
- pastUncleTimestampFiller.json
- timestampTooHighFiller.json
- timestampTooLowFiller.json
- unknownUncleParentHashFiller.json
- wrongParentHashFiller.json
- wrongStateRootFiller.json

#### bcUncleSpecialTests/ (9 files)

- futureUncleTimestamp2Filler.json
- futureUncleTimestamp3Filler.json
- futureUncleTimestampDifficultyDrop2Filler.json
- futureUncleTimestampDifficultyDrop3Filler.json
- futureUncleTimestampDifficultyDrop4Filler.json
- futureUncleTimestampDifficultyDropFiller.json
- uncleBloomNot0Filler.json
- uncleBloomNot0_2Filler.json
- uncleBloomNot0_3Filler.json

#### bcUncleTest/ (22 on develop, 23 in legacytests)

- EqualUncleInTwoDifferentBlocks2Filler.json
- InChainUncleFatherFiller.json
- InChainUncleFiller.json
- InChainUncleGrandPaFiller.json
- InChainUncleGreatGrandPaFiller.json
- InChainUncleGreatGreatGrandPaFiller.json
- InChainUncleGreatGreatGreatGrandPaFiller.json
- InChainUncleGreatGreatGreatGreatGrandPaFiller.json
- UncleIsBrotherFiller.json
- oneUncleFiller.json
- oneUncleGeneration2Filler.json
- oneUncleGeneration3Filler.json
- oneUncleGeneration4Filler.json
- oneUncleGeneration5Filler.json
- oneUncleGeneration6Filler.json
- oneUncleGeneration7Filler.json
- threeUncleFiller.json
- twoEqualUncleFiller.json
- twoUncleFiller.json
- uncleHeaderAtBlock2Filler.json
- uncleHeaderWithGeneration0Filler.json
- uncleWithSameBlockNumberFiller.json
- EqualUncleInTwoDifferentBlocksFiller.json *(legacytests only)*

### ValidBlocks/

#### bcBlockGasLimitTest/ (4 files)

- BlockGasLimit2p63m1Filler.json
- SuicideTransactionFiller.json
- TransactionGasHigherThanLimit2p63m1Filler.json
- TransactionGasHigherThanLimit2p63m1_2Filler.json

#### bcEIP1153-transientStorage/ (3 files)

- tloadDoesNotPersistAcrossBlocksFiller.yml
- tloadDoesNotPersistCrossTxnFiller.yml
- transStorageBlockchainFiller.yml

#### bcEIP1559/ (7 on develop, 11 in legacytests)

- besuBaseFeeBugFiller.json
- burnVerifyFiller.yml
- highDemandFiller.yml
- lowDemandFiller.yml
- medDemandFiller.yml
- tipsFiller.yml
- transTypeFiller.yml
- burnVerifyLondonFiller.yml *(legacytests only)*
- intrinsicFiller.yml *(legacytests only)*
- intrinsicTipFiller.yml *(legacytests only)*
- tipsLondonFiller.yml *(legacytests only)*

#### bcEIP3675/ (1 file)

- tipInsideBlockFiller.yml

#### bcEIP4844-blobtransactions/ (1 file)

- blockWithAllTransactionTypesFiller.yml

#### bcExample/ (4 files)

- basefeeExampleFiller.json
- mergeExampleFiller.json
- optionsTestFiller.json
- shanghaiExampleFiller.json

#### bcExploitTest/ (4 files)

- DelegateCallSpamFiller.json
- ShanghaiLoveFiller.json
- StrangeContractCreationFiller.json
- SuicideIssueFiller.json

#### bcForkStressTest/ (1 on develop, 2 in legacytests)

- AmIOnEIP150Filler.json
- ForkStressTestFiller.json *(legacytests only)*

#### bcGasPricerTest/ (2 on develop, 3 in legacytests)

- highGasUsageFiller.json
- notxsFiller.json
- RPC_API_TestFiller.json *(legacytests only)*

#### bcMultiChainTest/ (legacytests only, 7 files)

- CallContractFromNotBestBlockFiller.json
- ChainAtoChainBCallContractFormAFiller.json
- ChainAtoChainBFiller.json
- ChainAtoChainB_BlockHashFiller.json
- ChainAtoChainB_difficultyBFiller.json
- ChainAtoChainBtoChainAFiller.json
- ChainAtoChainBtoChainAtoChainBFiller.json

#### bcRandomBlockhashTest/ (~105 files)

- 201503110226PYTHON_DUP6BCFiller.json
- randomStatetest{various}BCFiller.json (100+ files)

#### bcStateTests/ (63 on develop, 66 in legacytests)

- BLOCKHASH_BoundsFiller.json
- BadStateRootTxBCFiller.json
- OOGStateCopyContainingDeletedContractFiller.json
- OverflowGasRequireFiller.json
- SuicidesMixingCoinbase2Filler.json
- SuicidesMixingCoinbaseFiller.json
- TransactionFromCoinbaseHittingBlockGasLimit1Filler.json
- ZeroValue_TransactionCALLwithData_OOGRevertFiller.json
- ZeroValue_TransactionCALLwithData_ToEmpty_OOGRevert_ParisFiller.json
- ZeroValue_TransactionCALLwithData_ToNonZeroBalance_OOGRevertFiller.json
- ZeroValue_TransactionCALLwithData_ToOneStorageKey_OOGRevert_ParisFiller.json
- blockhashNonConstArgFiller.json
- blockhashTestsFiller.json
- callcodeOutput3partialFiller.json
- create2collisionwithSelfdestructSameBlockFiller.json
- extCodeHashOfDeletedAccountDynamicFiller.json
- extCodeHashOfDeletedAccountFiller.json
- extcodehashEmptySuicideFiller.yml
- logRevertFiller.yml
- multimpleBalanceInstructionFiller.json
- randomFiller.yml
- randomStatetest{various}Filler.json (17 files)
- refundResetFiller.yml
- selfdestructBalanceFiller.yml
- simpleSuicideFiller.json
- suicideCoinbaseFiller.json
- suicideCoinbaseStateFiller.json
- suicideStorageCheckFiller.json
- suicideStorageCheckVCreate2Filler.json
- suicideStorageCheckVCreateFiller.json
- suicideThenCheckBalanceFiller.json
- testOpcode_00Filler.yml through testOpcode_f0Filler.yml (15 files)

#### bcTotalDifficultyTest/ (legacytests only, 10 files)

- lotsOfBranchesOverrideAtTheEndFiller.json
- lotsOfBranchesOverrideAtTheMiddleFiller.json
- newChainFrom4BlockFiller.json
- newChainFrom5BlockFiller.json
- newChainFrom6BlockFiller.json
- sideChainWithMoreTransactions2Filler.json
- sideChainWithMoreTransactionsFiller.json
- sideChainWithNewMaxDifficultyStartingFromBlock3AfterBlock4Filler.json
- uncleBlockAtBlock3AfterBlock3Filler.json
- uncleBlockAtBlock3afterBlock4Filler.json

#### bcUncleSpecialTests/ (legacytests only, 8 files)

- futureUncleTimestamp2Filler.json
- futureUncleTimestampDifficultyDrop2Filler.json
- futureUncleTimestampDifficultyDrop3Filler.json
- futureUncleTimestampDifficultyDrop4Filler.json
- futureUncleTimestampDifficultyDropFiller.json
- uncleBloomNot0Filler.json
- uncleBloomNot0_2Filler.json
- uncleBloomNot0_3Filler.json

#### bcUncleTest/ (legacytests only, 8 files)

- oneUncleFiller.json
- oneUncleGeneration2Filler.json
- oneUncleGeneration3Filler.json
- oneUncleGeneration4Filler.json
- oneUncleGeneration5Filler.json
- oneUncleGeneration6Filler.json
- twoUncleFiller.json
- uncleHeaderAtBlock2Filler.json

#### bcValidBlockTest/ (16 on develop, 17 in legacytests)

- ExtraData32Filler.json
- RecallSuicidedContractFiller.json
- RecallSuicidedContractInOneBlockFiller.json
- SimpleTx3LowSFiller.json
- SimpleTxFiller.json
- callRevertFiller.json
- dataTx2Filler.json
- diff1024Filler.json
- eip2930Filler.yml
- emptyPostTransferFiller.yml
- gasLimitTooHigh2Filler.json
- log1_correctFiller.json
- reentrencySuicideFiller.yml
- timeDiff12Filler.json
- timeDiff13Filler.json
- timeDiff14Filler.json
- gasPrice0Filler.json *(legacytests only)*

#### bcWalletTest/ (5 files)

- wallet2outOf3txs2Filler.json
- wallet2outOf3txsFiller.json
- wallet2outOf3txsRevokeAndConfirmAgainFiller.json
- wallet2outOf3txsRevokeFiller.json
- walletReorganizeOwnersFiller.json

### TransitionTests/ (legacytests only, 21 files)

#### bcArrowGlacierToParis/ (3 files)

- difficultyFormulaFiller.yml
- powToPosBlockRejectionFiller.json
- powToPosTestFiller.json

#### bcBerlinToLondon/ (3 files)

- BerlinToLondonTransitionFiller.json
- initialValFiller.yml
- londonUnclesFiller.json

#### bcByzantiumToConstantinopleFix/ (1 file)

- ConstantinopleFixTransitionFiller.json

#### bcEIP158ToByzantium/ (1 file)

- ByzantiumTransitionFiller.json

#### bcFrontierToHomestead/ (7 files)

- CallContractThatCreateContractBeforeAndAfterSwitchoverFiller.json
- ContractCreationFailsOnHomesteadFiller.json
- HomesteadOverrideFrontierFiller.json
- UncleFromFrontierInHomesteadFiller.json
- UnclePopulationFiller.json
- blockChainFrontierWithLargerTDvsHomesteadBlockchain2Filler.json
- blockChainFrontierWithLargerTDvsHomesteadBlockchainFiller.json

#### bcHomesteadToDao/ (4 files)

- DaoTransactionsFiller.json
- DaoTransactions_EmptyTransactionAndForkBlocksAheadFiller.json
- DaoTransactions_UncleExtradataFiller.json
- DaoTransactions_XBlockm1Filler.json

#### bcHomesteadToEIP150/ (1 file)

- EIP150TransitionFiller.json

#### bcMergeToShanghai/ (1 file)

- shanghaiBeforeTransitionFiller.json

---

## Appendix C: TransactionTestsFiller files

**Source:** `ethereum/tests` develop `src/TransactionTestsFiller/`

### ttAddress/ (4 files)

- AddressLessThan20Filler.json
- AddressLessThan20Prefixed0Filler.json
- AddressMoreThan20Filler.json
- AddressMoreThan20PrefixedBy0Filler.json

### ttData/ (9 files)

- DataTestEnoughGASFiller.json
- DataTestFirstZeroBytesFiller.json
- DataTestLastZeroBytesFiller.json
- DataTestNotEnoughGASFiller.json
- DataTestZeroBytesFiller.json
- String10MbDataFiller.json
- String10MbDataNotEnoughGASFiller.json
- dataTx_bcValidBlockTestFiller.json
- dataTx_bcValidBlockTestFrontierFiller.json

### ttEIP1559/ (9 files)

- GasLimitPriceProductOverflowFiller.json
- GasLimitPriceProductOverflowtMinusOneFiller.json
- GasLimitPriceProductPlusOneOverflowFiller.json
- maxFeePerGas00prefixFiller.json
- maxFeePerGas32BytesValueFiller.json
- maxFeePerGasOverflowFiller.json
- maxPriorityFeePerGas00prefixFiller.json
- maxPriorityFeePerGasOverflowFiller.json
- maxPriorityFeePerGass32BytesValueFiller.json

### ttEIP2028/ (2 files)

- DataTestInsufficientGas2028Filler.json
- DataTestSufficientGas2028Filler.json

### ttEIP2930/ (7 files)

- accessListAddressGreaterThan20Filler.json
- accessListAddressLessThan20Filler.json
- accessListAddressPrefix00Filler.json
- accessListStorage0x0001Filler.json
- accessListStorage32BytesFiller.json
- accessListStorageOver32BytesFiller.json
- accessListStoragePrefix00Filler.json

### ttEIP3860/ (4 files)

- DataTestEnoughGasInitCodeFiller.yml
- DataTestInitCodeLimitFiller.yml
- DataTestInitCodeTooBigFiller.yml
- DataTestNotEnoughGasInitCodeFiller.yml

### ttGasLimit/ (10 files)

- NotEnoughGasLimitFiller.json
- TransactionWithGasLimitOverflow256Filler.json
- TransactionWithGasLimitOverflow64Filler.json
- TransactionWithGasLimitOverflowZeros64Filler.json
- TransactionWithGasLimitxPriceOverflowFiller.json
- TransactionWithHighGasLimit63Filler.json
- TransactionWithHighGasLimit63Minus1Filler.json
- TransactionWithHighGasLimit63Plus1Filler.json
- TransactionWithHighGasLimit64Minus1Filler.json
- TransactionWithLeadingZerosGasLimitFiller.json

### ttGasPrice/ (4 files)

- TransactionWithGasPriceOverflowFiller.json
- TransactionWithHighGasPrice2Filler.json
- TransactionWithHighGasPriceFiller.json
- TransactionWithLeadingZerosGasPriceFiller.json

### ttNonce/ (10 files)

- TransactionWithEmptyBigIntFiller.json
- TransactionWithHighNonce256Filler.json
- TransactionWithHighNonce32Filler.json
- TransactionWithHighNonce64Filler.json
- TransactionWithHighNonce64Minus1Filler.json
- TransactionWithHighNonce64Minus2Filler.json
- TransactionWithHighNonce64Plus1Filler.json
- TransactionWithLeadingZerosNonceFiller.json
- TransactionWithNonceOverflowFiller.json
- TransactionWithZerosBigIntFiller.json

### ttRSValue/ (29 files)

- RightVRSTestF0000000aFiller.json
- RightVRSTestF0000000bFiller.json
- RightVRSTestF0000000cFiller.json
- RightVRSTestF0000000dFiller.json
- RightVRSTestF0000000eFiller.json
- RightVRSTestF0000000fFiller.json
- RightVRSTestVPrefixedBy0Filler.json
- RightVRSTestVPrefixedBy0_2Filler.json
- RightVRSTestVPrefixedBy0_3Filler.json
- TransactionWithRSvalue0Filler.json
- TransactionWithRSvalue1Filler.json
- TransactionWithRvalue0Filler.json
- TransactionWithRvalue1Filler.json
- TransactionWithRvalueHighFiller.json
- TransactionWithRvalueOverflowFiller.json
- TransactionWithRvaluePrefixed00BigIntFiller.json
- TransactionWithRvaluePrefixed00Filler.json
- TransactionWithRvalueTooHighFiller.json
- TransactionWithSvalue0Filler.json
- TransactionWithSvalue1Filler.json
- TransactionWithSvalueEqual_c_secp256k1n_x05Filler.json
- TransactionWithSvalueHighFiller.json
- TransactionWithSvalueLargerThan_c_secp256k1n_x05Filler.json
- TransactionWithSvalueLessThan_c_secp256k1n_x05Filler.json
- TransactionWithSvalueOverflowFiller.json
- TransactionWithSvaluePrefixed00BigIntFiller.json
- TransactionWithSvaluePrefixed00Filler.json
- TransactionWithSvalueTooHighFiller.json
- unpadedRValueFiller.json

### ttSignature/ (34 files)

- EmptyTransactionFiller.json
- PointAtInfinityFiller.json
- RSsecp256k1Filler.json
- RightVRSTestFiller.json
- SenderTestFiller.json
- TransactionWithTooFewRLPElementsCopier.json
- TransactionWithTooManyRLPElementsCopier.json
- Vitalik_1Filler.json through Vitalik_17Filler.json (17 files)
- WrongVRSTestIncorrectSizeFiller.json
- WrongVRSTestVOverflowFiller.json
- ZeroSigTransaction2Filler.json
- ZeroSigTransaction3Filler.json
- ZeroSigTransaction4Filler.json
- ZeroSigTransaction5Filler.json
- ZeroSigTransaction6Filler.json
- ZeroSigTransactionFiller.json
- invalidSignatureFiller.json
- libsecp256k1testFiller.json

### ttValue/ (3 files)

- TransactionWithHighValueFiller.json
- TransactionWithHighValueOverflowFiller.json
- TransactionWithLeadingZerosValueFiller.json

### ttVValue/ (28 files)

- InvalidChainID0ValidV0Filler.json
- InvalidChainID0ValidV1Filler.json
- V_equals37Filler.json
- V_equals38Filler.json
- V_overflow32bitFiller.json
- V_overflow32bitSignedFiller.json
- V_overflow64bitPlus27Filler.json
- V_overflow64bitPlus28Filler.json
- V_overflow64bitSignedFiller.json
- V_wrongvalue_101Filler.json
- V_wrongvalue_121Filler.json
- V_wrongvalue_122Filler.json
- V_wrongvalue_123Filler.json
- V_wrongvalue_124Filler.json
- V_wrongvalue_ffFiller.json
- V_wrongvalue_ffffFiller.json
- ValidChainID1InvalidV00Filler.json
- ValidChainID1InvalidV01Filler.json
- ValidChainID1InvalidV0Filler.json
- ValidChainID1InvalidV1Filler.json
- ValidChainID1ValidV0Filler.json
- ValidChainID1ValidV1Filler.json
- WrongVRSTestVEqual26Filler.json
- WrongVRSTestVEqual29Filler.json
- WrongVRSTestVEqual31Filler.json
- WrongVRSTestVEqual36Filler.json
- WrongVRSTestVEqual39Filler.json
- WrongVRSTestVEqual41Filler.json

### ttWrongRLP/ (59 files)

- RLPAddressWithFirstZerosCopier.json
- RLPAddressWrongSizeCopier.json
- RLPArrayLengthWithFirstZerosCopier.json
- RLPElementIsListWhenItShouldntBe2Copier.json
- RLPElementIsListWhenItShouldntBeCopier.json
- RLPExtraRandomByteAtTheEndCopier.json
- RLPHeaderSizeOverflowInt32Copier.json
- RLPIncorrectByteEncoding00Copier.json
- RLPIncorrectByteEncoding01Copier.json
- RLPIncorrectByteEncoding127Copier.json
- RLPListLengthWithFirstZerosCopier.json
- RLPNonceWithFirstZerosCopier.json
- RLPTransactionGivenAsArrayCopier.json
- RLPValueWithFirstZerosCopier.json
- RLP_04_maxFeePerGas32BytesValueCopier.json
- RLP_09_maxFeePerGas32BytesValueCopier.json
- RLPgasLimitWithFirstZerosCopier.json
- RLPgasPriceWithFirstZerosCopier.json
- TRANSCT_HeaderGivenAsArray_0Copier.json
- TRANSCT_HeaderLargerThanRLP_0Copier.json
- TRANSCT__RandomByteAtRLP_0Copier.json through _9Copier.json (10 files)
- TRANSCT__RandomByteAtTheEndCopier.json
- TRANSCT__ZeroByteAtRLP_0Copier.json through _9Copier.json (10 files)
- TRANSCT_data_GivenAsListCopier.json
- TRANSCT_gasLimit_GivenAsListCopier.json
- TRANSCT_gasLimit_Prefixed0000Copier.json
- TRANSCT_gasLimit_TooLargeCopier.json
- TRANSCT_rvalue_GivenAsListCopier.json
- TRANSCT_rvalue_Prefixed0000Copier.json
- TRANSCT_rvalue_TooLargeCopier.json
- TRANSCT_rvalue_TooShortCopier.json
- TRANSCT_svalue_GivenAsListCopier.json
- TRANSCT_svalue_Prefixed0000Copier.json
- TRANSCT_svalue_TooLargeCopier.json
- TRANSCT_to_GivenAsListCopier.json
- TRANSCT_to_Prefixed0000Copier.json
- TRANSCT_to_TooLargeCopier.json
- TRANSCT_to_TooShortCopier.json
- aCrashingRLPCopier.json
- aMaliciousRLPCopier.json
- tr201506052141PYTHONCopier.json

## Appendix D: InvalidRLP files

**Source:** `ethereum/tests` develop `src/InvalidRLP/`

### Root level (7 filler files + 2 non-test)

- withdrawalsAddressBoundsFiller.json
- withdrawalsAmountBoundsFiller.json
- withdrawalsIndexBoundsFiller.json
- withdrawalsRLPlessElementsFiller.json
- withdrawalsRLPmoreElementsFiller.json
- withdrawalsRLPnotAListFiller.json
- withdrawalsValidatorIndexBoundsFiller.json
- ConvertThisTestValueOverflowParis.txt *(non-test)*
- README.md *(non-test)*

### bcForgedTest/ (11 files)

- bcBlockRLPAsListFiller.json
- bcBlockRLPPrefixed0000Filler.json
- bcBlockRLPRandomByteFiller.json
- bcBlockRLPTooLargeFiller.json
- bcBlockRLPZeroByteFiller.json
- bcForkBlockTestFiller.json
- bcInvalidRLPTest_BLOCKFiller.json
- bcInvalidRLPTest_TRANSACTFiller.json
- bcTransactRLPRandomByteFiller.json
- bcTransactRLPTooLargeFiller.json
- bcTransactRLPZeroByteFiller.json

---

## Appendix E: Legacy-only extras (ethereum/legacytests)

These exist only in `ethereum/legacytests` and are NOT in `ethereum/tests` develop.
Inclusion depends on Phase 0 triage.

### Constantinople/VMTestsFiller/ (613 files)

- vmArithmeticTest/ (196 files)
- vmBitwiseLogicOperation/ (61 files)
- vmBlockInfoTest/ (5 files)
- vmEnvironmentalInfo/ (33 files)
- vmIOandFlowOperations/ (144 files)
- vmLogTest/ (46 files)
- vmPerformance/ (18 files)
- vmPushDupSwapTest/ (74 files)
- vmRandomTest/ (6 files)
- vmSha3Test/ (18 files)
- vmSystemOperations/ (7 files)
- vmTests/ (1 file)

### Constantinople/GeneralStateTests/ (9,549 files)

Older pre-refactoring version with significantly more test files per directory:

- stTimeConsuming/ (5,189 files)
- stZeroKnowledge/ (804 files)
- stZeroKnowledge2/ (519 files)
- stPreCompiledContracts/ (519 files)
- stSStoreTest/ (465 files)
- stStaticCall/ (493 files)
- stRandom/ (313 files)
- stRandom2/ (223 files)
- stRevertTest/ (211 files)
- stStackTests/ (207 files)
- stTransactionTest/ (156 files)
- *(plus ~40 more directories with smaller counts)*

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.