Struct sc_authority_discovery::Worker
source · pub struct Worker<Client, Network, Block, DhtEventStream> { /* private fields */ }
Expand description
An authority discovery Worker
can publish the local node’s addresses as well as discover
those of other nodes via a Kademlia DHT.
When constructed with Role::PublishAndDiscover
a Worker
will
-
Retrieve its external addresses (including peer id).
-
Get the list of keys owned by the local node participating in the current authority set.
-
Sign the addresses with the keys.
-
Put addresses and signature as a record with the authority id as a key on a Kademlia DHT.
When constructed with either Role::PublishAndDiscover
or Role::Discover
a Worker
will
-
Retrieve the current and next set of authorities.
-
Start DHT queries for the ids of the authorities.
-
Validate the signatures of the retrieved key value pairs.
-
Add the retrieved external addresses as priority nodes to the network peerset.
-
Allow querying of the collected addresses via the
crate::Service
.
Implementations§
source§impl<Client, Network, Block, DhtEventStream> Worker<Client, Network, Block, DhtEventStream>where
Block: BlockT + Unpin + 'static,
Network: NetworkProvider,
Client: AuthorityDiscovery<Block> + 'static,
DhtEventStream: Stream<Item = DhtEvent> + Unpin,
impl<Client, Network, Block, DhtEventStream> Worker<Client, Network, Block, DhtEventStream>where Block: BlockT + Unpin + 'static, Network: NetworkProvider, Client: AuthorityDiscovery<Block> + 'static, DhtEventStream: Stream<Item = DhtEvent> + Unpin,
Auto Trait Implementations§
impl<Client, Network, Block, DhtEventStream> !RefUnwindSafe for Worker<Client, Network, Block, DhtEventStream>
impl<Client, Network, Block, DhtEventStream> Send for Worker<Client, Network, Block, DhtEventStream>where Block: Send, Client: Send + Sync, DhtEventStream: Send, Network: Send + Sync,
impl<Client, Network, Block, DhtEventStream> Sync for Worker<Client, Network, Block, DhtEventStream>where Block: Sync, Client: Send + Sync, DhtEventStream: Sync, Network: Send + Sync,
impl<Client, Network, Block, DhtEventStream> Unpin for Worker<Client, Network, Block, DhtEventStream>where Block: Unpin, DhtEventStream: Unpin,
impl<Client, Network, Block, DhtEventStream> !UnwindSafe for Worker<Client, Network, Block, DhtEventStream>
Blanket Implementations§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere Self: UniqueSaturatedInto<T>,
T
. Read moresource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.source§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.