Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
cbaf2f3
expand subsystems descriptions independent of subsystems overview
coriolinus Jun 2, 2020
45674fa
Reorder subsystem descriptions, add some messages
coriolinus Jun 2, 2020
cc68890
add some more message types, Statement Distribution overview
coriolinus Jun 2, 2020
4679c5f
add more detail on Statement Distribution, Misbehavior Arbitration
coriolinus Jun 2, 2020
d22b23a
Merge remote-tracking branch 'origin/master' into prgn-guide-subsyste…
coriolinus Jun 3, 2020
97de4c4
intentionally punt MA details for a future PR
coriolinus Jun 3, 2020
c938d16
reduce duplication from overseer signal handling
coriolinus Jun 4, 2020
1d6337b
reword for clarity
coriolinus Jun 4, 2020
0803ee5
clarify: other modules and subsystems also get to talk to the network
coriolinus Jun 4, 2020
572118c
Merge remote-tracking branch 'origin/master' into prgn-guide-subsyste…
coriolinus Jun 9, 2020
07df04a
finish current work on candidate selection
coriolinus Jun 9, 2020
45a548a
update candidate backing subsystem description according to current t…
coriolinus Jun 9, 2020
460d581
update mechanism for candidate backing to report collator misbehavior…
coriolinus Jun 9, 2020
f084834
sketch out the peer receipt state machine
coriolinus Jun 9, 2020
a46bd64
Fix typo in roadmap/implementors-guide/guide.md
coriolinus Jun 9, 2020
ec87322
Don't specify 'peer validators', as messages from non-validator peers…
coriolinus Jun 9, 2020
e8137ad
clarify instancing of peer receipt state machine
coriolinus Jun 9, 2020
d8085fa
add section on peer knowledge tracking
coriolinus Jun 9, 2020
6fc1316
fix typo in roadmap/implementors-guide/guide.md
coriolinus Jun 9, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
update candidate backing subsystem description according to current t…
…hought
  • Loading branch information
coriolinus committed Jun 9, 2020
commit 45a548ada5f24440ed720bebdfbae30ecbeafa96
12 changes: 7 additions & 5 deletions roadmap/implementors-guide/guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -988,10 +988,7 @@ Furthermore, the protocols by which subsystems communicate with each other shoul

#### Description

The Candidate Selection subsystem is notified by the Overseer on two events:

- a new parablock candidate is available
- a peer has seconded a parablock candidate
The Candidate Selection subsystem is notified by the Overseer when a new parablock candidate is available.

This module is only ever interested in parablocks assigned to the particular parachain which this validator is currently handling.

Expand All @@ -1017,10 +1014,12 @@ Several approaches have been selected, but all have some issues:

#### Description

The Candidate Backing subsystem ensures at least one preliminary validator commits to each parablock's correctness. Parablocks for which no validator will assert correctness are discarded. If the block later proves invalid, the initial backers are slashable; this gives polkadot a rational threat model during subsequent stages.
The Candidate Backing subsystem ensures every parablock considered for relay block inclusion has been seconded by at least one validator, and approved by a quorum. Parablocks for which no validator will assert correctness are discarded. If the block later proves invalid, the initial backers are slashable; this gives polkadot a rational threat model during subsequent stages.

Its role is to produce backable candidates for inclusion in new relay-chain blocks. It does so by issuing signed [Statements](#Statement-type) and tracking received statements signed by other validators. Once enough statements are received, they can be combined into backing for specific candidates.

Note that though the candidate backing subsystem attempts to produce as many backable candidates as possible, it does _not_ attempt to choose a single authoritative one. The choice of which actually gets included is ultimately up to the block author, by whatever metrics it may use; those are opaque to this subsystem.

#### Protocol

The **Candidate Selection** subsystem is the primary source of non-overseer messages into this subsystem. That subsystem generates appropriate [`CandidateBackingSubsystemMessage`s](#Candidate-Backing-Subsystem-Message), and passes them to this subsystem.
Expand Down Expand Up @@ -1197,6 +1196,9 @@ enum CandidateBackingSubsystemMessage {
/// Note that the Candidate Backing subsystem should second the given candidate in the context of the
/// given relay-parent (ref. by hash). This candidate must be validated.
Second(Hash, CandidateReceipt),
/// 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.
Statement(Statement),
}
```

Expand Down