-
Account "enf": this account will be used to represent on-chain activities that signed by ENF. It will create 4 sub-accounts named admin1.enf, admin2.enf, admin3.enf, admin4.enf, each of those will be associated with a physical person in ENF. It requires 2 out of 4 admin's signatures to satisfy the permission of enf@active.
-
Account "eosio.evm": this is the main account for EVM smart contract (evm_runtime.wasm and evm_runtime.abi, to be disclosed later), which has the following main actions:
- init: action for bootstrapping the EVM chain.
- pushtx: the main entry point of pushing a signed EVM transaction, including the bridging transaction from EVM to EOS
- notification on eosio.token::transfer: the notification handler for token bridging from EOS to EVM
- freeze: emergency action to freeze & unfreeze the EVM contract. If the contract is freezed, users are not allow to push EVM transaction nor use the bridge.
As illustrated above:
-
Account "enf" will have owner permission satisfied by eosio.grants@active, and active permission will be satisfied by 2 out of 4 admins.
-
Account "eosio.evm":
- owner: this always set to eosio@active, so that 15/21 BP can co-sign to satisfy this
- active: this permission is mainly for contract deployment / upgrade. As compared to eosio@active which required 15 BP approvals, it is the fast path which allow ENF + 3BPs (out of 5 preselected BPs) to satify.
- threshold: 6
- enf: weight 3
- pre-seletect BP1: weight 1
- pre-seletect BP2: weight 1
- pre-seletect BP3: weight 1
- pre-seletect BP4: weight 1
- pre-seletect BP5: weight 1
- freeze: a special permission to freeze all EVM activities in emergency. this will only linked to the "freeze" action and enf itself can satisfy.
-
for testnet, the proposal would be:
- proposal name: create.evm
- proposer: any account is fine
- approver list: the current 21 BPs, plus eosio@active (short cut)
- proposing transaction: to create eosio.evm with the above permission structure. (with ENF's weight set to 6 to facilitate EVM contract deployment and bootstrapping, ENF will set it back to 3 after bootstrap).
- expiring time: around 1 year
-
in jungle4:
- to check the current proposed msig transaction:
cleos -u https://jungle4.cryptolions.io:443 multisig review hello1111111 create.evm
- to check the approval status:
cleos -u https://jungle4.cryptolions.io:443 get table eosio.msig hello1111111 approvals2
- to check the current proposed msig transaction:
-
for mainnet, the proposal would be:
- proposal name: create.evm
- proposer: account that created by enf or related with enf
- approver list: the current 21 BPs, plus some of the standby BPs.
- proposing transaction: to create eosio.evm with the above permission structure.
- expiring time: around 1 year