def service_kwargs_for_timelord( root_path: pathlib.Path, config: Dict, constants: ConsensusConstants, ) -> Dict: connect_peers = [PeerInfo(config["full_node_peer"]["host"], config["full_node_peer"]["port"])] overrides = config["network_overrides"]["constants"][config["selected_network"]] updated_constants = constants.replace_str_to_bytes(**overrides) node = Timelord(root_path, config, updated_constants) peer_api = TimelordAPI(node) network_id = config["selected_network"] kwargs = dict( root_path=root_path, peer_api=peer_api, node=node, node_type=NodeType.TIMELORD, advertised_port=config["port"], service_name=SERVICE_NAME, server_listen_ports=[config["port"]], connect_peers=connect_peers, auth_connect_peers=False, network_id=network_id, ) return kwargs
def service_kwargs_for_farmer( root_path: pathlib.Path, config: Dict, config_pool: Dict, keychain: Keychain, consensus_constants: ConsensusConstants, ) -> Dict: connect_peers = [] fnp = config.get("full_node_peer") if fnp is not None: connect_peers.append(PeerInfo(fnp["host"], fnp["port"])) overrides = config["network_overrides"]["constants"][config["selected_network"]] updated_constants = consensus_constants.replace_str_to_bytes(**overrides) farmer = Farmer(root_path, config, config_pool, keychain, consensus_constants=updated_constants) peer_api = FarmerAPI(farmer) network_id = config["selected_network"] kwargs = dict( root_path=root_path, node=farmer, peer_api=peer_api, node_type=NodeType.FARMER, advertised_port=config["port"], service_name=SERVICE_NAME, server_listen_ports=[config["port"]], connect_peers=connect_peers, auth_connect_peers=False, on_connect_callback=farmer.on_connect, network_id=network_id, ) if config["start_rpc_server"]: kwargs["rpc_info"] = (FarmerRpcApi, config["rpc_port"]) return kwargs
def service_kwargs_for_harvester( root_path: pathlib.Path, config: Dict, consensus_constants: ConsensusConstants, ) -> Dict: connect_peers = [ PeerInfo(config["farmer_peer"]["host"], config["farmer_peer"]["port"]) ] overrides = config["network_overrides"]["constants"][ config["selected_network"]] updated_constants = consensus_constants.replace_str_to_bytes(**overrides) harvester = Harvester(root_path, config, updated_constants) peer_api = HarvesterAPI(harvester) network_id = config["selected_network"] kwargs = dict( root_path=root_path, node=harvester, peer_api=peer_api, node_type=NodeType.HARVESTER, advertised_port=config["port"], service_name=SERVICE_NAME, server_listen_ports=[config["port"]], connect_peers=connect_peers, auth_connect_peers=True, network_id=network_id, ) if config["start_rpc_server"]: kwargs["rpc_info"] = (HarvesterRpcApi, config["rpc_port"]) return kwargs
def service_kwargs_for_wallet( root_path: pathlib.Path, config: Dict, consensus_constants: ConsensusConstants, keychain: Keychain, ) -> Dict: overrides = config["network_overrides"]["constants"][ config["selected_network"]] updated_constants = consensus_constants.replace_str_to_bytes(**overrides) # add local node to trusted peers if old config if "trusted_peers" not in config: full_node_config = load_config(DEFAULT_ROOT_PATH, "config.yaml", "full_node") trusted_peer = full_node_config["ssl"]["public_crt"] config["trusted_peers"] = {} config["trusted_peers"]["local_node"] = trusted_peer if "short_sync_blocks_behind_threshold" not in config: config["short_sync_blocks_behind_threshold"] = 20 node = WalletNode( config, keychain, root_path, consensus_constants=updated_constants, ) peer_api = WalletNodeAPI(node) fnp = config.get("full_node_peer") if fnp: connect_peers = [PeerInfo(fnp["host"], fnp["port"])] node.full_node_peer = PeerInfo(fnp["host"], fnp["port"]) else: connect_peers = [] node.full_node_peer = None network_id = config["selected_network"] kwargs = dict( root_path=root_path, node=node, peer_api=peer_api, node_type=NodeType.WALLET, service_name=SERVICE_NAME, on_connect_callback=node.on_connect, connect_peers=connect_peers, auth_connect_peers=False, network_id=network_id, ) port = config.get("port") if port is not None: kwargs.update( advertised_port=config["port"], server_listen_ports=[config["port"]], ) rpc_port = config.get("rpc_port") if rpc_port is not None: kwargs["rpc_info"] = (WalletRpcApi, config["rpc_port"]) return kwargs
async def setup_full_node( consensus_constants: ConsensusConstants, db_name, port, local_bt, introducer_port=None, simulator=False, send_uncompact_interval=0, sanitize_weight_proof_only=False, connect_to_daemon=False, ): db_path = local_bt.root_path / f"{db_name}" if db_path.exists(): db_path.unlink() config = local_bt.config["full_node"] config["database_path"] = db_name config["send_uncompact_interval"] = send_uncompact_interval config["target_uncompact_proofs"] = 30 config["peer_connect_interval"] = 50 config["sanitize_weight_proof_only"] = sanitize_weight_proof_only if introducer_port is not None: config["introducer_peer"]["host"] = self_hostname config["introducer_peer"]["port"] = introducer_port else: config["introducer_peer"] = None config["dns_servers"] = [] config["port"] = port config["rpc_port"] = port + 1000 overrides = config["network_overrides"]["constants"][ config["selected_network"]] updated_constants = consensus_constants.replace_str_to_bytes(**overrides) if simulator: kwargs = service_kwargs_for_full_node_simulator( local_bt.root_path, config, local_bt) else: kwargs = service_kwargs_for_full_node(local_bt.root_path, config, updated_constants) kwargs.update( parse_cli_args=False, connect_to_daemon=connect_to_daemon, ) service = Service(**kwargs) await service.start() yield service._api service.stop() await service.wait_closed() if db_path.exists(): db_path.unlink()