pub struct Gossipsub<D: DataTransform = IdentityTransform, F: TopicSubscriptionFilter = AllowAllSubscriptionFilter> { /* private fields */ }
Expand description

Network behaviour that handles the gossipsub protocol.

NOTE: Initialisation requires a MessageAuthenticity and GossipsubConfig instance. If message signing is disabled, the ValidationMode in the config should be adjusted to an appropriate level to accept unsigned messages.

The DataTransform trait allows applications to optionally add extra encoding/decoding functionality to the underlying messages. This is intended for custom compression algorithms.

The TopicSubscriptionFilter allows applications to implement specific filters on topics to prevent unwanted messages being propagated and evaluated.

Implementations§

Creates a Gossipsub struct given a set of parameters specified via a GossipsubConfig. This has no subscription filter and uses no compression.

Creates a Gossipsub struct given a set of parameters specified via a GossipsubConfig. This has no subscription filter and uses no compression. Metrics can be evaluated by passing a reference to a Registry.

Creates a Gossipsub struct given a set of parameters specified via a GossipsubConfig and a custom subscription filter.

Creates a Gossipsub struct given a set of parameters specified via a GossipsubConfig and a custom data transform.

Creates a Gossipsub struct given a set of parameters specified via a GossipsubConfig and a custom subscription filter and data transform.

Lists the hashes of the topics we are currently subscribed to.

Lists all mesh peers for a certain topic hash.

Lists all known peers and their associated subscribed topics.

Lists all known peers and their associated protocol.

Returns the gossipsub score for a given peer, if one exists.

Subscribe to a topic.

Returns [Ok(true)] if the subscription worked. Returns [Ok(false)] if we were already subscribed.

Unsubscribes from a topic.

Returns [Ok(true)] if we were subscribed to this topic.

Publishes a message with multiple topics to the network.

This function should be called when GossipsubConfig::validate_messages() is true after the message got validated by the caller. Messages are stored in the [‘Memcache’] and validation is expected to be fast enough that the messages should still exist in the cache. There are three possible validation outcomes and the outcome is given in acceptance.

If acceptance = MessageAcceptance::Accept the message will get propagated to the network. The propagation_source parameter indicates who the message was received by and will not be forwarded back to that peer.

If acceptance = MessageAcceptance::Reject the message will be deleted from the memcache and the P₄ penalty will be applied to the propagation_source. If acceptance = MessageAcceptance::Ignore the message will be deleted from the memcache but no P₄ penalty will be applied.

This function will return true if the message was found in the cache and false if was not in the cache anymore.

This should only be called once per message.

Adds a new peer to the list of explicitly connected peers.

This removes the peer from explicitly connected peers, note that this does not disconnect the peer.

Blacklists a peer. All messages from this peer will be rejected and any message that was created by this peer will be rejected.

Removes a peer from the blacklist if it has previously been blacklisted.

Activates the peer scoring system with the given parameters. This will reset all scores if there was already another peer scoring system activated. Returns an error if the params are not valid or if they got already set.

Activates the peer scoring system with the given parameters and a message delivery time callback. Returns an error if the parameters got already set.

Sets scoring parameters for a topic.

The Self::with_peer_score() must first be called to initialise peer scoring.

Sets the application specific score for a peer. Returns true if scoring is active and the peer is connected or if the score of the peer is not yet expired, false otherwise.

Trait Implementations§

Formats the value using the given formatter. Read more
Handler for all the protocols the network behaviour supports.
Event generated by the NetworkBehaviour and that the swarm will report back.
Creates a new ConnectionHandler for a connection with a peer. Read more
Informs the behaviour about an event generated by the ConnectionHandler dedicated to the peer identified by peer_id. for the behaviour. Read more
Polls for things that swarm should do. Read more
Informs the behaviour about an event from the Swarm.
Addresses that this behaviour is aware of for this specific peer, and that may allow reaching the peer. Read more
👎Deprecated since 0.40.2: Handle FromSwarm::ConnectionEstablished in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
Informs the behaviour about a newly established connection to a peer.
👎Deprecated since 0.40.2: Handle FromSwarm::ConnectionClosed in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
Informs the behaviour about a closed connection to a peer. Read more
👎Deprecated since 0.40.2: Handle FromSwarm::AddressChange in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
Informs the behaviour that the ConnectedPoint of an existing connection has changed.
👎Deprecated since 0.40.2: Implement NetworkBehaviour::on_connection_handler_event instead. The default implementation of this inject_* method delegates to it.
Informs the behaviour about an event generated by the handler dedicated to the peer identified by peer_id. for the behaviour. Read more
👎Deprecated since 0.40.2: Handle InEvent::DialFailure in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
Indicates to the behaviour that the dial to a known or unknown node failed.
👎Deprecated since 0.40.2: Handle FromSwarm::ListenFailure in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
Indicates to the behaviour that an error happened on an incoming connection during its initial handshake. Read more
👎Deprecated since 0.40.2: Handle FromSwarm::NewListener in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
Indicates to the behaviour that a new listener was created.
👎Deprecated since 0.40.2: Handle FromSwarm::NewListenAddr in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
Indicates to the behaviour that we have started listening on a new multiaddr.
👎Deprecated since 0.40.2: Handle FromSwarm::ExpiredListenAddr in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
Indicates to the behaviour that a multiaddr we were listening on has expired, which means that we are no longer listening on it. Read more
👎Deprecated since 0.40.2: Handle FromSwarm::ListenerError in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
A listener experienced an error.
👎Deprecated since 0.40.2: Handle FromSwarm::ListenerClosed in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
A listener closed.
👎Deprecated since 0.40.2: Handle FromSwarm::NewExternalAddr in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
Indicates to the behaviour that we have discovered a new external address for us.
👎Deprecated since 0.40.2: Handle FromSwarm::ExpiredExternalAddr in NetworkBehaviour::on_swarm_event instead. The default implementation of this inject_* method delegates to it.
Indicates to the behaviour that an external address was removed.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.