Skip to content

EOS EVM v0.5.0 Release Notes

Compare
Choose a tag to compare
@arhag arhag released this 15 Jun 00:46
· 24 commits to release/0.5 since this release
12288f1

This release contains changes to all major components of the EOS EVM.

Components

EOS EVM Contract

Action to execute read-only transactions

PRs

  • (547) Add read-only transaction execution support to EVM contract


The EOS EVM contract now has a new action called exec which allows the caller to execute EVM code and get the return value. No side-effects will be committed to state and this action is intended to be used for read-only executions, e.g. calling Solidity view functions.

There are two ways of getting the return value. If no callback is specified in the arguments of the exec action, then the EVM contract message call return value will be included as part of the return value of the exec action. Otherwise, if a callback (of the form of a contract account name and action name) is specified, the EOS EVM Contract will deliver the return value as an inline action call made to contract specified in the callback.

This feature is a necesssary component for Yield+ integration with the EOS EVM.

Increased stack size to allow deeper nested calls

PRs

  • (474) Remove advanced execution to increase nested call level


The EOS EVM Contact has a limit on the stack used within WASM linear memory. This puts a limit to how deeply nested EVM contract calls can get within the EVM implementation before it runs out of stack.

The stack limit in prior releases allow nested calls to get to a depth of 5. Optimizations in the EOS EVM Contract implementation have allowed for almost doubling the stack size which has correspondingly increased the EVM call depth limit by a significant amount thus enabling contract use cases that may have been rejected before.

Other improvements to the EOS EVM Contract

PRs

  • (521) fix #465 #451 extra param for withdraw, inevm table abi
  • (544) Reject non eos token in bridging
  • (541) Return error number and more descriptive message when validation failed


The inevm table now shows up in the ABI which should allow for easy exploration of the total sum of the EOS balances within the EVM environment using an EOS block explorer. Note that this balance does not include any of the other balances held by the EOS EVM Contract on the EOS side, e.g. the accumulated gas fees in the eosio.evm balances or the balances of miners who have explicitly opened an account in the contract using the open action.

The withdraw action has been modified to take an optional extra argument called to. Normally, when to is not specified, the funds beloging to the owner are withdraw to the balance within the eosio.token contract belonging to owner. If to is specified, then the funds are instead sent to the to account.

The EOS EVM Contract will now reject any non-EOS tokens, e.g. USDT, that are sent to it. As a reminder, the trustless bridge does not yet support any tokens other than EOS.

A more descriptive error message is now returned if validation of a pushed EVM transaction fails.

EOS EVM Node and RPC

Various bug fixes

PRs

  • (538) [0.4 -> main] fix silkworm stability
  • (553) eth_call: use default from address when not specified
  • (555) Fix Wrong History Index
  • (557) Fix gas estimation return value
  • (593) [0.5] EstimateGasOracle: fix estimate_gas


A bug in the history index of EOS EVM Node was fixed. This bug caused the block explorer to show incorrect records. To resolve this issue in an already deployed instance, it is necessary to replay the EOS EVM Node and then it is necessary to re-index the block explorer that used data from the buggy EOS EVM Node.

Additional bugs in EOS EVM RPC were fixed. An eth_call request without an explicit from value specified now works correctly. Gas estimation now returns expected responses under certain error conditions, and other fixes were made to gas estimation in EOS EVM RPC.

TX-Wrapper

Configurable permission and expiration

PRs

  • (503) configurable permission in tx_wrapper


Prior to this release, TX-Wrapper had a hard-coded expiration for the EOS wrapped transaction set to 50 minutes in the future. In this release, the expiration time is configurable with the optional EXPIRE_SEC parameter (takes the expiration duration in seconds). If not specified, the expiration time will default to 5 minutes.

TX-Wrapper also now requires an additional parameter EOS_PERMISSION to set the permission to use for the miner's authorization of the pushtx action. To maintain existing behavior, ensure this parameter is set to "active". The permission can be changed to a custom permission on the account specified by EOS_SENDER. However, ensure that linkauth is used to allow that custom permission to satisfy the pushtx action of the EOS EVM Contract, otherwise TX-Wrapper will not function correctly.

Building, compatibility, and upgrading

Building

The README in the eos-evm repository contains instructions on how to build the components.

Compatibility and upgrading

The components can be upgraded from any prior 0.4.x release.

The EOS EVM Contract is simply upgrading by deploying the WASM and ABI.

EOS EVM Node needs to replay from genesis. Block explorers leveraging data from EOS EVM Node are recommended to re-index.

The .env file used by TX-Wrapper should first ensure the line EOS_PERMISSION="active" is added before starting the new TX-Wrapper to ensure it can start up and behave the same way as before.

Deprecations, removals, and dropped support

TX-Wrapper deprecated

TX-Wrapper has been deprecated and will be removed in a future release. Users are recommended to switch to eos-evm-miner instead.

Further details on changes since last release

Contributors

Special thanks to the contributors that submitted patches for this release:

Full list of changes since last release

PRs

  • (505) [0.4 -> main] Bring recent 0.4.x changes into main. Bump version to 0.5.0
  • (508) [0.4 -> main] add missing nginx log settings
  • (511) Update README to include links to EOS EVM docs and evm-public-docs
  • (503) configurable permission in tx_wrapper
  • (522) Remove flask_proxy
  • (532) evmone version
  • (534) [0.4 -> main] Enable keep alive to read and test endpoint
  • (538) [0.4 -> main] fix silkworm stability
  • (521) fix #465 #451 extra param for withdraw, inevm table abi
  • (544) Reject non eos token in bridging
  • (546) add some additional tests for invalid addresses in EOS->EVM bridge memos
  • (550) more briging tests
  • (474) Remove advanced execution to increase nested call level
  • (553) eth_call: use default from address when not specified
  • (555) Fix Wrong History Index
  • (557) Fix gas estimation return value
  • (541) Return error number and more descriptive message when validation failed
  • (547) Add read-only transaction execution support to EVM contract
  • (593) [0.5] EstimateGasOracle: fix estimate_gas
  • (594) [0.5] Return better result when accessed by GET


Full Changelog: v0.4.2...v0.5.0