diff --git a/consensus/src/lib.rs b/consensus/src/lib.rs index 3033d2d5f0..99eacb9d19 100644 --- a/consensus/src/lib.rs +++ b/consensus/src/lib.rs @@ -63,6 +63,16 @@ pub struct FrontierBlockImport { _marker: PhantomData, } +impl, C> Clone for FrontierBlockImport { + fn clone(&self) -> Self { + FrontierBlockImport { + inner: self.inner.clone(), + client: self.client.clone(), + _marker: PhantomData, + } + } +} + impl FrontierBlockImport where B: BlockT, I: BlockImport> + Send + Sync, diff --git a/template/node/src/service.rs b/template/node/src/service.rs index e4c138eaed..388ecac53a 100644 --- a/template/node/src/service.rs +++ b/template/node/src/service.rs @@ -27,8 +27,17 @@ type FullBackend = sc_service::TFullBackend; type FullSelectChain = sc_consensus::LongestChain; pub enum ConsensusResult { - GrandPa(( - sc_finality_grandpa::GrandpaBlockImport, + Aura(( + sc_consensus_aura::AuraBlockImport< + Block, + FullClient, + FrontierBlockImport< + Block, + sc_finality_grandpa::GrandpaBlockImport, + FullClient + >, + AuraPair + >, sc_finality_grandpa::LinkHalf )), ManualSeal @@ -90,7 +99,7 @@ pub fn new_partial(config: &Configuration, manual_seal: bool) -> Result< let import_queue = sc_consensus_aura::import_queue::<_, _, _, AuraPair, _, _>( sc_consensus_aura::slot_duration(&*client)?, - aura_block_import, + aura_block_import.clone(), Some(Box::new(grandpa_block_import.clone())), None, client.clone(), @@ -103,7 +112,7 @@ pub fn new_partial(config: &Configuration, manual_seal: bool) -> Result< Ok(sc_service::PartialComponents { client, backend, task_manager, import_queue, keystore, select_chain, transaction_pool, inherent_data_providers, - other: ConsensusResult::GrandPa((grandpa_block_import, grandpa_link)) + other: ConsensusResult::Aura((aura_block_import, grandpa_link)) }) } @@ -129,7 +138,7 @@ pub fn new_full(config: Configuration, manual_seal: bool) -> Result { + ConsensusResult::Aura((_, _)) => { sc_service::build_network(sc_service::BuildNetworkParams { config: &config, client: client.clone(), @@ -217,7 +226,7 @@ pub fn new_full(config: Configuration, manual_seal: bool) -> Result { + ConsensusResult::Aura((aura_block_import, grandpa_link)) => { if role.is_authority() { let proposer = sc_basic_authorship::ProposerFactory::new( client.clone(), @@ -231,7 +240,7 @@ pub fn new_full(config: Configuration, manual_seal: bool) -> Result