mirror of
https://github.com/logos-messaging/go-libp2p-pubsub.git
synced 2026-01-04 05:43:06 +00:00
add doc comments to gossipsub constants
This commit is contained in:
parent
906c941b29
commit
3dab80fdd5
108
gossipsub.go
108
gossipsub.go
@ -18,75 +18,135 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
// GossipSubID_v10 is the protocol ID for version 1.0.0 of the GossipSub protocol.
|
||||||
|
// It is advertised along with GossipSubID_v11 for backwards compatibility.
|
||||||
GossipSubID_v10 = protocol.ID("/meshsub/1.0.0")
|
GossipSubID_v10 = protocol.ID("/meshsub/1.0.0")
|
||||||
|
|
||||||
|
// GossipSubID_v11 is the protocol ID for version 1.1.0 of the GossipSub protocol.
|
||||||
|
// See the spec for details about how v1.1.0 compares to v1.0.0:
|
||||||
|
// https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md
|
||||||
GossipSubID_v11 = protocol.ID("/meshsub/1.1.0")
|
GossipSubID_v11 = protocol.ID("/meshsub/1.1.0")
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// overlay parameters
|
// overlay parameters.
|
||||||
GossipSubD = 6
|
|
||||||
GossipSubDlo = 5
|
// GossipSubD sets the optimal degree for a gossip mesh. For example, if GossipSubD == 6,
|
||||||
GossipSubDhi = 12
|
// each peer will want to have about six peers in their mesh for each topic they're subscribed to.
|
||||||
|
// GossipSubD should be set somewhere between GossipSubDlo and GossipSubDhi.
|
||||||
|
GossipSubD = 6
|
||||||
|
|
||||||
|
// GossipSubDlo sets the lower bound on the number of peers we keep in a gossip mesh. If we have
|
||||||
|
// fewer than GossipSubDlo peers, we will attempt to graft some more into the mesh at the next
|
||||||
|
// heartbeat.
|
||||||
|
GossipSubDlo = 5
|
||||||
|
|
||||||
|
// GossipSubDhi sets the upper bound on the number of peers we keep in a gossip mesh. If we have
|
||||||
|
// more than GossipSubDhi peers, we will select some to prune from the mesh at the next heartbeat.
|
||||||
|
GossipSubDhi = 12
|
||||||
|
|
||||||
|
// GossipSubDscore affects how peers are selected when pruning the mesh due to over subscription.
|
||||||
|
// At least GossipSubDscore of the retained peers will be high-scoring, while the remainder are
|
||||||
|
// chosen randomly.
|
||||||
GossipSubDscore = 4
|
GossipSubDscore = 4
|
||||||
GossipSubDout = 2
|
GossipSubDout = 2
|
||||||
|
|
||||||
// gossip parameters
|
// gossip parameters
|
||||||
|
|
||||||
|
// GossipSubHistoryLength controls the size of the message cache used for gossip.
|
||||||
|
// The message cache will remember messages for GossipSubHistoryLength heartbeats.
|
||||||
GossipSubHistoryLength = 5
|
GossipSubHistoryLength = 5
|
||||||
|
|
||||||
|
// GossipSubHistoryGossip controls how many cached message ids we will advertise in
|
||||||
|
// IHAVE gossip messages. When asked for our seen message IDs, we will return
|
||||||
|
// only those from the most recent GossipSubHistoryGossip heartbeats. The slack between
|
||||||
|
// GossipSubHistoryGossip and GossipSubHistoryLength allows us to avoid advertising messages
|
||||||
|
// that will be expired by the time they're requested.
|
||||||
|
//
|
||||||
|
// GossipSubHistoryGossip must be less than or equal to GossipSubHistoryLength to
|
||||||
|
// avoid a runtime panic.
|
||||||
GossipSubHistoryGossip = 3
|
GossipSubHistoryGossip = 3
|
||||||
|
|
||||||
GossipSubDlazy = 6
|
// GossipSubDlazy affects how many peers we will emit gossip to at each heartbeat.
|
||||||
|
// We will send gossip to at least GossipSubDlazy peers outside our mesh. The actual
|
||||||
|
// number may be more, depending on GossipSubGossipFactor and how many peers we're
|
||||||
|
// connected to.
|
||||||
|
GossipSubDlazy = 6
|
||||||
|
|
||||||
|
// GossipSubGossipFactor affects how many peers we will emit gossip to at each heartbeat.
|
||||||
|
// We will send gossip to GossipSubGossipFactor * (total number of non-mesh peers), or
|
||||||
|
// GossipSubDlazy, whichever is greater.
|
||||||
GossipSubGossipFactor = 0.25
|
GossipSubGossipFactor = 0.25
|
||||||
|
|
||||||
|
// GossipSubGossipRetransmission 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.
|
||||||
GossipSubGossipRetransmission = 3
|
GossipSubGossipRetransmission = 3
|
||||||
|
|
||||||
// heartbeat interval
|
// heartbeat interval
|
||||||
|
|
||||||
|
// GossipSubHeartbeatInitialDelay is the short delay before the heartbeat timer begins
|
||||||
|
// after the router is initialized.
|
||||||
GossipSubHeartbeatInitialDelay = 100 * time.Millisecond
|
GossipSubHeartbeatInitialDelay = 100 * time.Millisecond
|
||||||
|
|
||||||
|
// GossipSubHeartbeatInterval controls the time between heartbeats.
|
||||||
GossipSubHeartbeatInterval = 1 * time.Second
|
GossipSubHeartbeatInterval = 1 * time.Second
|
||||||
|
|
||||||
// fanout ttl
|
// GossipSubFanoutTTL controls how long we keep track of the fanout state. If it's been
|
||||||
|
// GossipSubFanoutTTL since we've published to a topic that we're not subscribed to,
|
||||||
|
// we'll delete the fanout map for that topic.
|
||||||
GossipSubFanoutTTL = 60 * time.Second
|
GossipSubFanoutTTL = 60 * time.Second
|
||||||
|
|
||||||
// number of peers to include in prune Peer eXchange
|
// GossipSubPrunePeers 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 GossipSubPrunePeers other peers that we
|
||||||
|
// know of.
|
||||||
GossipSubPrunePeers = 16
|
GossipSubPrunePeers = 16
|
||||||
|
|
||||||
// backoff time for pruned peers
|
// GossipSubPruneBackoff 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 GossipSubPruneBackoff 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 GossipSubPruneBackoff
|
||||||
|
// before attempting to re-graft.
|
||||||
GossipSubPruneBackoff = time.Minute
|
GossipSubPruneBackoff = time.Minute
|
||||||
|
|
||||||
// number of active connection attempts for peers obtained through px
|
// GossipSubConnectors controls the number of active connection attempts for peers obtained through PX.
|
||||||
GossipSubConnectors = 8
|
GossipSubConnectors = 8
|
||||||
|
|
||||||
// maximum number of pending connections for peers attempted through px
|
// GossipSubMaxPendingConnections sets the maximum number of pending connections for peers attempted through px.
|
||||||
GossipSubMaxPendingConnections = 128
|
GossipSubMaxPendingConnections = 128
|
||||||
|
|
||||||
// timeout for connection attempts
|
// GossipSubConnectionTimeout controls the timeout for connection attempts.
|
||||||
GossipSubConnectionTimeout = 30 * time.Second
|
GossipSubConnectionTimeout = 30 * time.Second
|
||||||
|
|
||||||
// Number of heartbeat ticks for attempting to reconnect direct peers that are not
|
// GossipSubDirectConnectTicks is the number of heartbeat ticks for attempting to reconnect direct peers
|
||||||
// currently connected
|
// that are not currently connected.
|
||||||
GossipSubDirectConnectTicks uint64 = 300
|
GossipSubDirectConnectTicks uint64 = 300
|
||||||
|
|
||||||
// Initial delay before opening connections to direct peers
|
// GossipSubDirectConnectInitialDelay is the initial delay before opening connections to direct peers
|
||||||
GossipSubDirectConnectInitialDelay = time.Second
|
GossipSubDirectConnectInitialDelay = time.Second
|
||||||
|
|
||||||
// Number of heartbeat ticks for attempting to improve the mesh with opportunistic
|
// GossipSubOpportunisticGraftTicks is the number of heartbeat ticks for attempting to improve the mesh
|
||||||
// grafting
|
// with opportunistic grafting. Every GossipSubOpportunisticGraftTicks we will attempt to select some
|
||||||
|
// high-scoring mesh peers to replace lower-scoring ones.
|
||||||
GossipSubOpportunisticGraftTicks uint64 = 60
|
GossipSubOpportunisticGraftTicks uint64 = 60
|
||||||
|
|
||||||
// Number of peers to opportunistically graft
|
// GossipSubOpportunisticGraftPeers is the number of peers to opportunistically graft.
|
||||||
GossipSubOpportunisticGraftPeers = 2
|
GossipSubOpportunisticGraftPeers = 2
|
||||||
|
|
||||||
// If a GRAFT comes before GossipSubGraftFloodThreshold has ellapsed since the last PRUNE,
|
// If a GRAFT comes before GossipSubGraftFloodThreshold has elapsed since the last PRUNE,
|
||||||
// then there is an extra score penalty applied to the peer through P7.
|
// then there is an extra score penalty applied to the peer through P7.
|
||||||
GossipSubGraftFloodThreshold = 10 * time.Second
|
GossipSubGraftFloodThreshold = 10 * time.Second
|
||||||
|
|
||||||
// Maximum number of messages to include in an IHAVE message. Also controls the maximum
|
// GossipSubMaxIHaveLength is the maximum number of messages to include in an IHAVE message.
|
||||||
// number of IHAVE ids we will accept and request with IWANT from a peer within a heartbeat,
|
// Also controls the maximum number of IHAVE ids we will accept and request with IWANT from a
|
||||||
// to protect from IHAVE floods. You should adjust this value from the default if your
|
// peer within a heartbeat, to protect from IHAVE floods. You should adjust this value from the
|
||||||
// system is pushing more than 5000 messages in GossipSubHistoryGossip heartbeats; with the
|
// default if your system is pushing more than 5000 messages in GossipSubHistoryGossip heartbeats;
|
||||||
// defaults this is 1666 messages/s.
|
// with the defaults this is 1666 messages/s.
|
||||||
GossipSubMaxIHaveLength = 5000
|
GossipSubMaxIHaveLength = 5000
|
||||||
|
|
||||||
// Maximum number of IHAVE messages to accept from a peer within a heartbeat.
|
// GossipSubMaxIHaveMessages is the maximum number of IHAVE messages to accept from a peer within a heartbeat.
|
||||||
GossipSubMaxIHaveMessages = 10
|
GossipSubMaxIHaveMessages = 10
|
||||||
|
|
||||||
// Time to wait for a message requested through IWANT following an IHAVE advertisement.
|
// Time to wait for a message requested through IWANT following an IHAVE advertisement.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user