Initial GRANDPA integration (#866)

* implement grandpa client

* consensus gossip with arbitrary topics

* defer GRANDPA messages until referenced blocks imported

* set up communication for voter in a transparent way

* instantiate GRANDPA voter

* keep last round state on disk

* switch back to crates.io finality-grandpa

* update cargo.lock

* use new `collect_garbage` API

* update sync test framework and make public

* test that observers can observe

* fix warning

* use more idiomatic predicate for collecting garbage in gossip

* kill spaces

* fix date
This commit is contained in:
Robert Habermeier
2018-10-05 10:30:39 -04:00
committed by Gav Wood
parent 1cc0e3b6ea
commit 68b4be14ff
10 changed files with 1082 additions and 166 deletions
+3 -2
View File
@@ -68,7 +68,8 @@ impl Protocol {
fn new_consensus(&mut self, parent_hash: Hash) {
let old_consensus = self.live_consensus.take();
self.live_consensus = Some(parent_hash);
self.consensus_gossip.collect_garbage(old_consensus.as_ref());
self.consensus_gossip
.collect_garbage(|topic| old_consensus.as_ref().map_or(true, |h| topic != h));
}
}
@@ -105,7 +106,7 @@ impl Specialization<Block> for Protocol {
}
fn maintain_peers(&mut self, _ctx: &mut Context<Block>) {
self.consensus_gossip.collect_garbage(None);
self.consensus_gossip.collect_garbage(|_| true);
}
fn on_block_imported(&mut self, _ctx: &mut Context<Block>, _hash: Hash, _header: &Header) {