Skip to content

EVM/Exec: implement EIP-3860

Rodi-Can Bozman requested to merge rodi@functori@evm-eip-3860 into master

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:

image

The problematic internal behaviour:

image

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
Edited by Rodi-Can Bozman

Merge request reports