EVM/Exec: implement EIP-3860
Context
Fix #6894 (closed).
See EIP-3860 for more informations.
Here is more context on why we need the hack on the third commit, here are the 2 problematic parts of the code from evm-runtime-0.39.0
:
Where handler's create
function is called:
The problematic internal behaviour:
All the explanation needed is in the comment of the third commit.
Manually testing the MR
Added unit test exceed_max_create_init_code_size_fails
.
With the evm-evaluation-assessor
we have this diff:
stEIP3860-limitmeterinitcode_creationTxInitCodeSizeLimit_data_index_0_gas_index_0_value_index_0: Failure -> Success
stEIP3860-limitmeterinitcode_create2InitCodeSizeLimit_data_index_1_gas_index_0_value_index_0: Failure -> Success
Note that there is still 2 " failing " tests in that subdir.
One we're not actually failing there is an exception expected when it shouldn't (we skipped it in the evaluation).
The second one we pass 8 checks out of 9, the last one being a gas computation discrepancy, the logic is still good the problem lies once again in the gas computation (which is fixed when combined with !11814 (merged)).
Checklist
-
Document the interface of any function added or modified (see the coding guidelines) -
Document any change to the user interface, including configuration parameters (see node configuration) -
Provide automatic testing (see the testing guide). -
For new features and bug fixes, add an item in the appropriate changelog ( docs/protocols/alpha.rst
for the protocol and the environment,CHANGES.rst
at the root of the repository for everything else). -
Select suitable reviewers using the Reviewers
field below. -
Select as Assignee
the next person who should take action on that MR