From f2bc0f57b6ef15b856faa5d701989067f1b65bc6 Mon Sep 17 00:00:00 2001 From: Bradley Olson <34992650+BradleyOlson64@users.noreply.github.com> Date: Fri, 3 Mar 2023 03:17:17 -0800 Subject: [PATCH] Removing Outdated References to Misbehavior Arbitration Subsystem (#6814) * Provisioner guide entry update * Removing mentions of misbehavior arbitration sub * fmt --- polkadot/node/subsystem-types/src/messages.rs | 3 ++- polkadot/roadmap/implementers-guide/src/SUMMARY.md | 1 - .../src/node/backing/statement-distribution.md | 2 +- .../src/node/utility/misbehavior-arbitration.md | 7 ------- .../implementers-guide/src/node/utility/provisioner.md | 9 ++++++++- .../implementers-guide/src/types/overseer-protocol.md | 3 ++- 6 files changed, 13 insertions(+), 12 deletions(-) delete mode 100644 polkadot/roadmap/implementers-guide/src/node/utility/misbehavior-arbitration.md diff --git a/polkadot/node/subsystem-types/src/messages.rs b/polkadot/node/subsystem-types/src/messages.rs index 1acafbd1cf..1ef5cea794 100644 --- a/polkadot/node/subsystem-types/src/messages.rs +++ b/polkadot/node/subsystem-types/src/messages.rs @@ -68,7 +68,8 @@ pub enum CandidateBackingMessage { /// given relay-parent (ref. by hash). This candidate must be validated. Second(Hash, CandidateReceipt, PoV), /// Note a validator's statement about a particular candidate. Disagreements about validity must be escalated - /// to a broader check by Misbehavior Arbitration. Agreements are simply tallied until a quorum is reached. + /// to a broader check by the Disputes Subsystem, though that escalation is deferred until the approval voting + /// stage to guarantee availability. Agreements are simply tallied until a quorum is reached. Statement(Hash, SignedFullStatement), } diff --git a/polkadot/roadmap/implementers-guide/src/SUMMARY.md b/polkadot/roadmap/implementers-guide/src/SUMMARY.md index c504b9ac19..41b52cf229 100644 --- a/polkadot/roadmap/implementers-guide/src/SUMMARY.md +++ b/polkadot/roadmap/implementers-guide/src/SUMMARY.md @@ -63,7 +63,6 @@ - [Provisioner](node/utility/provisioner.md) - [Network Bridge](node/utility/network-bridge.md) - [Gossip Support](node/utility/gossip-support.md) - - [Misbehavior Arbitration](node/utility/misbehavior-arbitration.md) - [Peer Set Manager](node/utility/peer-set-manager.md) - [Runtime API Requests](node/utility/runtime-api.md) - [Chain API Requests](node/utility/chain-api.md) diff --git a/polkadot/roadmap/implementers-guide/src/node/backing/statement-distribution.md b/polkadot/roadmap/implementers-guide/src/node/backing/statement-distribution.md index 39ea1c630d..4ce3ee518c 100644 --- a/polkadot/roadmap/implementers-guide/src/node/backing/statement-distribution.md +++ b/polkadot/roadmap/implementers-guide/src/node/backing/statement-distribution.md @@ -21,7 +21,7 @@ Output: Implemented as a gossip protocol. Handle updates to our view and peers' views. Neighbor packets are used to inform peers which chain heads we are interested in data for. -It is responsible for distributing signed statements that we have generated and forwarding them, and for detecting a variety of Validator misbehaviors for reporting to [Misbehavior Arbitration](../utility/misbehavior-arbitration.md). During the Backing stage of the inclusion pipeline, it's the main point of contact with peer nodes. On receiving a signed statement from a peer in the same backing group, assuming the peer receipt state machine is in an appropriate state, it sends the Candidate Receipt to the [Candidate Backing subsystem](candidate-backing.md) to handle the validator's statement. On receiving `StatementDistributionMessage::Share` we make sure to send messages to our backing group in addition to random other peers, to ensure a fast backing process and getting all statements quickly for distribution. +It is responsible for distributing signed statements that we have generated and forwarding them, and for detecting a variety of Validator misbehaviors for reporting to the [Provisioner Subsystem](../utility/provisioner.md). During the Backing stage of the inclusion pipeline, it's the main point of contact with peer nodes. On receiving a signed statement from a peer in the same backing group, assuming the peer receipt state machine is in an appropriate state, it sends the Candidate Receipt to the [Candidate Backing subsystem](candidate-backing.md) to handle the validator's statement. On receiving `StatementDistributionMessage::Share` we make sure to send messages to our backing group in addition to random other peers, to ensure a fast backing process and getting all statements quickly for distribution. Track equivocating validators and stop accepting information from them. Establish a data-dependency order: diff --git a/polkadot/roadmap/implementers-guide/src/node/utility/misbehavior-arbitration.md b/polkadot/roadmap/implementers-guide/src/node/utility/misbehavior-arbitration.md deleted file mode 100644 index 820bafd9d6..0000000000 --- a/polkadot/roadmap/implementers-guide/src/node/utility/misbehavior-arbitration.md +++ /dev/null @@ -1,7 +0,0 @@ -# Misbehavior Arbitration - -The Misbehavior Arbitration subsystem collects reports of validator misbehavior, and slashes the stake of both misbehaving validator nodes and false accusers. - -> TODO: It is not yet fully specified; that problem is postponed to a future PR. - -One policy question we've decided even so: in the event that MA has to call all validators to check some block about which some validators disagree, the minority voters all get slashed, and the majority voters all get rewarded. Validators which abstain have a minor slash penalty, but probably not in the same order of magnitude as those who vote wrong. diff --git a/polkadot/roadmap/implementers-guide/src/node/utility/provisioner.md b/polkadot/roadmap/implementers-guide/src/node/utility/provisioner.md index fb97d52f1a..3674767810 100644 --- a/polkadot/roadmap/implementers-guide/src/node/utility/provisioner.md +++ b/polkadot/roadmap/implementers-guide/src/node/utility/provisioner.md @@ -30,7 +30,14 @@ Dispute resolution is complex and is explained in substantially more detail [her ## Protocol -Input: [`ProvisionerMessage`](../../types/overseer-protocol.md#provisioner-message). Backed candidates come from the [Candidate Backing subsystem](../backing/candidate-backing.md), signed bitfields come from the [Bitfield Distribution subsystem](../availability/bitfield-distribution.md), and misbehavior reports and disputes come from the [Misbehavior Arbitration subsystem](misbehavior-arbitration.md). +Input: [`ProvisionerMessage`](../../types/overseer-protocol.md#provisioner-message). Backed candidates come from the [Candidate Backing subsystem](../backing/candidate-backing.md), signed bitfields come from the [Bitfield Distribution subsystem](../availability/bitfield-distribution.md), and disputes come from the [Disputes Subsystem](../disputes/dispute-coordinator.md). Misbehavior reports are currently sent from the [Candidate Backing subsystem](../backing/candidate-backing.md) and contain the following misbehaviors: + +1. `Misbehavior::ValidityDoubleVote` +2. `Misbehavior::MultipleCandidates` +3. `Misbehavior::UnauthorizedStatement` +4. `Misbehavior::DoubleSign` + +But we choose not to punish these forms of misbehavior for the time being. Risks from misbehavior are sufficiently mitigated at the protocol level via reputation changes. Punitive actions here may become desirable enough to dedicate time to in the future. At initialization, this subsystem has no outputs. diff --git a/polkadot/roadmap/implementers-guide/src/types/overseer-protocol.md b/polkadot/roadmap/implementers-guide/src/types/overseer-protocol.md index 41d6246703..7b25b0ae78 100644 --- a/polkadot/roadmap/implementers-guide/src/types/overseer-protocol.md +++ b/polkadot/roadmap/implementers-guide/src/types/overseer-protocol.md @@ -309,7 +309,8 @@ enum CandidateBackingMessage { /// The PoV is expected to match the `pov_hash` in the descriptor. Second(Hash, CandidateReceipt, PoV), /// Note a peer validator's statement about a particular candidate. Disagreements about validity must be escalated - /// to a broader check by Misbehavior Arbitration. Agreements are simply tallied until a quorum is reached. + /// to a broader check by the Disputes Subsystem, though that escalation is deferred until the approval voting + /// stage to guarantee availability. Agreements are simply tallied until a quorum is reached. Statement(Statement), } ```