diff --git a/nucypher/network/nodes.py b/nucypher/network/nodes.py index 2a36b171b..37f577c98 100644 --- a/nucypher/network/nodes.py +++ b/nucypher/network/nodes.py @@ -810,88 +810,7 @@ class Learner: else: raise self.InvalidSignature("No signature provided -- signature presumed invalid.") - def parse_and_maybe_validate_fleet_bytes(self, node_payload, verify_now=False): - from nucypher.characters.lawful import Ursula - node_list = Ursula.batch_from_bytes(node_payload, - registry=self.registry, - federated_only=self.federated_only) # TODO: 466 - - new_nodes = [] - for node in node_list: - if not set(self.learning_domains).intersection(set(node.serving_domains)): - self.log.debug( - f"Teacher {node} is serving {node.serving_domains}, but we're only learning {self.learning_domains}.") - continue # This node is not serving any of our domains. - - # First, determine if this is an outdated representation of an already known node. - # TODO: #1032 - with suppress(KeyError): - already_known_node = self.known_nodes[node.checksum_address] - if not node.timestamp > already_known_node.timestamp: - self.log.debug("Skipping already known node {}".format(already_known_node)) - # This node is already known. We can safely continue to the next. - continue - - # - # Verify Node - # - - certificate_filepath = self.node_storage.store_node_certificate(certificate=node.certificate) - try: - if verify_now: - node.verify_node(self.network_middleware, - registry=self.registry, - certificate_filepath=certificate_filepath) - self.log.debug("Verified node: {}".format(node.checksum_address)) - - else: - node.validate_metadata(registry=self.registry) - - # - # Report Failure - # - - except NodeSeemsToBeDown: - self.log.info(f"Verification Failed - " - f"Cannot establish connection to {node}.") - - except node.StampNotSigned: - self.log.warn(f'Verification Failed - ' - f'{node} stamp is unsigned.') - - except node.NotStaking: - self.log.warn(f'Verification Failed - ' - f'{node} has no active stakes in the current period ' - f'({self.staking_agent.get_current_period()}') - - except node.InvalidWorkerSignature: - self.log.warn(f'Verification Failed - ' - f'{node} has an invalid wallet signature for {node.decentralized_identity_evidence}') - - except node.DetachedWorker: - self.log.warn(f'Verification Failed - ' - f'{node} is not bonded to a Staker.') - - except node.InvalidNode: - self.log.warn(node.invalid_metadata_message.format(node)) - - except node.SuspiciousActivity: - message = f"Suspicious Activity: Discovered node with bad signature: {node}." \ - f"Propagated by: {current_teacher}" - self.log.warn(message) - - # - # Success - # - - else: - new = self.remember_node(node, record_fleet_state=False) - if new: - new_nodes.append(node) - self._adjust_learning(new_nodes) - return node_list, new_nodes - - def learn_from_teacher_node(self, eager=True): + def learn_from_teacher_node(self, eager=False): """ Sends a request to node_url to find out about known nodes. """