This project is designed and implemented to full-fill EOSIO Challenge. It provides

  • An eosio smart contract to simulate EVM eos-challenge-contract
  • An SDK to deploy and use the contract eos_evm_sdk
  • A tester project vm-test to test the contract using eth tests
  • Practical use cases discussion in real world
  • Detailed documentations

medium link youtube link

Features and Highlights

terms, e.g. BFSP, account types, are explained in Appendix

  • Simulate an EVM Interpreter in EOSIO smart contract and execute EVM transactions as faithfully to the Ethereum Yellow Paper as possible
  • NO CHANGES to the EOSIO software
  • Follow EVMC standard.
  • Fully support all EVMC_REVISIONs
  • An tester project vm-test is developed to test VMTest
  • Support dry-run transaction execution. //simulate action in smart contract
  • Example EVM contracts are provided.
  • Use cases and extensions are discussed here.
  • a demo account in test-net can be found here
  • Detailed Functions
    • EOS user can create a eth address associated with his/her EOS account, and use EOS account private key to execute challenge transactions.
    • ETH user can create an account through BFSP by provide an eth address. Afterwards the ETH user can call EVM contracts (deployed in challenge contract) exactly the same way as in ETH, except that a BFSP is needed to forward transactions.
    • The challenge contract can link customisable external token contract and symbol.
    • Associated accounts can transfer/withdraw linked token between external token contract and challenge contract.
    • All accounts can use EVM transfer transaction to send linked token inside the challenge contract.
    • All accounts can deploy and execute EVM bytecode, and contract address is created following ETH rules.
    • GAS fee is calculated but not billed.
    • Persist smart contract data with native EOSIO multi-index. Revert dirty state if vm execution failed.
    • Detailed challenge requirements are discussed in "eos-challenge-contract project", such as GAS fee, chain-id, nonce and so on.

Built With

Share this project: