def work(port, sub_dir=None): # BlockChain setup set_database_path(sub_dir=sub_dir) builder.set_database_path() make_account_db() genesis_block, network_ver, connections = load_boot_file() logging.info("Start p2p network-ver{} .".format(network_ver)) # P2P network setup setup_p2p_params(network_ver=network_ver, p2p_port=port, sub_dir=sub_dir) pc = PeerClient() pc.event.addevent(cmd=DirectCmd.BEST_INFO, f=DirectCmd.best_info) pc.event.addevent(cmd=DirectCmd.BLOCK_BY_HEIGHT, f=DirectCmd.block_by_height) pc.event.addevent(cmd=DirectCmd.BLOCK_BY_HASH, f=DirectCmd.block_by_hash) pc.event.addevent(cmd=DirectCmd.TX_BY_HASH, f=DirectCmd.tx_by_hash) pc.event.addevent(cmd=DirectCmd.UNCONFIRMED_TX, f=DirectCmd.unconfirmed_tx) pc.event.addevent(cmd=DirectCmd.BIG_BLOCKS, f=DirectCmd.big_blocks) pc.start() V.PC_OBJ = pc if pc.p2p.create_connection('tipnem.tk', 2000): logging.info("1Connect!") elif pc.p2p.create_connection('nekopeg.tk', 2000): logging.info("2Connect!") for host, port in connections: pc.p2p.create_connection(host, port) set_blockchain_params(genesis_block) # BroadcastProcess setup pc.broadcast_check = broadcast_check # Update to newest blockchain builder.init(genesis_block, batch_size=500) builder.db.sync = False # more fast sync_chain_loop() # Mining/Staking setup (nothing) # Contract watcher start_contract_watch() # Debug.F_STICKY_TX_REJECTION = False # for debug logging.info("Finished all initialize. (no mining and staking)") try: create_rest_server(f_local=False, port=port + 1000, user='******', pwd='password') P.F_STOP = True builder.close() pc.close() except KeyboardInterrupt: logging.debug("KeyboardInterrupt.")
def _work(params, start_tx, que): set_database_path(sub_dir=params["sub_dir"]) set_blockchain_params(genesis_block=params['genesis_block']) try: virtual_machine = rpdb.Rpdb(port=0) que.put((CMD_PORT, virtual_machine.port)) virtual_machine.server_start() c_obj = binary2contract(params['c_bin']) # remote emulate virtual_machine.set_trace() obj = c_obj(start_tx, params['c_address']) fnc = getattr(obj, params['c_method']) result = fnc(*params['args']) que.put((CMD_SUCCESS, result)) virtual_machine.do_quit('quit') except BaseException: tb = traceback.format_exc() que.put((CMD_ERROR, str(tb)))
def work(port, sub_dir=None): # BlockChain setup set_database_path(sub_dir=sub_dir) builder.set_database_path() make_account_db() genesis_block, network_ver, connections = load_boot_file() logging.info("Start p2p network-ver{} .".format(network_ver)) # P2P network setup setup_p2p_params(network_ver=network_ver, p2p_port=port, sub_dir=sub_dir) pc = PeerClient() pc.event.addevent(cmd=DirectCmd.BEST_INFO, f=DirectCmd.best_info) pc.event.addevent(cmd=DirectCmd.BLOCK_BY_HEIGHT, f=DirectCmd.block_by_height) pc.event.addevent(cmd=DirectCmd.BLOCK_BY_HASH, f=DirectCmd.block_by_hash) pc.event.addevent(cmd=DirectCmd.TX_BY_HASH, f=DirectCmd.tx_by_hash) pc.event.addevent(cmd=DirectCmd.UNCONFIRMED_TX, f=DirectCmd.unconfirmed_tx) pc.event.addevent(cmd=DirectCmd.BIG_BLOCKS, f=DirectCmd.big_blocks) config.C.MAX_RECEIVE_SIZE = 2000 * 1000 # 2Mb pc.start() V.PC_OBJ = pc if pc.p2p.create_connection('tipnem.tk', 2000): logging.info("Connect!") for host, port in connections: pc.p2p.create_connection(host, port) set_blockchain_params(genesis_block) # BroadcastProcess setup pc.broadcast_check = broadcast_check # Update to newest blockchain builder.init(genesis_block, batch_size=500) builder.db.sync = False # more fast but unstable sync_chain_loop() # Mining/Staking setup start_work_hash() # Debug.F_CONSTANT_DIFF = True # Debug.F_SHOW_DIFFICULTY = True # Debug.F_STICKY_TX_REJECTION = False # for debug Generate(consensus=C.BLOCK_YES_POW, power_limit=0.05).start() Generate(consensus=C.BLOCK_HMQ_POW, power_limit=0.05).start() Generate(consensus=C.BLOCK_X11_POW, power_limit=0.05).start() Generate(consensus=C.BLOCK_POS, power_limit=0.3).start() # Contract watcher start_contract_watch() Thread(target=mined_newblock, name='GeneBlock', args=(output_que, pc)).start() logging.info("Finished all initialize.") try: create_rest_server(f_local=True, port=port + 1000, user='******', pwd='password') P.F_STOP = True builder.close() pc.close() close_contract_watch() close_generate() close_work_hash() close_sync() except KeyboardInterrupt: logging.debug("KeyboardInterrupt.")
def work(port, sub_dir): # BlockChain setup set_database_path(sub_dir=sub_dir) builder.set_database_path() copy_boot(port) make_account_db() genesis_block, network_ver, connections = load_boot_file() logging.info("Start p2p network-ver{} .".format(network_ver)) # P2P network setup setup_p2p_params(network_ver=network_ver, p2p_port=port, sub_dir=sub_dir) pc = PeerClient(f_local=True) pc.event.addevent(cmd=DirectCmd.BEST_INFO, f=DirectCmd.best_info) pc.event.addevent(cmd=DirectCmd.BLOCK_BY_HEIGHT, f=DirectCmd.block_by_height) pc.event.addevent(cmd=DirectCmd.BLOCK_BY_HASH, f=DirectCmd.block_by_hash) pc.event.addevent(cmd=DirectCmd.TX_BY_HASH, f=DirectCmd.tx_by_hash) pc.event.addevent(cmd=DirectCmd.UNCONFIRMED_TX, f=DirectCmd.unconfirmed_tx) pc.event.addevent(cmd=DirectCmd.BIG_BLOCKS, f=DirectCmd.big_blocks) pc.start() V.PC_OBJ = pc # for debug node if port != 2000 and pc.p2p.create_connection('127.0.0.1', 2000): logging.info("Connect!") else: pc.p2p.create_connection('127.0.0.1', 2001) for host, port in connections: pc.p2p.create_connection(host, port) set_blockchain_params(genesis_block) # BroadcastProcess setup pc.broadcast_check = broadcast_check # Update to newest blockchain builder.init(genesis_block, batch_size=500) # builder.db.sync = False # more fast sync_chain_loop() # Mining/Staking setup start_work_hash() # Debug.F_CONSTANT_DIFF = True # Debug.F_SHOW_DIFFICULTY = True # Debug.F_STICKY_TX_REJECTION = False # for debug if port % 3 == 0: Generate(consensus=C.BLOCK_YES_POW, power_limit=0.01).start() if port % 3 == 1: Generate(consensus=C.BLOCK_HMQ_POW, power_limit=0.01).start() if port % 3 == 2: Generate(consensus=C.BLOCK_X11_POW, power_limit=0.01).start() Generate(consensus=C.BLOCK_POS, power_limit=0.3).start() # Contract watcher start_contract_watch() Emulate(c_address='CJ4QZ7FDEH5J7B2O3OLPASBHAFEDP6I7UKI2YMKF') start_emulators(genesis_block) # Stratum # Stratum(port=port+2000, consensus=C.BLOCK_HMQ_POW, first_difficulty=4) Thread(target=mined_newblock, name='GeneBlock', args=(output_que, pc)).start() logging.info("Finished all initialize.") try: # start_stratum(f_blocking=False) create_rest_server(f_local=True, port=port + 1000, user='******', pwd='password') P.F_STOP = True close_contract_watch() builder.close() # close_stratum() pc.close() close_emulators() close_contract_watch() close_generate() close_work_hash() except KeyboardInterrupt: logging.debug("KeyboardInterrupt.")
def work(port, sub_dir): # BlockChain setup set_database_path(sub_dir=sub_dir) check_already_started() chain_builder.set_database_path() copy_boot(port) import_keystone(passphrase='hello python') check_account_db() genesis_block, genesis_params, network_ver, connections = load_boot_file() logging.info("Start p2p network-ver{} .".format(network_ver)) # P2P network setup setup_p2p_params(network_ver=network_ver, p2p_port=port, sub_dir=sub_dir) p2p = Peer2Peer(f_local=True, default_hook=default_hook, object_hook=object_hook) p2p.event.addevent(cmd=DirectCmd.BEST_INFO, f=DirectCmd.best_info) p2p.event.addevent(cmd=DirectCmd.BLOCK_BY_HEIGHT, f=DirectCmd.block_by_height) p2p.event.addevent(cmd=DirectCmd.BLOCK_BY_HASH, f=DirectCmd.block_by_hash) p2p.event.addevent(cmd=DirectCmd.TX_BY_HASH, f=DirectCmd.tx_by_hash) p2p.event.addevent(cmd=DirectCmd.UNCONFIRMED_TX, f=DirectCmd.unconfirmed_tx) p2p.event.addevent(cmd=DirectCmd.BIG_BLOCKS, f=DirectCmd.big_blocks) p2p.start() V.P2P_OBJ = p2p # for debug node if port != 2000 and p2p.core.create_connection('127.0.0.1', 2000): logging.info("Connect!") else: p2p.core.create_connection('127.0.0.1', 2001) for host, port in connections: p2p.core.create_connection(host, port) set_blockchain_params(genesis_block, genesis_params) # BroadcastProcess setup p2p.broadcast_check = broadcast_check # Update to newest blockchain chain_builder.db.sync = False if chain_builder.init(genesis_block, batch_size=500): # only genesisBlock yoy have, try to import bootstrap.dat.gz load_bootstrap_file() sync_chain_loop() # Mining/Staking setup # Debug.F_CONSTANT_DIFF = True # Debug.F_SHOW_DIFFICULTY = True # Debug.F_STICKY_TX_REJECTION = False # for debug if port == 2000: Generate(consensus=C.BLOCK_CAP_POS, power_limit=0.6, path='E:\\plots').start() elif port % 3 == 0: Generate(consensus=C.BLOCK_YES_POW, power_limit=0.03).start() elif port % 3 == 1: Generate(consensus=C.BLOCK_X16S_POW, power_limit=0.03).start() elif port % 3 == 2: Generate(consensus=C.BLOCK_X11_POW, power_limit=0.03).start() Generate(consensus=C.BLOCK_COIN_POS, power_limit=0.3).start() # contract emulator Emulate(c_address='CJ4QZ7FDEH5J7B2O3OLPASBHAFEDP6I7UKI2YMKF') # Emulate(c_address='CLBKXHOTXTLK3FENVTCH6YPM5MFZS4BNAXFYNWBD') start_emulators() Thread(target=mined_newblock, name='GeneBlock', args=(output_que,)).start() logging.info("Finished all initialize.") try: create_rest_server(user='******', pwd='password', port=port+1000) loop.run_forever() except Exception as e: logging.debug(e) P.F_STOP = True chain_builder.close() p2p.close()