EOS EVM v0.4.1 Release Notes
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
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
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
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