chore(ci): bump prague to stable and osaka to develop
🗒️ Description
Bumps Prague to stable and Osaka to develop in our CI.
I think we should create an initial Osaka release after merging this where fixtures_stable would contain Prague and fixtures_develop up to Osaka (refill-ing all our existing tests).
I added a temp EELS branch so we can refill all of our tests for Osaka:
- https://github.com/spencer-tb/execution-specs/tree/forks/osaka
Note that branch is based off:
- https://github.com/marioevz/execution-specs/tree/forks/prague
So we should probably proceed with #1454 first, then update our temp osaka branch.
🔗 Related Issues
Requires #1507 and #1454.
✅ Checklist
- [x] All: Set appropriate labels for the changes.
- [x] All: Considered squashing commits to improve commit history.
- [x] All: Added an entry to CHANGELOG.md.
- [x] All: Considered updating the online docs in the ./docs/ directory.
Actually requires #1508 if we want to wait for the last Prague-as-develop release.
Made the fixes for this, but some unit tests are failing, particularly the src/cli/gentest/tests/test_cli.py unit tests are failing in Prague due to the branch currently being used, which fails to fill if the environment's block number is not 1.
@marioevz @spencer-tb I think we need to get this merged, cf #1856. It's going to make our ci v slow :cry:
I just rebased on main, I think we'll have some tests to fix.
Looking at just now!
Looking at just now!
Didn't quite get there but these are the remaining tests to be fixed. Can continue next week.
tests/prague/eip6110_deposits/test_modified_contract.py:
- test_invalid_layout
- test_invalid_log_length
tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py:
- test_delegation_replacement_call_previous_contract
@spencer-tb thanks so much.
@spencer-tb @marioevz @felix314159 ideally, we'd update eels_resolutions.json in this PR to point to the official spec: I.e., point to
- https://github.com/ethereum/execution-specs/tree/forks/prague instead of Mario's branch:
- https://github.com/marioevz/execution-specs/tree/forks/prague
I rebased on main so that i can start helping, otherwise i would struggle with the solc-select dependency
Looking at just now!
Didn't quite get there but these are the remaining tests to be fixed. Can continue next week.
tests/prague/eip6110_deposits/test_modified_contract.py:
* test_invalid_layout * test_invalid_log_lengthtests/prague/eip7702_set_code_tx/test_set_code_txs_2.py:
* test_delegation_replacement_call_previous_contract
After modifying the eels_resolutions.json to use latest master (not some pinned commit) for all forks, but especially for prague, then tests/prague/eip6110_deposits/test_modified_contract.py fills without issues with eels (but not with evmone). When trying to fill tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py with eels 271 pass but 1 fails cuz:
src/ethereum_test_specs/helpers.py:278: in verify_transactions
info.verify(strict_match=transition_tool_exceptions_reliable)
src/ethereum_test_specs/helpers.py:174: in verify
raise UndefinedExecutionExceptionError(
E ethereum_test_specs.helpers.UndefinedExecutionExceptionError: Exception mismatch on Transaction ({'index': 0, 'nonce': 0}):
E What: Transaction exception mismatch!
E Want: TransactionException.TYPE_4_TX_PRE_FORK
E Got: "Failed to parse transaction 0: module 'ethereum.cancun.transactions' has no attribute 'SetCodeTransaction'"
E No exception defined for error message got, please add it to ExecutionSpecsExceptionMapper
Should we update the eels_resolutions.json in a separate PR?
~~Looks good from myside. The failing tests all seem to pass now!~~ Regrets comment :P
Found the issue, I think the master branch of eels is currently ignoring the reward field of the request, I'm still debugging.
Pushed one fix but this still requires a fix from EELS side: https://github.com/ethereum/execution-specs/pull/1312
And even with that, some tests are still failing :(
Example of test failing: tests/prague/eip2537_bls_12_381_precompiles/test_bls12_variable_length_input_contracts.py is timing out.
2 failing framework tests I haven't figured out, you can run them with:
uv run pytest -c ./pytest-framework.ini -n 8 -k test_evm_t8n -vv
For some reason the balance of these accounts is off by 0x1bc16d674ec80000 = 2000000000000000000.
The remaining EELS failures are connection refused issues that come from increased parallelism. When running these failures isolated they pass.
The remaining EELS failures are connection refused issues that come from increased parallelism. When running these failures isolated they pass.
These seem to be from some recent commits in EELS master. I dropped some of them and added the required commits (2 additional). We are now using a very similar EELS branch for Prague but on my fork. I think all the tests will fill correctly now. So just the 2 small unit tests.
The remaining EELS failures are connection refused issues that come from increased parallelism. When running these failures isolated they pass.
These seem to be from some recent commits in EELS master. I dropped some of them and added the required commits (2 additional). We are now using a very similar EELS branch for Prague but on my fork. I think all the tests will fill correctly now. So just the 2 small unit tests.
The failing unit tests should be fixed by https://github.com/ethereum/execution-specs/pull/1312, in combination with this commit I just pushed: https://github.com/ethereum/execution-spec-tests/pull/1573/commits/c6aea491d80f85950aa2fc74f77e6a044bc1f1b4
@spencer-tb rebased on main to resolve chnagelog conflicts.
Once https://github.com/ethereum/execution-specs/pull/1312 is merged we can update Prague in eels_resolutions.json to point to execution-specs then we should be able to merge? :)
Goodbye friend. I'm not going to miss you PR 1573. 👋