2ad22d7d19
- fixes https://github.com/lbryio/lbry/issues/2244 - reduce the max DHT datagram size to 1400 bytes - truncate `contacts` field of find_value response datagrams to the k closest (8) - truncate peers in find_node response datagrams to the 2k closest (16) - remove `contacts` field from find_value responses beyond `page` 0 (the first/default) - deterministically shuffle the peers for a blob in a find_value response - add optional `page` argument to `find_value` and `p` field to find_value responses containing the number of pages of k peers for the blob - test one blob being announced by 150 different peers to one peer - speed up pylint and remove some disabled checks
41 lines
1,018 B
Python
41 lines
1,018 B
Python
import hashlib
|
|
import os
|
|
|
|
hash_class = hashlib.sha384
|
|
hash_length = hash_class().digest_size
|
|
hash_bits = hash_length * 8
|
|
alpha = 5
|
|
k = 8
|
|
split_buckets_under_index = 1
|
|
replacement_cache_size = 8
|
|
rpc_timeout = 5.0
|
|
rpc_attempts = 5
|
|
rpc_attempts_pruning_window = 600
|
|
iterative_lookup_delay = rpc_timeout / 2.0 # TODO: use config val / 2 if rpc timeout is provided
|
|
refresh_interval = 3600 # 1 hour
|
|
replicate_interval = refresh_interval
|
|
data_expiration = 86400 # 24 hours
|
|
token_secret_refresh_interval = 300 # 5 minutes
|
|
maybe_ping_delay = 300 # 5 minutes
|
|
check_refresh_interval = refresh_interval / 5
|
|
rpc_id_length = 20
|
|
protocol_version = 1
|
|
bottom_out_limit = 3
|
|
msg_size_limit = 1400
|
|
|
|
|
|
def digest(data: bytes) -> bytes:
|
|
h = hash_class()
|
|
h.update(data)
|
|
return h.digest()
|
|
|
|
|
|
def generate_id(num=None) -> bytes:
|
|
if num is not None:
|
|
return digest(str(num).encode())
|
|
else:
|
|
return digest(os.urandom(32))
|
|
|
|
|
|
def generate_rpc_id(num=None) -> bytes:
|
|
return generate_id(num)[:rpc_id_length]
|