Struct libp2p::gossipsub::GossipsubConfig
source · [−]pub struct GossipsubConfig { /* private fields */ }
Expand description
Configuration parameters that define the performance of the gossipsub network.
Implementations
sourceimpl GossipsubConfig
impl GossipsubConfig
sourcepub fn protocol_id_prefix(&self) -> &Cow<'static, str>
pub fn protocol_id_prefix(&self) -> &Cow<'static, str>
The protocol id prefix to negotiate this protocol. The protocol id is of the form
/<prefix>/<supported-versions>
. As gossipsub supports version 1.0 and 1.1, there are two
protocol id’s supported.
The default prefix is meshsub
, giving the supported protocol ids: /meshsub/1.1.0
and /meshsub/1.0.0
, negotiated in that order.
sourcepub fn history_length(&self) -> usize
pub fn history_length(&self) -> usize
Number of heartbeats to keep in the memcache
(default is 5).
sourcepub fn history_gossip(&self) -> usize
pub fn history_gossip(&self) -> usize
Number of past heartbeats to gossip about (default is 3).
sourcepub fn mesh_n(&self) -> usize
pub fn mesh_n(&self) -> usize
Target number of peers for the mesh network (D in the spec, default is 6).
sourcepub fn mesh_n_low(&self) -> usize
pub fn mesh_n_low(&self) -> usize
Minimum number of peers in mesh network before adding more (D_lo in the spec, default is 5).
sourcepub fn mesh_n_high(&self) -> usize
pub fn mesh_n_high(&self) -> usize
Maximum number of peers in mesh network before removing some (D_high in the spec, default is 12).
sourcepub fn retain_scores(&self) -> usize
pub fn retain_scores(&self) -> usize
Affects how peers are selected when pruning a mesh due to over subscription.
At least retain_scores
of the retained peers will be high-scoring, while the remainder are
chosen randomly (D_score in the spec, default is 4).
sourcepub fn gossip_lazy(&self) -> usize
pub fn gossip_lazy(&self) -> usize
Minimum number of peers to emit gossip to during a heartbeat (D_lazy in the spec, default is 6).
sourcepub fn gossip_factor(&self) -> f64
pub fn gossip_factor(&self) -> f64
Affects how many peers we will emit gossip to at each heartbeat.
We will send gossip to gossip_factor * (total number of non-mesh peers)
, or
gossip_lazy
, whichever is greater. The default is 0.25.
sourcepub fn heartbeat_initial_delay(&self) -> Duration
pub fn heartbeat_initial_delay(&self) -> Duration
Initial delay in each heartbeat (default is 5 seconds).
sourcepub fn heartbeat_interval(&self) -> Duration
pub fn heartbeat_interval(&self) -> Duration
Time between each heartbeat (default is 1 second).
sourcepub fn fanout_ttl(&self) -> Duration
pub fn fanout_ttl(&self) -> Duration
Time to live for fanout peers (default is 60 seconds).
sourcepub fn check_explicit_peers_ticks(&self) -> u64
pub fn check_explicit_peers_ticks(&self) -> u64
The number of heartbeat ticks until we recheck the connection to explicit peers and reconnecting if necessary (default 300).
sourcepub fn max_transmit_size(&self) -> usize
pub fn max_transmit_size(&self) -> usize
The maximum byte size for each gossipsub RPC (default is 65536 bytes).
This represents the maximum size of the entire protobuf payload. It must be at least large enough to support basic control messages. If Peer eXchange is enabled, this must be large enough to transmit the desired peer information on pruning. It must be at least 100 bytes. Default is 65536 bytes.
sourcepub fn duplicate_cache_time(&self) -> Duration
pub fn duplicate_cache_time(&self) -> Duration
Duplicates are prevented by storing message id’s of known messages in an LRU time cache. This settings sets the time period that messages are stored in the cache. Duplicates can be received if duplicate messages are sent at a time greater than this setting apart. The default is 1 minute.
sourcepub fn validate_messages(&self) -> bool
pub fn validate_messages(&self) -> bool
When set to true
, prevents automatic forwarding of all received messages. This setting
allows a user to validate the messages before propagating them to their peers. If set to
true, the user must manually call crate::Gossipsub::report_message_validation_result()
on the behaviour to forward message once validated (default is false
).
The default is false
.
sourcepub fn validation_mode(&self) -> &ValidationMode
pub fn validation_mode(&self) -> &ValidationMode
Determines the level of validation used when receiving messages. See ValidationMode
for the available types. The default is ValidationMode::Strict.
sourcepub fn message_id(&self, message: &GossipsubMessage) -> MessageId
pub fn message_id(&self, message: &GossipsubMessage) -> MessageId
A user-defined function allowing the user to specify the message id of a gossipsub message.
The default value is to concatenate the source peer id with a sequence number. Setting this
parameter allows the user to address packets arbitrarily. One example is content based
addressing, where this function may be set to hash(message)
. This would prevent messages
of the same content from being duplicated.
The function takes a GossipsubMessage
as input and outputs a String to be interpreted as
the message id.
sourcepub fn fast_message_id(
&self,
message: &RawGossipsubMessage
) -> Option<FastMessageId>
pub fn fast_message_id(
&self,
message: &RawGossipsubMessage
) -> Option<FastMessageId>
A user-defined optional function that computes fast ids from raw messages. This can be used
to avoid possibly expensive transformations from RawGossipsubMessage
to
GossipsubMessage
for duplicates. Two semantically different messages must always
have different fast message ids, but it is allowed that two semantically identical messages
have different fast message ids as long as the message_id_fn produces the same id for them.
The function takes a RawGossipsubMessage
as input and outputs a String to be
interpreted as the fast message id. Default is None.
sourcepub fn allow_self_origin(&self) -> bool
pub fn allow_self_origin(&self) -> bool
By default, gossipsub will reject messages that are sent to us that have the same message source as we have specified locally. Enabling this, allows these messages and prevents penalizing the peer that sent us the message. Default is false.
sourcepub fn do_px(&self) -> bool
pub fn do_px(&self) -> bool
Whether Peer eXchange is enabled; this should be enabled in bootstrappers and other well connected/trusted nodes. The default is true.
sourcepub fn prune_peers(&self) -> usize
pub fn prune_peers(&self) -> usize
Controls the number of peers to include in prune Peer eXchange.
When we prune a peer that’s eligible for PX (has a good score, etc), we will try to
send them signed peer records for up to prune_peers
other peers that we
know of. It is recommended that this value is larger than mesh_n_high
so that the pruned
peer can reliably form a full mesh. The default is typically 16 however until signed
records are spec’d this is disabled and set to 0.
sourcepub fn prune_backoff(&self) -> Duration
pub fn prune_backoff(&self) -> Duration
Controls the backoff time for pruned peers. This is how long
a peer must wait before attempting to graft into our mesh again after being pruned.
When pruning a peer, we send them our value of prune_backoff
so they know
the minimum time to wait. Peers running older versions may not send a backoff time,
so if we receive a prune message without one, we will wait at least prune_backoff
before attempting to re-graft. The default is one minute.
sourcepub fn backoff_slack(&self) -> u32
pub fn backoff_slack(&self) -> u32
Number of heartbeat slots considered as slack for backoffs. This gurantees that we wait
at least backoff_slack heartbeats after a backoff is over before we try to graft. This
solves problems occuring through high latencies. In particular if
backoff_slack * heartbeat_interval
is longer than any latencies between processing
prunes on our side and processing prunes on the receiving side this guarantees that we
get not punished for too early grafting. The default is 1.
sourcepub fn flood_publish(&self) -> bool
pub fn flood_publish(&self) -> bool
Whether to do flood publishing or not. If enabled newly created messages will always be sent to all peers that are subscribed to the topic and have a good enough score. The default is true.
sourcepub fn graft_flood_threshold(&self) -> Duration
pub fn graft_flood_threshold(&self) -> Duration
If a GRAFT comes before graft_flood_threshold
has elapsed since the last PRUNE,
then there is an extra score penalty applied to the peer through P7.
sourcepub fn mesh_outbound_min(&self) -> usize
pub fn mesh_outbound_min(&self) -> usize
Minimum number of outbound peers in the mesh network before adding more (D_out in the spec).
This value must be smaller or equal than mesh_n / 2
and smaller than mesh_n_low
.
The default is 2.
sourcepub fn opportunistic_graft_ticks(&self) -> u64
pub fn opportunistic_graft_ticks(&self) -> u64
Number of heartbeat ticks that specifcy the interval in which opportunistic grafting is
applied. Every opportunistic_graft_ticks
we will attempt to select some high-scoring mesh
peers to replace lower-scoring ones, if the median score of our mesh peers falls below a
threshold (see https://godoc.org/github.com/libp2p/go-libp2p-pubsub#PeerScoreThresholds).
The default is 60.
sourcepub fn gossip_retransimission(&self) -> u32
pub fn gossip_retransimission(&self) -> u32
Controls how many times we will allow a peer to request the same message id through IWANT gossip before we start ignoring them. This is designed to prevent peers from spamming us with requests and wasting our resources. The default is 3.
sourcepub fn opportunistic_graft_peers(&self) -> usize
pub fn opportunistic_graft_peers(&self) -> usize
The maximum number of new peers to graft to during opportunistic grafting. The default is 2.
sourcepub fn max_messages_per_rpc(&self) -> Option<usize>
pub fn max_messages_per_rpc(&self) -> Option<usize>
The maximum number of messages we will process in a given RPC. If this is unset, there is no limit. The default is None.
sourcepub fn max_ihave_length(&self) -> usize
pub fn max_ihave_length(&self) -> usize
The maximum number of messages to include in an IHAVE message. Also controls the maximum number of IHAVE ids we will accept and request with IWANT from a peer within a heartbeat, to protect from IHAVE floods. You should adjust this value from the default if your system is pushing more than 5000 messages in GossipSubHistoryGossip heartbeats; with the defaults this is 1666 messages/s. The default is 5000.
sourcepub fn max_ihave_messages(&self) -> usize
pub fn max_ihave_messages(&self) -> usize
GossipSubMaxIHaveMessages is the maximum number of IHAVE messages to accept from a peer within a heartbeat.
sourcepub fn iwant_followup_time(&self) -> Duration
pub fn iwant_followup_time(&self) -> Duration
Time to wait for a message requested through IWANT following an IHAVE advertisement. If the message is not received within this window, a broken promise is declared and the router may apply behavioural penalties. The default is 3 seconds.
sourcepub fn support_floodsub(&self) -> bool
pub fn support_floodsub(&self) -> bool
Enable support for flooodsub peers. Default false.
sourcepub fn published_message_ids_cache_time(&self) -> Duration
pub fn published_message_ids_cache_time(&self) -> Duration
Published message ids time cache duration. The default is 10 seconds.
Trait Implementations
sourceimpl Clone for GossipsubConfig
impl Clone for GossipsubConfig
sourcepub fn clone(&self) -> GossipsubConfig
pub fn clone(&self) -> GossipsubConfig
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for GossipsubConfig
impl Debug for GossipsubConfig
sourceimpl Default for GossipsubConfig
impl Default for GossipsubConfig
sourcepub fn default() -> GossipsubConfig
pub fn default() -> GossipsubConfig
Returns the “default value” for a type. Read more
sourceimpl From<GossipsubConfig> for GossipsubConfigBuilder
impl From<GossipsubConfig> for GossipsubConfigBuilder
sourcepub fn from(config: GossipsubConfig) -> GossipsubConfigBuilder
pub fn from(config: GossipsubConfig) -> GossipsubConfigBuilder
Performs the conversion.
Auto Trait Implementations
impl RefUnwindSafe for GossipsubConfig
impl Send for GossipsubConfig
impl Sync for GossipsubConfig
impl Unpin for GossipsubConfig
impl UnwindSafe for GossipsubConfig
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more