Make public addresses go first in authority discovery DHT records (#3757)

Make sure explicitly set by the operator public addresses go first in
the authority discovery DHT records.

Also update `Discovery` behavior to eliminate duplicates in the returned
addresses.

This PR should improve situation with
https://github.com/paritytech/polkadot-sdk/issues/3519.

Obsoletes https://github.com/paritytech/polkadot-sdk/pull/3657.
This commit is contained in:
Dmitry Markin
2024-03-22 14:18:03 +02:00
committed by GitHub
parent 22d5b80d44
commit 9d2963c29d
9 changed files with 99 additions and 27 deletions
@@ -55,6 +55,7 @@ fn build_authority_discovery_service<Block: BlockT>(
prometheus_registry: Option<Registry>,
) -> AuthorityDiscoveryService {
let auth_disc_publish_non_global_ips = config.network.allow_non_globals_in_dht;
let auth_disc_public_addresses = config.network.public_addresses.clone();
let authority_discovery_role = sc_authority_discovery::Role::Discover;
let dht_event_stream = network.event_stream("authority-discovery").filter_map(|e| async move {
match e {
@@ -65,6 +66,7 @@ fn build_authority_discovery_service<Block: BlockT>(
let (worker, service) = sc_authority_discovery::new_worker_and_service_with_config(
sc_authority_discovery::WorkerConfig {
publish_non_global_ips: auth_disc_publish_non_global_ips,
public_addresses: auth_disc_public_addresses,
// Require that authority discovery records are signed.
strict_record_validation: true,
..Default::default()