Documentation ¶
Index ¶
Constants ¶
const ( // GossipScoreThreshold when a peer's score drops below this threshold, no gossip is emitted towards that peer // and gossip from that peer is ignored. GossipScoreThreshold = -500 // PublishScoreThreshold when a peer's score drops below this threshold, self published messages are not propagated // towards this peer when (flood) publishing. PublishScoreThreshold = -1000 // GraylistScoreThreshold when a peer's score drops below this threshold, the peer is graylisted and its RPCs // are ignored. GraylistScoreThreshold = -2500 // AcceptPXScoreThreshold when a peer sends us PX information with a prune, we only accept it and connect to the // supplied peers if the originating peer's score exceeds this threshold. AcceptPXScoreThreshold = 1000 // OpportunisticGraftScoreThreshold when the median peer score in the mesh drops below this value, the router // may select more peers with score above the median to opportunistically graft on the mesh. OpportunisticGraftScoreThreshold = 3.5 // AtxProtocol is the protocol id for ATXs. AtxProtocol = "ax1" // ProposalProtocol is the protocol id for block proposals. ProposalProtocol = "pp1" // TxProtocol iis the protocol id for transactions. TxProtocol = "tx1" // BlockCertify is the protocol id for block certification. BlockCertify = "bc1" // BeaconProtocol is used currently only for recording metrics, but // potentially will become used as an actual protocol if we decide to merge // the beacon protocols. // https://github.com/spacemeshos/go-spacemesh/issues/4207 BeaconProtocol = "b1" // BeaconWeakCoinProtocol is the protocol id for beacon weak coin. BeaconWeakCoinProtocol = "bw1" // BeaconProposalProtocol is the protocol id for beacon proposals. BeaconProposalProtocol = "bp1" // BeaconFirstVotesProtocol is the protocol id for beacon first vote. BeaconFirstVotesProtocol = "bf1" // BeaconFollowingVotesProtocol is the protocol id for beacon following votes. BeaconFollowingVotesProtocol = "bo1" MalfeasanceProof = "mp1" )
Variables ¶
var ( WithValidatorInline = pubsub.WithValidatorInline WithValidatorConcurrency = pubsub.WithValidatorConcurrency )
var ErrValidationReject = errors.New("validation reject")
ErrValidationReject is returned by a GossipHandler to indicate that the pubsub validation result is ValidationReject. ValidationAccept is indicated by a nil error and ValidationIgnore is indicated by any error that is not a ErrValidationReject.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { Flood bool IsBootnode bool Bootnodes []peer.AddrInfo // Direct peers should be configured on both ends. Direct []peer.AddrInfo MaxMessageSize int PeerOutboundQueueSize int QueueSize int Throttle int EvictionStrategy timecache.Strategy }
Config for PubSub.
type GossipHandler ¶
GossipHandler is a function that is for receiving p2p messages.
func ChainGossipHandler ¶
func ChainGossipHandler(handlers ...GossipHandler) GossipHandler
ChainGossipHandler helper to chain multiple GossipHandler together. Called synchronously and in the order.
func DropPeerOnValidationReject ¶
func DropPeerOnValidationReject(handler GossipHandler, h host.Host, logger *zap.Logger) GossipHandler
DropPeerOnValidationReject wraps a gossip handler to provide a handler that drops a peer if the wrapped handler returns ErrValidationReject.
type GossipPubSub ¶ added in v1.4.2
type GossipPubSub struct {
// contains filtered or unexported fields
}
GossipPubSub is a spacemesh-specific wrapper around gossip protocol.
func (*GossipPubSub) ProtocolPeers ¶ added in v1.4.2
func (ps *GossipPubSub) ProtocolPeers(protocol string) []peer.ID
ProtocolPeers returns list of peers that are communicating in a given protocol.
func (*GossipPubSub) Register ¶ added in v1.4.2
func (ps *GossipPubSub) Register(topic string, handler GossipHandler, opts ...ValidatorOpt)
Register handler for topic.
type NullPubSub ¶ added in v1.4.2
type NullPubSub struct{}
func (*NullPubSub) ProtocolPeers ¶ added in v1.4.2
func (*NullPubSub) ProtocolPeers(protocol string) []peer.ID
ProtocolPeers implements PubSub.
type PublishSubsciber ¶
type PublishSubsciber interface { Publisher Subscriber }
PublishSubsciber common interface for publisher and subscribing.
type Subscriber ¶
type Subscriber interface {
Register(string, GossipHandler, ...ValidatorOpt)
}
Subscriber is an interface for subcribing to messages.
type SyncHandler ¶ added in v1.1.0
SyncHandler is a function that is for receiving synced data.
func DropPeerOnSyncValidationReject ¶ added in v1.1.0
func DropPeerOnSyncValidationReject(handler SyncHandler, h host.Host, logger *zap.Logger) SyncHandler
type ValidatorOpt ¶ added in v1.1.4
type ValidatorOpt = pubsub.ValidatorOpt