Skip to content

evmone 0.12.0

Latest
Compare
Choose a tag to compare
@chfast chfast released this 08 Aug 12:26
· 54 commits to master since this release
v0.12.0
bf6c91d

This release is focused on the Prague upgrade and EOF.

Added

  • Added evmone-precompiles-bench tool to benchmark precompiles. #765
  • Added native implementations of the precompiled hash functions:
  • Added validate_eof EVMC option to validate EOF before execution. This option is enabled by default in evmc run. #768 #960
  • Implemented EIP-7610 "Revert creation in case of non-empty storage" in the testing infrastructure. #816
  • Added --version option to testing tools. #902
  • Introduce TestState and TestAccount to testing infrastructure. #811
  • Added support for validating "initcode" containers in eofparse and eoftest. #934 #943

Changed

  • EVM Object Format (EOF)

    Completed implementation of the EIP-7692: EVM Object Format (EOFv1) Meta.

    • Added EOFCREATE and RETURNCONTRACT instructions. #553
    • Added TXCREATE instruction, later moved to the future EOF version (Osaka). #702 #889
    • Make EXT*CALL instructions Address Space Expansion ready. #915
    • Added EOF validation of sub-container kinds. #876
    • Limit validated container size to MAX_INITCODE_SIZE. #930
    • Added RETURNDATALOAD instruction. #786
    • Implementation of "less restricted" stack validation. #676
    • Added implementation of EXCHANGE from EIP-663. #839
    • Disallow unreachable code sections in EOF containers. #721 #866
    • Restrict DUPN and SWAPN to EOF only in EOF only. #788
    • Change DATA* opcodes. #797
    • Disable EOF ↔ legacy cross-creation. #825
    • Deprecate and reject code/gas-observability in EOF. #834
    • Make EOF opaque for EXTCODE* instructions. #587
    • Implement EOF creation transactions. #878
    • Modify EOF RETURNDATA* to allow out-of-bounds reads (instead of failing execution). #909
    • Tune EOF validation: disallow truncated data in top-level EOF containers. #921
    • Disallow unreferenced sub-containers and sub-containers of conflicting kinds. #916
  • Testing

    There are a lot of improvements to the testing tools and test formats. In particular, big portion of evmone's unit tests has been re-shaped to have a structure of State Tests or EOF Validation Tests.

    Moreover, we added the option to export these tests to JSON and the archive of the exported tests ("fixture") is the artifact of this release.

    Upgraded external test suites:

    Other details:

    • Add some missing State Test export features. #807
    • Check for unexpected EF prefix in test code. #809
    • EOF Validation Test fixture. #810
    • Export EOF validation unit tests to JSON EOF Validation Tests. #818
    • Output failed test case index in EOF Validation Tests. #820
    • Add ExportableFixture for JSON tests exporting. #821
    • Recognize all official fork/revision names. #830
    • Export State Tests with invalid transactions. #858
    • Allow "to": null in JSON transactions. #927
    • EOF Validation Tests runner: support "initcode" flag. #936
    • evmone-blockchaintest: Simplify genesis handling. #954
    • Optimization: only empty accounts are marked "touched". #785
    • Adjust ethash difficulty if below minimum 0x20000. #803
  • Requirements and dependencies updates:

  • Use 32-byte aligned allocation for Baseline stack space. #907

  • Split Baseline analysis and execution into separate files. #946

  • Convert EVMMAX to header-only library with full constexpr capabilities. #864 #964

  • Return number of errors from eofparse. #873

Fixed

  • Implement Frontier behavior of failing code deployment (testing infrastructure). #824
  • Fix error messages for compatibility with external testing tools. #828 #886
  • Fix initcode handling before EOF is enabled: an initcode staring with EF00 should not be validated as EOF unconditionally. #893
  • Fix EOF header parsing bug (introduced by code refactoring). #957 #958
  • Fix eoftest to run all tests from a JSON file. #935
  • Improve output buffer handling for precompiles in testing infrastructure. This fixes out-of-bound access for some fuzzing-generated state tests. #951