finished closeness measurement

This commit is contained in:
Kevin Froman 2020-10-25 04:12:42 +00:00
parent c4be08bd23
commit da11c74f6c
6 changed files with 92 additions and 11 deletions

View file

@ -8,6 +8,8 @@ LoopBackIP = NewType('LoopBackIP', str)
DeterministicKeyPassphrase = NewType('DeterministicKeyPassphrase', str)
Ed25519PublicKeyBytes = NewType('Ed25519PublicKeyBytes', bytes)
BlockHash = NewType('BlockHash', str)
OnboardingConfig = NewType('OnboardingConfig', str)

View file

@ -1 +1,2 @@
from .extracted25519 import extract_ed25519_from_onion_address
from .extracted25519 import extract_ed25519_from_onion_address
from .neighbors import identify_neighbors

View file

@ -8,7 +8,7 @@ if TYPE_CHECKING:
def extract_ed25519_from_onion_address(
address: OnionAddressString) -> Ed25519PublicKeyBytes:
address: 'OnionAddressString') -> 'Ed25519PublicKeyBytes':
address = str_to_bytes(address).replace(b'.onion', b'').upper()
ed25519 = b32decode(address)[:-3]
return ed25519

View file

@ -1,5 +1,8 @@
from onionrtypes import OnionAddressString
from typing import Iterable
from collections import OrderedDict
from .extracted25519 import extract_ed25519_from_onion_address
@ -12,11 +15,15 @@ def identify_neighbors(
address_int = int.from_bytes(address, "big")
def _calc_closeness(y):
return abs(address_int - int.from_bytes(y, "big"))
peer_ed_keys = list(map(extract_ed25519_from_onion_address, peers))
differences = list(map(_calc_closeness, peer_ed_keys))
return sorted(differences)[:closest_n]
return abs(address_int - int.from_bytes(extract_ed25519_from_onion_address(y), "big"))
closeness_values = []
end_result = []
for peer in peers:
closeness_values.append((peer, _calc_closeness(peer)))
closeness_values.sort()
for i, result in enumerate(closeness_values):
if i > closest_n:
break
end_result.append(result[0])
return end_result