-
Notifications
You must be signed in to change notification settings - Fork 664
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Shanghai hard fork support #2093
Conversation
- Implement base classes for Shanghai fork, inheriting from Paris - Implement EIP-3651: Warm COINBASE - Implement EIP-3855: PUSH0 instruction - Implement EIP-3860: Limit and meter initcode - Implement EIP-6049: Deprecate SELFDESTRUCT
84a4892
to
ae5c407
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just left some TODO notes for myself refactoring from the first set of commits... nothing to see here yet 👀
ae5c407
to
eb5ac84
Compare
6c32447
to
6279e21
Compare
6279e21
to
adde6ad
Compare
adde6ad
to
1db1353
Compare
- Implement EIP-4895: Beacon chain push withdrawals as operations - Clean up some logic along the way and tighten up typing - Update ``ethereum/tests`` (fixtures subdirectory)
d3dac44
to
f9d89cd
Compare
9d445ed
to
87d4417
Compare
1ee17e9
to
fd99f36
Compare
fd99f36
to
448b81b
Compare
- Validate withdrawal fields as per EIP-4895 - Add some gut check tests for validation of withdrawal fields - Simplify empty account cleanup logic when withdrawal amount is 0
- Check for empty accounts to delete after applying all withdrawals, much in the same way we check at the end of transaction computations. - Add a test for testing withdrawal retrieval from the chaindb - Minor refactoring and fixes
- Add a deprecate method wrapper - Use this to wrap the opcode instructions for ``SELFDESTRUCT`` in the ``SHANGHAI_OPCODES`` - Add tests to make sure the deprecation warning is only listed for ``SELFDESTRUCT`` and only within the Shanghai VM
- Update ``eth-typing`` to ``3.3.0`` - Use ``ForkName.Shanghai`` value in tests
- Create a more general class method for validating the create message as a whole and bring the initcode size validation into that. This way, if other fields of the create message need validation in the future, we have a more useful method that's already abstracted and can be invoked in the proper VM computation class. - Consume the initcode cost before the computation starts for create transactions and handle initcode cost in the opcode implementations for ``CREATE`` and ``CREATE2``.
- All test vectors now applied to ``Shanghai`` rules.
- Tests that fit into the INCORRECT_UPSTREAM_TESTS in ``test_blockchain.py`` - Tests that time out
448b81b
to
b88d6bd
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me! I just left a tiny nit and a question.
What was wrong?
Shanghai fork support needed:
How was it fixed?
Notes:
- The
fixtures
submodule (ethereum/tests
) was updated to the latestv12
.- There are many Shanghai
ethereum/tests
related to EOF even though this was kicked down the line to theCancun
hard fork. I've turned these off for now with a TODO to turn these back on once EOF is implemented. Currently, all other Shanghai-related tests are passing.Todo:
Merge
andLondon
tests fromethereum/tests
fixture updateCute Animal Picture