def Dispatch(self): for i in range(len(beacons.beacon_ips[constants.MainnetID])): beacon_hp = beacons.beacon_ips[constants.MainnetID][i] beacon_id = beacons.beacon_ids[constants.MainnetID][i] host_addr, host_port = beacon_hp.split(":") p = Peer(self.Net, conn=None, ip=IPDesc(host_addr, int(host_port)), port=int(host_port), node=self, my_staking_ip=self.Config.StakingIP) self.Config.BootstrapPeers.append(p) random.shuffle(self.Config.BootstrapPeers) for peer in self.Config.BootstrapPeers: if peer.ip.IP != self.Config.StakingIP.IP: self.Net.track(peer) else: self.Log.Error("can't add self as a bootstrapper") self.Net.Dispatch() # If the P2P server isn't running, shut down the node. # If node is already shutting down, this does nothing. self.Shutdown() # Wait until the node is done shutting down before returning self.doneShuttingDown.Wait()
def __init__(self) -> None: # the peer, if it wasn't a peer when we cloned the list this value will be # nil self.peer = Peer() # this is the validator id for the peer, we pass back to the caller for # logging purposes self.id = ShortID()
def attempt_connect(self, peer: Peer): """Returns None if a connection was able to be established, or the network is closed.""" self.Log.debug(f"Attempting to connect to {peer.ip}") conn = self.dialer.Dial(peer.ip) if conn is None: raise RuntimeError(f"Cannot connect to {peer.ip}") peer.conn = conn peer.connected = True sid = Network.id_from_ip(peer.ip) peer.id = str(sid) self.tryAddPeer(peer) return conn
def handle_msg(self, msg: bytes, peer: Peer): now = time.time() peer.lastReceived = int(now) peer.net.lastMsgReceivedTime = int(now) parsed_msg = Codec.Parse(msg) self.Log.debug(parsed_msg) oph = self.__op_handlers[parsed_msg.op] if not oph: err_str = f"No handler for op {parsed_msg.op} received from peer {peer}: Msg {parsed_msg}" avaxpython.config().logger().error(err_str) raise ValueError(err_str) oph(parsed_msg, peer)
def handle_msg(self, msg: bytes, peer: Peer): opcode = msg[0] self.avaxpython.config().logger().debug( "handle_msg called opcode {} with {} bytes from peer {}".format( opcode, len(msg), peer)) fn = "{}/{}.bin".format(self.data_dir, str(time.time())) with open(fn, "wb") as f: f.write(msg) now = time.time() peer.lastReceived = int(now) peer.net.lastMsgReceivedTime = int(now) parsed_msg = Codec.Parse(msg) oph = self.__op_handlers[parsed_msg.op] if not oph: err_str = f"No handler for op {parsed_msg.op} received from peer {peer}: Msg {parsed_msg}" self.avaxpython.config().logger().error(err_str) raise Exception(err_str) oph(parsed_msg, peer)
def get_peerlist(self, msg: Msg, peer: Peer): """Returns a list of connected Peer objects.""" avaxpython.config().logger().debug("Handling get_peerlist : Msg {} Peer {}".format(msg, peer)) peers = self.peer_state.list_connected() peer.PeerList(peers)
def get_version(self, msg: Msg, peer: Peer): avaxpython.config().logger().debug("Handling get_version : Msg {} Peer {}".format(msg, peer)) peer.Version()
def ping(self, msg: Msg, peer: Peer): avaxpython.config().logger().debug("Handling ping : Msg {} Peer {}".format(msg, peer)) peer.Pong()
def ping(self, msg: Msg, peer: Peer): self.avaxpython.config().logger().debug("Responding ping") peer.Pong()
def get_peerlist(self, msg: Msg, peer: Peer): """Returns a list of connected Peer objects.""" self.avaxpython.config().logger().debug("Responding get_peerlist") peers = self.peer_state.list_connected() peer.PeerList(peers)
def get_version(self, msg: Msg, peer: Peer): self.avaxpython.config().logger().debug("Responding get_version") peer.Version()
signal.signal(signal.SIGINT, sigint_handler) params.parseCmdLine() node_config = params.Config avaxpython.config().set("handler", DefaultHandler()) avax_handler = AVAXHandler() network = Network(router=ChainRouter()) network.nodeID = random.randint(9999, 4294967295) peer = Peer(network, DummyConnection(), IPDesc('127.0.0.1', 9651), None, 0, None, None, my_staking_ip=IPDesc('127.0.0.1', 9651)) chainManager = ChainManager() dummy_node_id = ShortID() vmManager = VMManager() chain_configs.VMManager = vmManager vdrs = ValidatorsManager() chainManager = ChainManager() chainManager.config.VMManager = vmManager chainManager.config.Validators = vdrs