Skip to content

refactor(weld): Full WELD#1377

Merged
gurukamath merged 2117 commits into
ethereum:forks/osakafrom
gurukamath:full-weld-1
Aug 28, 2025
Merged

refactor(weld): Full WELD#1377
gurukamath merged 2117 commits into
ethereum:forks/osakafrom
gurukamath:full-weld-1

Conversation

@gurukamath

@gurukamath gurukamath commented Aug 20, 2025

Copy link
Copy Markdown
Contributor

What was wrong?

The EELS and EEST repositories need to be merged and are currently separate

How was it fixed?

Move the framework from eest to src/ethereum_spec_tests and the eest tests to tests

Cute Animal Picture

Cute Animals - 1 of 1

marioevz and others added 30 commits May 27, 2025 17:29
…_in_output` (ethereum#1667)

* feat(fixtures,specs): Add `postStateHash` on `exclude_full_post_state_in_output`

* docs: Changelog

* feat(fixtures,specs): Check mutually exclusive `postState`/`postStateHash`
Convert benchmarks with single transaction to `state_test()`.
* zkevm: add BLOBHASH benchs

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* generalize params

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* improvements

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

---------

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: danceratopz <danceratopz@gmail.com>
Co-authored-by: danceratopz <danceratopz@gmail.com>
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* zkevm: calldataload

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* fix assertion

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* avoid POPs

* rebase

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* generalize calldata argument

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

---------

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
* fix(tests,eof): Specify Env(gas_limit)

* fix(ci): Fill EOF from an evmone branch

* fix(ci): Revert to master branch of evmone for eof filling
…ethereum#1673)

* refactor(fw): move TransactionType enum to ethereum_test_types module

* fix: tox

---------

Co-authored-by: Mario Vega <marioevz@gmail.com>
…ethereum#1673)

* refactor(fw): move TransactionType enum to ethereum_test_types module

* fix: tox

---------

Co-authored-by: Mario Vega <marioevz@gmail.com>
…ction (ethereum#1674)

* refactor(tests): remove `secret_key` from acl test transaction

* add more tests

* LLM-autocomplete error fix

* coverage

* fix: tox

* fix docs

* tox again

---------

Co-authored-by: Mario Vega <marioevz@gmail.com>
* add warm address test

* change return opcode for stop

* wrap CALL in CodeGasMeasure

* make test future-proof
…um#1683)

* port stShiftCobinationsFiller

* minor optimization

* docs: Changelog

* update spec sha

---------

Co-authored-by: Mario Vega <marioevz@gmail.com>
* zkevm: add generic zero-param opcodes

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* zkevm: add CALLVALUE coverage

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* add comment

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* zkevm: add RETURNDATASIZE coverage

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* zkevm: add MSIZE coverage & fixes

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* fixes

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* change params

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* Update tests/zkevm/test_worst_compute.py

Co-authored-by: Jochem Brouwer <jochembrouwer96@gmail.com>

* feedback

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* add comment

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* generalize returndata test

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* fix

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* Update tests/zkevm/test_worst_compute.py

Co-authored-by: Jochem Brouwer <jochembrouwer96@gmail.com>

* separate RETURNDATASIZE tests

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* nit

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

---------

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Jochem Brouwer <jochembrouwer96@gmail.com>
ethereum#1659)

Add a worst-case test running a block with many `ADDMOD` or `MULMOD`
instructions with arguments of the parametrized range.
…e_size()` from fork config (ethereum#1649)

* feat(forks): introduce max code size / max initcode size

* feat(tests): read max code size from fork / scale gas limit as appropriate for test

* Update src/ethereum_test_forks/base_fork.py

Co-authored-by: Paweł Bylica <chfast@gmail.com>

* Update src/ethereum_test_forks/base_fork.py

Co-authored-by: Paweł Bylica <chfast@gmail.com>

* Update src/ethereum_test_forks/forks/forks.py

Co-authored-by: Paweł Bylica <chfast@gmail.com>

* feat(tests): fix type error complaints

* feat(tests): make tests dependent on MAX_CODE_SIZE now depend on the fork-based max code size

* feat(tests): use a more logical gas limit formula for contract deployment

* feat(tests): default (init)code size limit to first limit set

* feat(tests): remove EIP 7907 from Osaka

* feat(tests): make typecheck happy

* feat(tests): do not use fallback for code size being returned `None` anymore

* feat(tests): read code size from forks from newly added tests after rebase

* Update tests/zkevm/test_worst_bytecode.py

Co-authored-by: Mario Vega <marioevz@gmail.com>

* feat(tests): insert max_code_size for modarith zkevm test

---------

Co-authored-by: Paweł Bylica <chfast@gmail.com>
Co-authored-by: Mario Vega <marioevz@gmail.com>
…e_size()` from fork config (ethereum#1649)

* feat(forks): introduce max code size / max initcode size

* feat(tests): read max code size from fork / scale gas limit as appropriate for test

* Update src/ethereum_test_forks/base_fork.py

Co-authored-by: Paweł Bylica <chfast@gmail.com>

* Update src/ethereum_test_forks/base_fork.py

Co-authored-by: Paweł Bylica <chfast@gmail.com>

* Update src/ethereum_test_forks/forks/forks.py

Co-authored-by: Paweł Bylica <chfast@gmail.com>

* feat(tests): fix type error complaints

* feat(tests): make tests dependent on MAX_CODE_SIZE now depend on the fork-based max code size

* feat(tests): use a more logical gas limit formula for contract deployment

* feat(tests): default (init)code size limit to first limit set

* feat(tests): remove EIP 7907 from Osaka

* feat(tests): make typecheck happy

* feat(tests): do not use fallback for code size being returned `None` anymore

* feat(tests): read code size from forks from newly added tests after rebase

* Update tests/zkevm/test_worst_bytecode.py

Co-authored-by: Mario Vega <marioevz@gmail.com>

* feat(tests): insert max_code_size for modarith zkevm test

---------

Co-authored-by: Paweł Bylica <chfast@gmail.com>
Co-authored-by: Mario Vega <marioevz@gmail.com>
* feat(tests): start basic eip-7883 cases.

* chore: eels for eip-7883.

* refactor(types): TestParameterGroup into a pydantic model

* refactor(tests): Tests using TestParameterGroup

* fix(tests): EIP-7883: Fix gas meter

* fix(tests): EIP-7883: Gas calc

* fix(types): Fix TestParameterGroup

* fix(tests): EIP-198: Tox

* fix(tests): EIP-152: Tox

* fix(tests): EIP-7883: Tox

* fix(tests): EIP-7823: Tox

* chore(tests): add remaining 7883 test vectors.

* fix(tests/eip7823): Make tests compatible with 7825

* fix(tests): EIP-7823,7883 Gas Calculation

* Add geth failing test to EIP-7883

* fix guido-4-even expected output

* Revert "chore: eels for eip-7883."

This reverts commit e0857e5a0cd2ab592c1bc86f21d60ab1127a2906.

* fix: remove unused constant

* changelog

* fix: tox

---------

Co-authored-by: Mario Vega <marioevz@gmail.com>
* feat(tests): start basic eip-7883 cases.

* chore: eels for eip-7883.

* refactor(types): TestParameterGroup into a pydantic model

* refactor(tests): Tests using TestParameterGroup

* fix(tests): EIP-7883: Fix gas meter

* fix(tests): EIP-7883: Gas calc

* fix(types): Fix TestParameterGroup

* fix(tests): EIP-198: Tox

* fix(tests): EIP-152: Tox

* fix(tests): EIP-7883: Tox

* fix(tests): EIP-7823: Tox

* chore(tests): add remaining 7883 test vectors.

* fix(tests/eip7823): Make tests compatible with 7825

* fix(tests): EIP-7823,7883 Gas Calculation

* Add geth failing test to EIP-7883

* fix guido-4-even expected output

* Revert "chore: eels for eip-7883."

This reverts commit e0857e5a0cd2ab592c1bc86f21d60ab1127a2906.

* fix: remove unused constant

* changelog

* fix: tox

---------

Co-authored-by: Mario Vega <marioevz@gmail.com>
* refactor(forks): Pydantic-friendly `Fork` type

* fix(tests): Bad import

* docs(forks): remove `blockchain_test_network_name` from docs

---------

Co-authored-by: danceratopz <danceratopz@gmail.com>
* refactor(forks): Pydantic-friendly `Fork` type

* fix(tests): Bad import

* docs(forks): remove `blockchain_test_network_name` from docs

---------

Co-authored-by: danceratopz <danceratopz@gmail.com>
* zkevm: add TLOAD benchs

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* improvements

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* zkevm: add TSTORE benchs

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* lint

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* fix

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* simplify 3 mod 8 factor

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* feedback

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* refactor and improvements

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* feedback

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* Update tests/zkevm/test_worst_compute.py

Co-authored-by: Jochem Brouwer <jochembrouwer96@gmail.com>

* fix comment

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* rebase fix

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* remove unused import

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

---------

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Jochem Brouwer <jochembrouwer96@gmail.com>
* feat(docs): Generate EIP Checklists

* fix(docs): Correctly include checklist gen in mkdocs flow

* fix(plugins/filler): remove unused import

* fix(plugins): Tox, unit tests

* fix(clis): Checklist command help

* docs: Changelog

* fix(docs): Outdated docs

* fix(plugins): Collect-only parameter

* feat(plugins/eip_checklist): Allow starts-with covered items, n/a, and externally covered items

* Update docs page

* fix correct path

* docs: Move checklist guide to `writing_tests`

* fix

* docs: prefix commands with `uv run`

* chore(clis): fix examples in `checklist` docstring

* docs: apply correct indentation to fix ordered-list ennumeration

---------

Co-authored-by: danceratopz <danceratopz@gmail.com>
* zkevm: add selfdestruct existing contracts bench

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* zkevm: add selfdestruct of contracts deployed in tx

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* improvements

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* Update tests/zkevm/test_worst_stateful_opcodes.py

Co-authored-by: Jochem Brouwer <jochembrouwer96@gmail.com>

* improvements

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* adjust gas prices

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* Update tests/zkevm/test_worst_stateful_opcodes.py

Co-authored-by: Jochem Brouwer <jochembrouwer96@gmail.com>

* improvements

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* improvement

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* fix bug

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* selfdestruct in initcode

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

* feedback

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>

---------

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Jochem Brouwer <jochembrouwer96@gmail.com>
ethereum#1715)

* chore(deps): add `codespell` to the `docs` extras group

* feat(tooling,tox,ci): use `codespell` instead of `pyspelling`

* docs(tooling,ci): update docs for `codespell`

* chore(tooling): run spellecheck in precommit for python

* chore(ci): update ci flow for `codespell` -> `pyspelling`

* chore(all): fix the typos

* chore(tests): fix typo in function name

* docs: update changelog
ethereum#1715)

* chore(deps): add `codespell` to the `docs` extras group

* feat(tooling,tox,ci): use `codespell` instead of `pyspelling`

* docs(tooling,ci): update docs for `codespell`

* chore(tooling): run spellecheck in precommit for python

* chore(ci): update ci flow for `codespell` -> `pyspelling`

* chore(all): fix the typos

* chore(tests): fix typo in function name

* docs: update changelog
…reum#2065)

Disables the longest running test in our test set that contains 8000+ blocks and takes around 30 minutes to fill.

Reasoning with the disabling of this test:
- We are basically testing a smart contract in these tests, if there's a failure in these contracts:
  - We are never going to catch it with these tests because our tests are not changing
  - It's not going to be a consensus failure because if the contract behaves in an unexpected way, all clients will still process the same EVM code
- Contract has been running in mainnet for sufficient time.
@Carsons-Eels

Copy link
Copy Markdown
Contributor

One downside of copy-pasting the code is that it wipes out the git history of EEST inside our repo. git blame will now just say you are responsible for every line in those migrated files. git subtree would preserve the full commit history of EEST (as long as we don't --squash the merge commit that subtree generates), which I think is important. Once the EEST project history is fully integrated into our own, we can just ask everyone to re-open their existing EEST PRs against the EELS codebase and stop making changes to EEST right?

I see your point about the changes to existing ethereum-spec-tests code though, we'd have to work out how to cleanly move it, possibly by spliting this into 2 commits. One to import the subtree, another to adjust the files necessary to link everything together into a working project.

LouisTsai-Csie and others added 17 commits August 22, 2025 15:29
* refactor(eip7883): update vector input structure

* feat: add eip7702, gas usage and extra edge cases

* feat: add fork transition test

* test: add extra invalid cases

* refactor(tests): Improve fixture and test descriptions for clarity

* refactor(tests): add helper for invalid case

* feat: add invalud boundary test cases

* chore: update boundary input case

* refactor(tests): simplify boundary modexp test cases

* fix(tests): update fork transition test

* feat(test): add gas formula egde cases

* test: add extra casefor modexp invalid input

* tests: port legacy modexp test

* refactor: update vector and data types

* refactor: remove valid case from invalid scenario

* refactor: update result comparison method and test case

* refactor: update comment

* refactor: update naming and new cases

* refactor: update valid fork configuration
* feat(fork): Add basic Amsterdam fork support

* refactor(fork): Move Amsterdam below BPO forks in forks.py
* feat(fork): Add basic Amsterdam fork support

* refactor(fork): Move Amsterdam below BPO forks in forks.py
* refactor(eip7825): update legacy configuration

* tests(eip7825): add extra cases for tx gas limit

* test(eip7825): add extra case for access list

* refactor: update test logic
* refactor(eip7825): update legacy configuration

* tests(eip7825): add extra cases for tx gas limit

* test(eip7825): add extra case for access list

* refactor: update test logic
…4c89a18db394b81'

git-subtree-dir: src/ethereum_spec_tests
git-subtree-mainline: 1626a8c
git-subtree-split: 0ae5cba
git-subtree-dir: tests/eest
git-subtree-mainline: e0d42d8
git-subtree-split: e1e7228
@gurukamath

Copy link
Copy Markdown
Contributor Author

@SamWilsn @Carsons-Eels Updated the PR using the subtree approach. That's a lot of files updated and commits added :)

@SamWilsn SamWilsn left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

As far as I can tell, this looks good to me!

@gurukamath

Copy link
Copy Markdown
Contributor Author

As far as I can tell, this looks good to me!

Awesome. Since this is such a huge PR, I am not gonna merge it just yet. Will just let it sit for a couple of days so people can come back and take a look if needed.

@gurukamath gurukamath merged commit c71e5aa into ethereum:forks/osaka Aug 28, 2025
8 checks passed
@gurukamath gurukamath mentioned this pull request Aug 28, 2025
3 tasks
danceratopz pushed a commit to danceratopz/execution-specs that referenced this pull request Oct 22, 2025
…eum#1377)

Move some basic tests for invalid first section type to the parametrized
tests of EIP-6206. Extend the test coverage by using more exhaustive
combination of params.
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.