@@ -9,7 +9,9 @@ use parachain_template_runtime::{opaque::Block, Hash, RuntimeApi};
99
1010// Cumulus Imports
1111use cumulus_client_consensus_aura:: { AuraConsensus , BuildAuraConsensusParams , SlotProportion } ;
12- use cumulus_client_consensus_common:: ParachainConsensus ;
12+ use cumulus_client_consensus_common:: {
13+ ParachainBlockImport as TParachainBlockImport , ParachainConsensus ,
14+ } ;
1315use cumulus_client_network:: BlockAnnounceValidator ;
1416use cumulus_client_service:: {
1517 prepare_node_config, start_collator, start_full_node, StartCollatorParams , StartFullNodeParams ,
@@ -51,6 +53,8 @@ type ParachainClient = TFullClient<Block, RuntimeApi, ParachainExecutor>;
5153
5254type ParachainBackend = TFullBackend < Block > ;
5355
56+ type ParachainBlockImport = TParachainBlockImport < Arc < ParachainClient > > ;
57+
5458/// Starts a `ServiceBuilder` for a full service.
5559///
5660/// Use this macro if you don't actually need the full service, but just the builder in order to
@@ -64,7 +68,7 @@ pub fn new_partial(
6468 ( ) ,
6569 sc_consensus:: DefaultImportQueue < Block , ParachainClient > ,
6670 sc_transaction_pool:: FullPool < Block , ParachainClient > ,
67- ( Option < Telemetry > , Option < TelemetryWorkerHandle > ) ,
71+ ( ParachainBlockImport , Option < Telemetry > , Option < TelemetryWorkerHandle > ) ,
6872 > ,
6973 sc_service:: Error ,
7074> {
@@ -109,8 +113,11 @@ pub fn new_partial(
109113 client. clone ( ) ,
110114 ) ;
111115
116+ let block_import = ParachainBlockImport :: new ( client. clone ( ) ) ;
117+
112118 let import_queue = build_import_queue (
113119 client. clone ( ) ,
120+ block_import. clone ( ) ,
114121 config,
115122 telemetry. as_ref ( ) . map ( |telemetry| telemetry. handle ( ) ) ,
116123 & task_manager,
@@ -124,7 +131,7 @@ pub fn new_partial(
124131 task_manager,
125132 transaction_pool,
126133 select_chain : ( ) ,
127- other : ( telemetry, telemetry_worker_handle) ,
134+ other : ( block_import , telemetry, telemetry_worker_handle) ,
128135 } )
129136}
130137
@@ -163,7 +170,7 @@ async fn start_node_impl(
163170 let parachain_config = prepare_node_config ( parachain_config) ;
164171
165172 let params = new_partial ( & parachain_config) ?;
166- let ( mut telemetry, telemetry_worker_handle) = params. other ;
173+ let ( block_import , mut telemetry, telemetry_worker_handle) = params. other ;
167174
168175 let client = params. client . clone ( ) ;
169176 let backend = params. backend . clone ( ) ;
@@ -255,6 +262,7 @@ async fn start_node_impl(
255262 if validator {
256263 let parachain_consensus = build_consensus (
257264 client. clone ( ) ,
265+ block_import,
258266 prometheus_registry. as_ref ( ) ,
259267 telemetry. as_ref ( ) . map ( |t| t. handle ( ) ) ,
260268 & task_manager,
@@ -304,6 +312,7 @@ async fn start_node_impl(
304312/// Build the import queue for the parachain runtime.
305313fn build_import_queue (
306314 client : Arc < ParachainClient > ,
315+ block_import : ParachainBlockImport ,
307316 config : & Configuration ,
308317 telemetry : Option < TelemetryHandle > ,
309318 task_manager : & TaskManager ,
@@ -318,8 +327,8 @@ fn build_import_queue(
318327 _ ,
319328 _ ,
320329 > ( cumulus_client_consensus_aura:: ImportQueueParams {
321- block_import : client . clone ( ) ,
322- client : client . clone ( ) ,
330+ block_import,
331+ client,
323332 create_inherent_data_providers : move |_, _| async move {
324333 let timestamp = sp_timestamp:: InherentDataProvider :: from_system_time ( ) ;
325334
@@ -340,6 +349,7 @@ fn build_import_queue(
340349
341350fn build_consensus (
342351 client : Arc < ParachainClient > ,
352+ block_import : ParachainBlockImport ,
343353 prometheus_registry : Option < & Registry > ,
344354 telemetry : Option < TelemetryHandle > ,
345355 task_manager : & TaskManager ,
@@ -389,7 +399,7 @@ fn build_consensus(
389399 Ok ( ( slot, timestamp, parachain_inherent) )
390400 }
391401 } ,
392- block_import : client . clone ( ) ,
402+ block_import,
393403 para_client : client,
394404 backoff_authoring_blocks : Option :: < ( ) > :: None ,
395405 sync_oracle,
0 commit comments