Open axaysagathiya opened 1 month ago
There are 2 versions of the statement distribution protocol.
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.
This subsystem tracks equivocating validators and stops accepting information from them. It establishes a data-dependency order:
This subsystem is responsible for checking message signatures.
A: Initial State. Receive SignedFullStatement(Statement::Second): extract Statement, forward to Candidate Backing, proceed to B. Receive any other SignedFullStatement variant: drop it.
B: Receive any SignedFullStatement: check signature and determine whether the statement is new to us. if new, forward to Candidate Backing and circulate to other peers. Receive OverseerMessage::StopWork: proceed to C.
C: Receive any message for this block: drop it.
To implement v1, we need to handle the main 3 kinds of messages.
We need to have a separate Goroutine that will simultaneously process the requests we get from other validators to fetch the large statement for a candidate.
This Goroutine should ensure we process only some predecided number of requests simultaneously. Process the message and send back the large statement to the requester
Issue summary
This parachain subsystem is responsible for
plan