Peer management protocol#
A peer is a pair
addr is its IPv4/6 address and
port is its port.
A peer management structure is a tuple (G, B, C), where G is the set of good peers, B is the set of banned peers, and C is the set of connected peers*, satisfying the following conditions:
- \(G \cap B = \emptyset\),
- \(C \subseteq G\),
- \(G \subseteq \peers\),
- \(B \subseteq \peers\).
Peers penalization and blacklisting#
A penalty is a tuple
descr is a misbehaviour description, and
score is a penalty score.
A penalty score defines how bad a concrete kind of misbehaviour is.
Penalties are divided into four categories:
- NonDeliveryPenalty - applied when a peer did not deliver the requested modifier in time
- MisbehaviorPenalty - applied when some modifier delivered by a peer appeared to be invalid
- SpamPenalty - applied when a peer-delivered non-requested modifier
- PermanentPenalty - applied to peers deviating from an actual network protocol
Once some penalty is applied, a penalised peer is added to the penalty book.
A penalty book is a mapping
ip -> (
ip is a peer IP address,
score is an accumulated penalty score and
ts is a timestamp when a corresponding peer was penalised last time.
Penalties of type
SpamPenalty are not applied to the same peer repeatedly within a safe interval.
A safe interval is a delay between penalties application.
Once some peer accumulates a critical penalty score, it is added to the blacklist.
A blacklist is a mapping
ip is a peer IP address and
ts is a timestamp a peer is banned till.
PermanentPenalty is applied immediately and leads to a permanent ban of a peer
A peer discovery protocol requests new peers from a source and inserts them into the set of good peers G.
Generally, a source may be another peer, a trusted central server or an untrusted communication channel (e.g. IRC, Twitter, ...).