mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-19 22:51:03 +00:00
Implement the Statement Distribution Subsystem (#1326)
* set up data types and control flow for statement distribution * add some set-like methods to View * implement sending to peers * start fixing equivocation handling * Add a section to the statement distribution subsystem on equivocations and flood protection * fix typo and amend wording * implement flood protection * have peer knowledge tracker follow when peer first learns about a candidate * send dependents after circulating * add another TODO * trigger send in one more place * refactors from review * send new statements to candidate backing * instantiate active head data with runtime API values * track our view changes and peer view changes * apply a benefit to peers who send us statements we want * remove unneeded TODO * add some comments and improve Hash implementation * start tests and fix `note_statement` * test active_head seconding logic * test that the per-peer tracking logic works * test per-peer knowledge tracker * test that peer view updates lead to messages being sent * test statement circulation * address review comments * have view set methods return references
This commit is contained in:
committed by
GitHub
parent
72d0f09659
commit
ac8e1ca206
@@ -595,7 +595,7 @@ pub struct Activity(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec<u8
|
||||
|
||||
/// Statements that can be made about parachain candidates. These are the
|
||||
/// actual values that are signed.
|
||||
#[derive(Clone, PartialEq, Eq, Encode, Decode)]
|
||||
#[derive(Clone, PartialEq, Eq, Encode, Decode, Hash)]
|
||||
#[cfg_attr(feature = "std", derive(Debug))]
|
||||
pub enum CompactStatement {
|
||||
/// Proposal of a parachain candidate.
|
||||
@@ -609,6 +609,18 @@ pub enum CompactStatement {
|
||||
Invalid(Hash),
|
||||
}
|
||||
|
||||
impl CompactStatement {
|
||||
/// Get the underlying candidate hash this references.
|
||||
pub fn candidate_hash(&self) -> &Hash {
|
||||
match *self {
|
||||
CompactStatement::Candidate(ref h)
|
||||
| CompactStatement::Valid(ref h)
|
||||
| CompactStatement::Invalid(ref h)
|
||||
=> h
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// A signed compact statement, suitable to be sent to the chain.
|
||||
pub type SignedStatement = Signed<CompactStatement>;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user