EOS EVM Contract v0.6.0
This release rearranges how EOS EVM components are organized within the eos-evm repository. This repository now only contains the EOS EVM Contract which has been upgraded to provide new functionality in support of an enhanced Trustless Bridge.
New features
Enhancements to the Trustless Bridge
Prior to this release, the Trustless Bridge of the EOS EVM only supporting the EOS token between the EVM and EOS environments.
This release adds two new mechanism which provide the foundation necessary for other components to expand the Trustless Bridge far beyond its initial capabilities:
call
action- Bridge messages
The release of EOS EVM Bridge Contracts demonstrates how these mechanisms can be used to enable other tokens on EOS such as USDT to be moved across the Trustless Bridge to the EOS EVM side and then back to to the EOS Native side.
call
action
The EOS EVM Contract now has a new action named call
which is similar to a pushtx
except that it can be called by an EOS account under the authority of that account. For example, an EOS account test
could use the call
action to send an EVM transaction that came from the reserved address that maps to the test
account. The funds to pay for the gas and any value of the EVM transaction comes from the open balance of the test
account within the EOS EVM Contract.
Bridge messages
This release of EOS EVM Contract also introduces the mechanism of bridge messages.
Calls to the reserved address mapped to the eosio.evm
account with non-empty call data will now be treated with stricter validation. They must match a function signature that is used to emit new bridge messages on the EOS Native side. If the call data does not appropriately encode the expected function call, the EOS transaction will abort.
Assuming the encoding is correct, further validation is done by the EOS EVM Contract. The receiver account specified in the function call must be registered as a receiver in the EOS EVM Contract. Furthermore, if it enforces a minimum fee, the value transferred alongside the call to the reserved address mapped to the eosio.evm
account must be no less than minimum fee specified by the registered receiver. If these conditions are not met, the EOS transaction will abort.
If the conditions are met, a onbridgemsg
inline action is sent by EOS EVM Contract to the handler account specified by the registered receiver which contains the data relevant to the emitted bridge message.
Building, compatibility, and upgrading
Building
The README in the eos-evm repository contains instructions on how to build EOS EVM Contract.
Compatibility and upgrading
EOS EVM Contract can be upgraded from the prior 0.5.2 version by simply deploying the WASM and ABI.
Feature lifecycle updates
Removals
TX-Wrapper removed
TX-Wrapper was deprecated in the 0.5.2 release and has now been removed. Users are recommended to switch to eos-evm-miner instead.
EOS EVM Node and EOS EVM RPC moved
EOS EVM Node and EOS EVM RPC have been removed from this repository. They are still supported but now live in their own eos-evm-node repository.
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
- (564) Remove SSH URL for git submodules
- (520) update contract unit tests to work with libtester from leap's main branch
- (561) Update nonce description in deployment docs
- (380) Add scripts to measure EVM contract performance
- (595) [0.5 -> main] EstimateGasOracle: fix estimate_gas; Return better result when accessed by GET
- (599) [0.5->main]Handle transfers from reserved address in the same way as other places
- (580) Fix documentation
- (623) [0.5 -> main] Enforce chain-id in transactions pushed to the contract
- (628) Repository refactor
- (639) Reduce artifact size remove obj
- (634) Add call actions
- (641) Update silkworm submodule
- (643) Bridge basic message emission (2)
- (646) Add assertnonce action.
- (647) Add handler option to bridge message feature.
- (652) [0.5 -> main] Change account id generation logic
- (654) [0.5 -> main] Add admin actions
- (656) [0.5 -> main] Correct processing of pushtx actions in ship_receiver_plugin
- (658) [0.5 -> main] bump version 0.5.2
- (659) Update silkworm
- (660) Bump 0.6.0-rc1 version
- (664) [0.6] Bump 0.6.0 version
Full Changelog: v0.5.2...v0.6.0