Use JustifiedBlockAnnounceValidator for parachain block announce validator (#96)

This commit is contained in:
Cecile Tonglet
2020-05-19 17:56:31 +02:00
committed by GitHub
parent dfc95f0d0e
commit 1727dc6291
7 changed files with 115 additions and 24 deletions
+12 -1
View File
@@ -16,7 +16,9 @@
//! Cumulus Collator implementation for Substrate.
use cumulus_network::WaitToAnnounce;
use cumulus_network::{
DelayedBlockAnnounceValidator, JustifiedBlockAnnounceValidator, WaitToAnnounce,
};
use cumulus_primitives::{
inherents::VALIDATION_FUNCTION_PARAMS_IDENTIFIER as VFP_IDENT,
validation_function_params::ValidationFunctionParams,
@@ -295,6 +297,7 @@ pub struct CollatorBuilder<Block: BlockT, PF, BI, Backend, Client> {
para_id: ParaId,
client: Arc<Client>,
announce_block: Arc<dyn Fn(Block::Hash, Vec<u8>) + Send + Sync>,
delayed_block_announce_validator: DelayedBlockAnnounceValidator<Block>,
_marker: PhantomData<(Block, Backend)>,
}
@@ -309,6 +312,7 @@ impl<Block: BlockT, PF, BI, Backend, Client>
para_id: ParaId,
client: Arc<Client>,
announce_block: Arc<dyn Fn(Block::Hash, Vec<u8>) + Send + Sync>,
delayed_block_announce_validator: DelayedBlockAnnounceValidator<Block>,
) -> Self {
Self {
proposer_factory,
@@ -317,6 +321,7 @@ impl<Block: BlockT, PF, BI, Backend, Client>
para_id,
client,
announce_block,
delayed_block_announce_validator,
_marker: PhantomData,
}
}
@@ -351,6 +356,10 @@ where
Spawner: Spawn + Clone + Send + Sync + 'static,
Extrinsic: codec::Codec + Send + Sync + 'static,
{
self.delayed_block_announce_validator.set(
Box::new(JustifiedBlockAnnounceValidator::new(Vec::new(), polkadot_client.clone())),
);
let follow =
match cumulus_consensus::follow_polkadot(self.para_id, self.client, polkadot_client) {
Ok(follow) => follow,
@@ -502,6 +511,7 @@ mod tests {
let _ = env_logger::try_init();
let spawner = futures::executor::ThreadPool::new().unwrap();
let announce_block = |_, _| ();
let block_announce_validator = DelayedBlockAnnounceValidator::new();
let builder = CollatorBuilder::new(
DummyFactory,
@@ -510,6 +520,7 @@ mod tests {
id,
Arc::new(TestClientBuilder::new().build()),
Arc::new(announce_block),
block_announce_validator,
);
let context = builder
.build(