Skip to content

Latest commit

 

History

History
35 lines (20 loc) · 2.5 KB

msig_evm_bootstrap.md

File metadata and controls

35 lines (20 loc) · 2.5 KB

Multi-sig EVM account bootstrapping

Overview:

This document will describe the multisig bootstrapping process of EVM contract in mainnet, after the creation of account eosio.evm (see https://github.com/eosnetworkfoundation/evm-public-docs/blob/main/msig_contract_deployment/msig_account_creation.md for previous multisig of eosio.evm account creation ).

Current proposed EVM bootstrapping multisig on mainnet is: https://bloks.io/msig/admin1.enf/evmboot

The following actions are included in the above multisig:

  • Action 1 & 2: set code & set ABI:

    the EVM contract code (with hash 885f087ffedf8b7163661430a5cf9cb8c9dd5ea0e137c806d50ca5bc7e4a1271) was compiled and verified in the following environment:

    • contract commit hash: f7583bf613635be75b79d4055a5660289136b09f (HEAD -> main, tag: v0.4.0-rc1)
    • clang version 11
    • cdt-cpp version 3.1.0
  • Action 3: eosio.evm::init:

    This is the init action to initialize the smart contract, which contains the following pararmeters:

    • chainid: 17777, mainnet
    • gas price: 150000000000, which means 150 Gwei is the required gas price. transaction will fails if the gas price is less than 150 Gwei.
    • miner_cut: 10000, which means 10% of the gas fee go to the miner account (that offer CPU & NET resources, but not RAM). The rest 90% will go to eosio.evm to cover the RAM cost.
    • ingress_bridge_fee: 0.0100 EOS. a fixed fee of 0.01 EOS will be charged for each bridging action from EOS world to EVM world. so if and EOS account x transfer 1 EOS to EVM account b, b will get 0.99 EOS. This won't apply in the other direction (EVM->EOS).
  • Action 4: eosio.evm::freeze with value = true

    This action is to temporarily freeze the smart contract, disallowing users to push any EVM actions, or transfer token from/to the EVM world via the bridge, or withdraw miner balance. We will freeze the contract until the main launch date in case any patches are required.

  • Action 5 & 6: create eosio.evm::freeze permission and link the freeze action to eosio.evm::freeze permission. Please refer to the permission structure of eosio.evm as illustrated in https://github.com/eosnetworkfoundation/evm-public-docs/blob/main/msig_contract_deployment/msig_account_creation.md.

According to the current permission structure of eosio.evm::active (see https://bloks.io/account/eosio.evm#keys), we need 3 approvals from atticlabeosb, bp.defi, eosasia11111, eosnationftw or newdex.bp, plus the approval of enf to satisfy eosio.evm::active in order to execute this multisig proposal.