fixed closeness calculation
This commit is contained in:
		
							parent
							
								
									57ec04eff5
								
							
						
					
					
						commit
						4a831a4a4d
					
				
					 3 changed files with 46 additions and 20 deletions
				
			
		|  | @ -10,20 +10,31 @@ def identify_neighbors( | |||
|         address: OnionAddressString, | ||||
|         peers: Iterable[OnionAddressString], | ||||
|         closest_n: int) -> OnionAddressString: | ||||
|     """Identify node addresses that are closest | ||||
|     in value to a given node address""" | ||||
|     peers_to_test = list(peers) | ||||
| 
 | ||||
|     try: | ||||
|         peers_to_test.remove(address) | ||||
|     except ValueError: | ||||
|         pass | ||||
| 
 | ||||
|     address = extract_ed25519_from_onion_address(address) | ||||
|     address_int = int.from_bytes(address, "big") | ||||
| 
 | ||||
|     def _calc_closeness(y): | ||||
|         return abs(address_int - int.from_bytes(extract_ed25519_from_onion_address(y), "big")) | ||||
| 
 | ||||
|     closeness_values = [] | ||||
|     end_result = [] | ||||
|     for peer in peers: | ||||
| 
 | ||||
|     def _calc_closeness(y): | ||||
|         ret = abs( | ||||
|             address_int - | ||||
|             int.from_bytes(extract_ed25519_from_onion_address(y), "big")) | ||||
|         return ret | ||||
| 
 | ||||
|     for peer in peers_to_test: | ||||
|         closeness_values.append((peer, _calc_closeness(peer))) | ||||
|     closeness_values.sort() | ||||
|     closeness_values.sort(key=lambda p: p[1]) | ||||
|     for i, result in enumerate(closeness_values): | ||||
|         end_result.append(result[0]) | ||||
|         if i > closest_n: | ||||
|             break | ||||
|         end_result.append(result[0]) | ||||
|     return end_result | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue