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.