Skip to content

Conversation

PelleKrab
Copy link

πŸ—’οΈ Description

Initial checklist for EIP-7805 (FOCIL) execution tests.

βœ… Checklist

  • All: Ran fast tox checks to avoid unnecessary CI fails, see also Code Standards and Enabling Pre-commit Checks:
    uvx --with=tox-uv tox -e lint,typecheck,spellcheck,markdownlint
  • All: PR title adheres to the repo standard - it will be used as the squash commit message and should start type(scope):.
  • All: Considered adding an entry to CHANGELOG.md.
  • All: Considered updating the online docs in the ./docs/ directory.
  • All: Set appropriate labels for the changes (only maintainers can apply labels).
  • Tests: Ran mkdocs serve locally and verified the auto-generated docs for new tests in the Test Case Reference are correctly formatted.
  • Tests: For PRs implementing a missed test case, update the post-mortem document to add an entry the list.
  • Ported Tests: All converted JSON/YML tests from ethereum/tests or tests/static have been assigned @ported_from marker.

@spencer-tb
Copy link
Contributor

Hey, just an FYI. We are about to finalize "The Weld" - moving EEST to EELS. It's best to keep this PR up here in EEST for now. We will then ask you to reopen the PR but in EELS somepoint next week. Hope that okay!

More context: https://steel.ethereum.foundation/blog/blog_posts/2025-09-11_weld-announcement/

Copy link

@jihoonsong jihoonsong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally it has a good structure and looks good. Appreciate this effort, thanks!

| **Inclusion List Building** |
| `test_il_builder_creates_valid_list_from_txs` | Ensure the IL builder can build a valid `InclusionList` from the mempool. | Alice and Bob submit valid transactions to the mempool | The builder MUST produce a structurally valid `InclusionList`. The list must be properly encoded. | 🟑 Planned |
| `test_il_builder_respects_size_limit` | Ensure the IL builder does not create a list that exceeds the `MAX_BYTES_PER_INCLUSION_LIST` limit. | Provide the builder with more transactions than can fit within the size limit. | The builder MUST create an `InclusionList` that is less than or equal to the size limit. It MUST NOT produce an oversized list. | 🟑 Planned |
| **Block Validation** |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could add more tests such as:

  • When the gas left is insufficient to add omitted IL transactions.
  • When omitted IL transactions are invalidated by other transactions in a payload. There will be multiple scenarios and we'd want to include as many as we can, especially regarding AA transactions.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AA transactions would be interesting and make our tests very robust, if we could have exhaustive tests for AA.

| `test_focil_builder_includes_valid_inclusion_list_txs` | Ensure the produced block includes all valid transactions from the provided inclusion list. | The EL is asked to build a block with an inclusion list containing several valid transactions. | The produced block MUST contain all the valid transactions from the inclusion list. | 🟑 Planned |
| `test_focil_builder_ignores_invalid_inclusion_list_transactions` | Ensure `produce_execution_payload` does not include inclusion list transactions that are invalid against the parent state. | The EL is asked to build a block with an inclusion list containing a mix of valid and invalid (e.g., bad nonce) transactions. | The produced block MUST include the valid inclusion list transactions and MUST NOT include the invalid ones. | 🟑 Planned |
| `test_focil_block_builder_handles_empty_inclusion_list` | Ensure a valid block is built when the inclusion list is empty. | The EL is asked to build a block with an empty inclusion list. | The builder MUST produce a valid block. | 🟑 Planned |
| `test_focil_builder_handles_inclusion_list_tx_becoming_invalid` | Ensure builder correctly omits an inclusion list transaction that becomes invalid due to a preceding inclusion list transaction. | The inclusion list is `[tx_A, tx_B]`. Both are from the same EOA with nonce `N`. Both are valid against the parent state. | The builder MUST include `tx_A`. `tx_B` (with nonce `N`) becomes invalid and MUST be omitted from the block. | 🟑 Planned | No newline at end of file

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is good. Could you add more tests that cover other cases such as both tx_A and tx_B are from the same EOA and have the right nonce (whatever their order is) but including the prior transaction makes the EOA cannot afford the latter. Also when a block is full and not all IL transactions are included. Any cases that can make this list exhaustive are good.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added 3 more, still trying to come up with more. Lemme know if anymore come to mind.


| Function Name | Goal | Setup | Expectation | Status |
|---------------|------|-------|-------------|--------|
| **Inclusion list Building** |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When we test this, we would pass a payload and IL transactions, right? We could set up various payloads, which falls into three folds: contains all IL transactions and contains some of IL transactions and is valid/ invalid. I think some test cases in this section can be divided into subcategories of those three cases.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For Inclusion List Building we are just testing the engine_getInclusionList functionality, but I agree we splitting the up payload IL pairs for the other test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants