diff --git a/nucypher/characters/lawful.py b/nucypher/characters/lawful.py index 92e7d835f..212e2f8ab 100644 --- a/nucypher/characters/lawful.py +++ b/nucypher/characters/lawful.py @@ -392,7 +392,7 @@ class Bob(Character): return cleartexts -class Ursula(Character, VerifiableNode, Miner): +class Ursula(VerifiableNode, Character, Miner): _internal_splitter = BytestringSplitter((int, 4, {'byteorder': 'big'}), Signature, VariableLengthBytestring, diff --git a/nucypher/network/nodes.py b/nucypher/network/nodes.py index 29efc295e..822b2f5eb 100644 --- a/nucypher/network/nodes.py +++ b/nucypher/network/nodes.py @@ -222,6 +222,10 @@ class Learner: for node in stored_nodes: self.remember_node(node) + def sorted_nodes(self): + nodes_to_consider = list(self.known_nodes.values()) + return sorted(nodes_to_consider, key=lambda n: n.checksum_public_address) + def remember_node(self, node, force_verification_check=False): if node == self: # No need to remember self. @@ -623,6 +627,10 @@ class VerifiableNode: certificate = tls_hosting_power.keypair.certificate return cls(certificate=certificate, certificate_filepath=certificate_filepath, *args, **kwargs) + def sorted_nodes(self): + nodes_to_consider = list(self.known_nodes.values()) + [self] + return sorted(nodes_to_consider, key=lambda n: n.checksum_public_address) + def _stamp_has_valid_wallet_signature(self): signature_bytes = self._evidence_of_decentralized_identity if signature_bytes is constants.NOT_SIGNED: