Skip to content

EOS EVM Contract v0.6.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@arhag arhag released this 12 Sep 19:09
· 4 commits to release/0.6 since this release
ba45aa0

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


Full Changelog: v0.5.2...v0.6.0-rc1