If a node is federated_only, then they can rightly regard other nodes as federated_only.

pull/345/head
jMyles 2018-07-03 17:37:55 -07:00
parent f2cfa5ac1f
commit 40ff5e889d
3 changed files with 5 additions and 2 deletions

View File

@ -200,6 +200,7 @@ class Character:
self._dht_server = self._dht_server_class(node_storage=self._known_nodes, # TODO: 340
treasure_map_storage=self._stored_treasure_maps, # TODO: 340
federated_only=self.federated_only,
ksize=ksize, alpha=alpha, id=id,
storage=storage, *args, **kwargs)

View File

@ -58,7 +58,7 @@ class NucypherHashProtocol(KademliaProtocol):
if header == constants.BYTESTRING_IS_URSULA_IFACE_INFO:
from nucypher.characters import Ursula
stranger_ursula = Ursula.from_bytes(payload,
federated_only=True) # TODO: Is federated_only the right thing here?
federated_only=self.sourceNode.federated_only) # TODO: Is federated_only the right thing here?
if stranger_ursula.verify_interface() and key == digest(stranger_ursula.canonical_public_address):
self.sourceNode._node_storage[key] = stranger_ursula # TODO: 340

View File

@ -30,7 +30,7 @@ class NucypherDHTServer(Server):
capabilities = ()
digests_set = 0
def __init__(self, node_storage, treasure_map_storage, id=None, *args, **kwargs):
def __init__(self, node_storage, treasure_map_storage, federated_only=False, id=None, *args, **kwargs):
super().__init__(ksize=20, alpha=3, id=None, storage=None)
self.node = kademlia.node.Node(id=id or digest(
random.getrandbits(255))) # TODO: Assume that this can be attacked to get closer to desired kFrags.
@ -39,6 +39,8 @@ class NucypherDHTServer(Server):
self.node._node_storage = node_storage
self.node._treasure_maps = treasure_map_storage
self.node.federated_only = federated_only
async def set_digest(self, dkey, value):
"""
Set the given SHA1 digest key (bytes) to the given value in the network.