tokenika / eosfactory

Python-based EOS smart-contract development & testing framework
http://eosfactory.io/
Other
243 stars 62 forks source link

when i use local testnet, how I use eosio.system? #92

Closed firesWu closed 5 years ago

firesWu commented 5 years ago

When I deploy eosio.system in local testnet , I can use it, because it has this code.

if manager.is_local_testnet():
     return
stefanzarembinski commented 5 years ago

You can follow an eosio archive article: https://developers.eos.io/eosio-nodeos/docs/bios-boot-sequence

With EOSFactory, it can be implemented as it follows:

##############################################################################

import os from eosfactory.eosf import * import eosfactory.core.cleos as cleos import eosfactory.core.setup as setup import eosfactory.core.config as config

eosio_contracts_dir = os.path.join( config.eosio_repository_dir(), "build/contracts")

reset()

create_master_account("eosio")

COMMENT('''Create important system accounts''')

create_account("eosio_bpay", eosio, "eosio.bpay") create_account("eosio_msig", eosio, "eosio.msig") create_account("eosio_names", eosio, "eosio.names") create_account("eosio_ram", eosio, "eosio.ram") create_account("eosio_ramfee", eosio, "eosio.ramfee") create_account("eosio_saving", eosio, "eosio.saving") create_account("eosio_stake", eosio, "eosio.stake") create_account("eosio_token", eosio, "eosio.token") create_account("eosio_vpay", eosio, "eosio.vpay")

COMMENT('''Install the eosio.token contract''')

contract = "eosio.token" Contract( contract, os.path.join(eosio_contracts_dir, contract), abi_file = contract + ".abi", wasm_file = contract + ".wasm" ).deploy()

COMMENT('''Set the eosio.msig contract''')

contract = "eosio.msig" Contract( contract, os.path.join(eosio_contracts_dir, contract), abi_file = contract + ".abi", wasm_file = contract + ".wasm" ).deploy()

COMMENT('''Create and allocate the SYS currency''')

eosio_token.push_action( "create", [eosio, "10000000000.0000 SYS"], (eosio_token, Permission.ACTIVE))

eosio_token.push_action( "issue", [eosio, "1000000000.0000 SYS", "memo"], (eosio, Permission.ACTIVE))

COMMENT('''Set the eosio.system contract''')

contract = "eosio.system" Contract( eosio, os.path.join(eosio_contracts_dir, contract), abi_file = contract + ".abi", wasm_file = contract + ".wasm" ).deploy()

##############################################################################

However, this code fails due to a bug in nodeos (notorious "Transaction took too long")

We patch the bug in the new edition of EOSFactory, coming soon. There, we write an article on eosio 'BIOS Boot Sequence' as implemented with EOSFactory