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:
Robert Habermeier
2020-07-06 11:16:17 -04:00
committed by GitHub
parent 72d0f09659
commit ac8e1ca206
8 changed files with 1496 additions and 15 deletions
+22
View File
@@ -4831,6 +4831,28 @@ dependencies = [
"westend-runtime",
]
[[package]]
name = "polkadot-statement-distribution"
version = "0.1.0"
dependencies = [
"arrayvec 0.5.1",
"assert_matches",
"futures 0.3.5",
"futures-timer 3.0.2",
"indexmap",
"log 0.4.8",
"parity-scale-codec",
"parking_lot 0.10.2",
"polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-primitives",
"polkadot-subsystem-test-helpers",
"sp-keyring",
"sp-runtime",
"sp-staking",
"streamunordered",
]
[[package]]
name = "polkadot-statement-table"
version = "0.8.14"