Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var UnknownBanErr = errors.New("unknown ban")
View Source
var UnknownRecordErr = errors.New("unknown record")
Functions ¶
This section is empty.
Types ¶
type DecayApplicationScores ¶
type DecayApplicationScores struct { ValidResponseDecay float64 ErrorResponseDecay float64 RejectedPayloadDecay float64 DecayToZero float64 }
func (*DecayApplicationScores) Apply ¶
func (d *DecayApplicationScores) Apply(rec *scoreRecord)
type ExtendedPeerstore ¶
type ExtendedPeerstore interface { peerstore.Peerstore ScoreDatastore peerstore.CertifiedAddrBook PeerBanStore IPBanStore }
ExtendedPeerstore defines a type-safe API to work with additional peer metadata based on a libp2p peerstore.Peerstore
type GossipScores ¶
type GossipScores struct { Total float64 `json:"total"` Blocks TopicScores `json:"blocks"` // fully zeroed if the peer has not been in the mesh on the topic IPColocationFactor float64 `json:"IPColocationFactor"` BehavioralPenalty float64 `json:"behavioralPenalty"` }
func (GossipScores) Apply ¶
func (g GossipScores) Apply(rec *scoreRecord)
type IPBanStore ¶
type IPBanStore interface { // SetIPBanExpiration create the IP ban with expiration time. // If expiry == time.Time{} then the ban is deleted. SetIPBanExpiration(ip net.IP, expiry time.Time) error // GetIPBanExpiration gets the IP ban expiration time, or UnknownBanErr error if none exists. GetIPBanExpiration(ip net.IP) (time.Time, error) }
type IncrementErrorResponses ¶
type IncrementErrorResponses struct {
Cap float64
}
func (IncrementErrorResponses) Apply ¶
func (i IncrementErrorResponses) Apply(rec *scoreRecord)
type IncrementRejectedPayloads ¶
type IncrementRejectedPayloads struct {
Cap float64
}
func (IncrementRejectedPayloads) Apply ¶
func (i IncrementRejectedPayloads) Apply(rec *scoreRecord)
type IncrementValidResponses ¶
type IncrementValidResponses struct {
Cap float64
}
func (IncrementValidResponses) Apply ¶
func (i IncrementValidResponses) Apply(rec *scoreRecord)
type PeerBanStore ¶
type PeerBanStore interface { // SetPeerBanExpiration create the peer ban with expiration time. // If expiry == time.Time{} then the ban is deleted. SetPeerBanExpiration(id peer.ID, expiry time.Time) error // GetPeerBanExpiration gets the peer ban expiration time, or UnknownBanErr error if none exists. GetPeerBanExpiration(id peer.ID) (time.Time, error) }
type PeerScores ¶
type PeerScores struct { Gossip GossipScores `json:"gossip"` ReqResp ReqRespScores `json:"reqResp"` }
type ReqRespScores ¶
type ScoreDatastore ¶
type ScoreDatastore interface { // GetPeerScores returns the current scores for the specified peer GetPeerScores(id peer.ID) (PeerScores, error) // GetPeerScore returns the current combined score for the specified peer GetPeerScore(id peer.ID) (float64, error) // SetScore applies the given store diff to the specified peer SetScore(id peer.ID, diff ScoreDiff) (PeerScores, error) }
ScoreDatastore defines a type-safe API for getting and setting libp2p peer score information
type ScoreDiff ¶
type ScoreDiff interface {
Apply(score *scoreRecord)
}
ScoreDiff defines a type-safe batch of changes to apply to the peer-scoring record of the peer. The scoreRecord the diff is applied to is private: diffs can only be defined in this package, to ensure changes to the record are non-breaking.
Click to show internal directories.
Click to hide internal directories.