Evict inactive peers from the collator protocol peer-set (#2680)

* malicious reputation cost is fatal

* make ReportBad a malicious cost

* futures control-flow for cleaning up inactive collator peers

* guide: network bridge updates

* add `PeerDisconnected` message

* guide: update

* reverse order

* remember to match

* implement disconnect peer in network bridge

* implement disconnect_inactive_peers

* test

* remove println

* don't hardcore policy

* add fuse outside of loop

* use default eviction policy
This commit is contained in:
Robert Habermeier
2021-03-24 13:32:28 +01:00
committed by GitHub
parent 0f8b6f2f6e
commit b8867d71bc
12 changed files with 437 additions and 38 deletions
@@ -86,6 +86,10 @@ Map the message onto the corresponding [Event Handler](#event-handlers) based on
- Adjust peer reputation according to cost or benefit provided
### DisconnectPeer
- Disconnect the peer from the peer-set requested, if connected.
### SendValidationMessage / SendValidationMessages
- Issue a corresponding `ProtocolMessage` to each listed peer on the validation peer-set.
@@ -328,7 +328,9 @@ enum PeerSet {
enum NetworkBridgeMessage {
/// Report a cost or benefit of a peer. Negative values are costs, positive are benefits.
ReportPeer(PeerSet, PeerId, cost_benefit: i32),
ReportPeer(PeerId, cost_benefit: i32),
/// Disconnect a peer from the given peer-set without affecting their reputation.
DisconnectPeer(PeerId, PeerSet),
/// Send a message to one or more peers on the validation peerset.
SendValidationMessage([PeerId], ValidationProtocolV1),
/// Send a message to one or more peers on the collation peerset.