Skip to content

EOS EVM v0.4.1 Release Notes

Compare
Choose a tag to compare
@arhag arhag released this 26 Apr 17:28
· 7 commits to release/0.4 since this release
b2a0d83

This release contains changes to all major components of the EOS EVM, however no functional changes have been introduced to the EOS EVM Contract. Relative to deployments of v0.4.0-rc1, a significant bug fix to the fork handling logic of EOS EVM Node means that historical block hashes may change.

Components

EOS EVM Contract

There have been no functional changes to the EOS EVM Contract, however, due to the version bump, the compiled contract is not expected to be exactly the same as the v0.4.0 version of the contract.

EOS EVM Node and RPC

Fixes to fork handling in EOS EVM Node

PRs

  • (441) Fix leap fork handling in block_conversion_plugin
  • (485) Update silkworm


Bugs were found in the fork handling logic of EOS EVM Node that could be triggered by microforks of the underlying Antelope blockchains. Additionally, the fork handling logic had an additional issue that caused it to calculate incorrect block hashes. These identified problems have been fixed as of this release.

Note that block hashes accessible from contracts are not impacted by these changes. In fact, these changes to not introduce any functional differences to the EOS EVM Contract. The fixes are localized to the behavior of the EOS EVM Node and also the EOS EVM RPC that depends on the state generated by the EOS EVM Node. However, due to changes to historical block hashes that could be introduced by this bug fix, any clients that depended on block hash values retrieved from the EOS EVM RPC prior to this release will need to investigate how changes to the block hashes may impact their operations.

Improvements to EOS EVM RPC

PRs

  • (388) Fix eth_getLogs result for null topic
  • (430) Prevent calls to eth_sendRawTransaction and eth_gasPrice


The results of eth_getLogs will now return correct results if the null topic is specified. There is still a known issue remaining with the results of eth_getLogs when a non-null topic is specified. That issue is tracked in #394.

EOS EVM RPC will reject eth_sendRawTransaction and eth_sendTransaction requests since these mutating requests and EOS EVM RPC is only designed to handle read requests for now. The eth_sendRawTransaction request is instead handled by TX-Wrapper. EOS EVM RPC will additionally reject eth_gasPrice requests since it does not currently support it; the eth_gasPrice requests should instead go to TX-Wrapper which is built to properly handle those requests for the EOS EVM network.

TX-Wrapper

Support multiple Leap endpoints

PRs

  • (447) support multiple endpoints in tx_wrapper
  • (459) Update README.md


The EOS_RPC variable in the .env file which configures TX-Wrapper can now support multiple Leap endpoints separated by |. This allows for a deployment to have higher availability by falling back to other Leap nodes if the primary one becomes unavailable.

Building, compatibility, and upgrading

Building

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

Compatibility and upgrading

Since there were no functional changes introduced to the EOS EVM Contract with this release, there is no need to upgrade the contract from v0.4.0 (or even v0.4.0-rc1) to v0.4.1. However, if an upgrade is desired, it is as simple as doing a setcode and setabi with the new WASM and ABI files, respectively.

If this version is replacing an existing v0.4.0-rc1 deployment, then reindexing of the EOS EVM Node and RPC is required to resolve a bug with the fork handling which may have caused invalid block hashes to be reported by the RPC. If this version is replacing an existing v0.4.0 deployment, then EOS EVM Node and EOS EVM RPC programs can simply be replaced and restarted.

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

Due to a late tag of the official v0.4.0 release which was waiting on some renaming within the repository prior to open sourcing, and the fact that v0.4.0-rc1 was the version of the Contract and other components that was initially deployed to the EOS mainnet, the list below also includes PRs that were merged in after the v0.4.0-rc1 tag but before the v0.4.0 tag. This is an exceptional situation and going forward only one changelog comparison should be necessary for each release.

PRs

  • (390) health_helper initial commit
  • (388) Fix eth_getLogs result for null topic
  • (385) Nginx proxy update
  • (441) Fix leap fork handling in block_conversion_plugin
  • (430) Prevent calls to eth_sendRawTransaction and eth_gasPrice
  • (412) update flask_proxy
  • (431) Implement graceful shutdown for tx_wrapper
  • (414) Remove debug access_log
  • (443) remove unused (and removed in Leap's main) WAVM header from contract tests
  • (446) script tweaks
  • (447) support multiple endpoints in tx_wrapper
  • (459) Update README.md
  • (485) Update silkworm
  • (489) Bump version to 0.4.1
  • (491) proxy cors
  • (490) Repo cleanup and EOS EVM rename
  • (500) Add MIT license for contract
  • (502) Bring changes from 0.4-hotfix into release/0.4 branch
  • (506) add missing nginx log settings


Full Changelog from v0.4.0: v0.4.0...v0.4.1
Full Changelog from v0.4.0-rc1: v0.4.0-rc1...v0.4.1