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" // HareProtocol is the protocol id for hare messages. HareProtocol = "hr1" // 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 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 }
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 log.Log) GossipHandler
DropPeerValidationReject wraps a gossip handler to provide a handler that drops a peer if the wrapped handler returns ErrValidationReject.
type PubSub ¶
type PubSub struct {
// contains filtered or unexported fields
}
PubSub is a spacemesh-specific wrapper around gossip protocol.
func (*PubSub) ProtocolPeers ¶
ProtocolPeers returns list of peers that are communicating in a given protocol.
func (*PubSub) Register ¶
func (ps *PubSub) Register(topic string, handler GossipHandler)
Register handler for topic.
type PublishSubsciber ¶
type PublishSubsciber interface { Publisher Subscriber }
PublishSubsciber common interface for publisher and subscribing.
type Subscriber ¶
type Subscriber interface {
Register(string, GossipHandler)
}
Subscriber is an interface for subcribing to messages.