@@ -32,14 +32,14 @@ use cumulus_primitives_core::{
32
32
ParaId ,
33
33
} ;
34
34
use cumulus_relay_chain_interface:: { OverseerHandle , RelayChainInterface } ;
35
- use polkadot_service:: NativeExecutionDispatch ;
36
35
use sc_consensus:: ImportQueue ;
37
- use sc_executor:: NativeElseWasmExecutor ;
36
+ use sc_executor:: WasmExecutor ;
38
37
use sc_network:: NetworkBlock ;
39
38
use sc_network_sync:: SyncingService ;
40
39
use sc_service:: { Configuration , TFullBackend , TFullClient , TaskManager } ;
41
40
use sc_telemetry:: { Telemetry , TelemetryHandle , TelemetryWorker , TelemetryWorkerHandle } ;
42
41
use sp_api:: ConstructRuntimeApi ;
42
+ use sp_io:: SubstrateHostFunctions ;
43
43
use sp_keystore:: KeystorePtr ;
44
44
use sp_runtime:: traits:: BlakeTwo256 ;
45
45
use std:: { sync:: Arc , time:: Duration } ;
@@ -54,26 +54,31 @@ type Header = sp_runtime::generic::Header<BlockNumber, sp_runtime::traits::Blake
54
54
55
55
pub ( crate ) type Block = sp_runtime:: generic:: Block < Header , sp_runtime:: OpaqueExtrinsic > ;
56
56
57
- type ParachainExecutor < Executor > = NativeElseWasmExecutor < Executor > ;
57
+ #[ cfg( not( feature = "runtime-benchmarks" ) ) ]
58
+ type HostFunctions = SubstrateHostFunctions ;
59
+ #[ cfg( feature = "runtime-benchmarks" ) ]
60
+ type HostFunctions = ( SubstrateHostFunctions , frame_benchmarking:: benchmarking:: HostFunctions ) ;
58
61
59
- type ParachainClient < RuntimeApi , Executor > = TFullClient < Block , RuntimeApi , ParachainExecutor < Executor > > ;
62
+ type ParachainExecutor = WasmExecutor < HostFunctions > ;
63
+
64
+ type ParachainClient < RuntimeApi > = TFullClient < Block , RuntimeApi , ParachainExecutor > ;
60
65
61
66
type ParachainBackend = TFullBackend < Block > ;
62
67
63
- type ParachainBlockImport < RuntimeApi , Executor > =
64
- TParachainBlockImport < Block , Arc < ParachainClient < RuntimeApi , Executor > > , ParachainBackend > ;
68
+ type ParachainBlockImport < RuntimeApi > =
69
+ TParachainBlockImport < Block , Arc < ParachainClient < RuntimeApi > > , ParachainBackend > ;
65
70
66
- pub ( crate ) type TransactionPool < Block , RuntimeApi , Executor > =
67
- sc_transaction_pool:: FullPool < Block , TFullClient < Block , RuntimeApi , Executor > > ;
71
+ pub ( crate ) type TransactionPool < Block , RuntimeApi > =
72
+ sc_transaction_pool:: FullPool < Block , TFullClient < Block , RuntimeApi , WasmExecutor < HostFunctions > > > ;
68
73
69
- type PartialComponents < Block , RuntimeApi , Executor , Telemetry , TelemetryWorkerHandle > = sc_service:: PartialComponents <
70
- TFullClient < Block , RuntimeApi , NativeElseWasmExecutor < Executor > > ,
74
+ type PartialComponents < Block , RuntimeApi , Telemetry , TelemetryWorkerHandle > = sc_service:: PartialComponents <
75
+ TFullClient < Block , RuntimeApi , WasmExecutor < HostFunctions > > ,
71
76
TFullBackend < Block > ,
72
77
( ) ,
73
78
sc_consensus:: DefaultImportQueue < Block > ,
74
- TransactionPool < Block , RuntimeApi , NativeElseWasmExecutor < Executor > > ,
79
+ TransactionPool < Block , RuntimeApi > ,
75
80
(
76
- ParachainBlockImport < RuntimeApi , Executor > ,
81
+ ParachainBlockImport < RuntimeApi > ,
77
82
Option < Telemetry > ,
78
83
Option < TelemetryWorkerHandle > ,
79
84
) ,
@@ -113,26 +118,23 @@ impl sc_executor::NativeExecutionDispatch for PeregrineRuntimeExecutor {
113
118
///
114
119
/// Use this macro if you don't actually need the full service, but just the
115
120
/// builder in order to be able to perform chain operations.
116
- pub ( crate ) fn new_partial < RuntimeApi , Executor , BIQ > (
121
+ pub ( crate ) fn new_partial < RuntimeApi , BIQ > (
117
122
config : & Configuration ,
118
123
build_import_queue : BIQ ,
119
- ) -> Result < PartialComponents < Block , RuntimeApi , Executor , Telemetry , TelemetryWorkerHandle > , sc_service:: Error >
124
+ ) -> Result < PartialComponents < Block , RuntimeApi , Telemetry , TelemetryWorkerHandle > , sc_service:: Error >
120
125
where
121
- RuntimeApi : ConstructRuntimeApi < Block , TFullClient < Block , RuntimeApi , NativeElseWasmExecutor < Executor > > >
122
- + Send
123
- + Sync
124
- + ' static ,
126
+ RuntimeApi :
127
+ ConstructRuntimeApi < Block , TFullClient < Block , RuntimeApi , WasmExecutor < HostFunctions > > > + Send + Sync + ' static ,
125
128
RuntimeApi :: RuntimeApi : sp_transaction_pool:: runtime_api:: TaggedTransactionQueue < Block >
126
129
+ sp_api:: Metadata < Block >
127
130
+ sp_session:: SessionKeys < Block >
128
131
+ sp_api:: ApiExt < Block >
129
132
+ sp_offchain:: OffchainWorkerApi < Block >
130
133
+ sp_block_builder:: BlockBuilder < Block > ,
131
134
sc_client_api:: StateBackendFor < TFullBackend < Block > , Block > : sp_state_machine:: Backend < BlakeTwo256 > ,
132
- Executor : NativeExecutionDispatch + ' static ,
133
135
BIQ : FnOnce (
134
- Arc < TFullClient < Block , RuntimeApi , NativeElseWasmExecutor < Executor > > > ,
135
- ParachainBlockImport < RuntimeApi , Executor > ,
136
+ Arc < TFullClient < Block , RuntimeApi , WasmExecutor < HostFunctions > > > ,
137
+ ParachainBlockImport < RuntimeApi > ,
136
138
& Configuration ,
137
139
Option < TelemetryHandle > ,
138
140
& TaskManager ,
@@ -149,7 +151,14 @@ where
149
151
} )
150
152
. transpose ( ) ?;
151
153
152
- let executor = sc_service:: new_native_or_wasm_executor ( config) ;
154
+ #[ allow( deprecated) ]
155
+ let executor = ParachainExecutor :: new (
156
+ config. wasm_method ,
157
+ config. default_heap_pages ,
158
+ config. max_runtime_instances ,
159
+ None ,
160
+ config. runtime_cache_size ,
161
+ ) ;
153
162
154
163
let ( client, backend, keystore_container, task_manager) = sc_service:: new_full_parts :: < Block , RuntimeApi , _ > (
155
164
config,
@@ -173,7 +182,7 @@ where
173
182
Arc :: clone ( & client) ,
174
183
) ;
175
184
176
- let block_import = ParachainBlockImport :: < RuntimeApi , Executor > :: new ( Arc :: clone ( & client) , Arc :: clone ( & backend) ) ;
185
+ let block_import = ParachainBlockImport :: < RuntimeApi > :: new ( Arc :: clone ( & client) , Arc :: clone ( & backend) ) ;
177
186
178
187
let import_queue = build_import_queue (
179
188
Arc :: clone ( & client) ,
@@ -202,7 +211,7 @@ where
202
211
/// runtime api.
203
212
#[ allow( clippy:: too_many_arguments) ]
204
213
#[ sc_tracing:: logging:: prefix_logs_with( "Parachain" ) ]
205
- async fn start_node_impl < RuntimeApi , Executor , RB , BIQ > (
214
+ async fn start_node_impl < RuntimeApi , RB , BIQ > (
206
215
parachain_config : Configuration ,
207
216
polkadot_config : Configuration ,
208
217
collator_options : CollatorOptions ,
@@ -212,13 +221,11 @@ async fn start_node_impl<RuntimeApi, Executor, RB, BIQ>(
212
221
hwbench : Option < sc_sysinfo:: HwBench > ,
213
222
) -> sc_service:: error:: Result < (
214
223
TaskManager ,
215
- Arc < TFullClient < Block , RuntimeApi , NativeElseWasmExecutor < Executor > > > ,
224
+ Arc < TFullClient < Block , RuntimeApi , WasmExecutor < HostFunctions > > > ,
216
225
) >
217
226
where
218
- RuntimeApi : ConstructRuntimeApi < Block , TFullClient < Block , RuntimeApi , NativeElseWasmExecutor < Executor > > >
219
- + Send
220
- + Sync
221
- + ' static ,
227
+ RuntimeApi :
228
+ ConstructRuntimeApi < Block , TFullClient < Block , RuntimeApi , WasmExecutor < HostFunctions > > > + Send + Sync + ' static ,
222
229
RuntimeApi :: RuntimeApi : sp_transaction_pool:: runtime_api:: TaggedTransactionQueue < Block >
223
230
+ sp_api:: Metadata < Block >
224
231
+ sp_session:: SessionKeys < Block >
@@ -231,23 +238,22 @@ where
231
238
+ sp_consensus_aura:: AuraApi < Block , AuthorityId >
232
239
+ cumulus_primitives_aura:: AuraUnincludedSegmentApi < Block > ,
233
240
sc_client_api:: StateBackendFor < TFullBackend < Block > , Block > : sp_state_machine:: Backend < BlakeTwo256 > ,
234
- Executor : sc_executor:: NativeExecutionDispatch + ' static ,
235
241
RB : FnOnce (
236
- Arc < TFullClient < Block , RuntimeApi , NativeElseWasmExecutor < Executor > > > ,
242
+ Arc < TFullClient < Block , RuntimeApi , WasmExecutor < HostFunctions > > > ,
237
243
) -> Result < RpcModule < ( ) > , sc_service:: Error >
238
244
+ Send
239
245
+ ' static ,
240
246
BIQ : FnOnce (
241
- Arc < TFullClient < Block , RuntimeApi , NativeElseWasmExecutor < Executor > > > ,
242
- ParachainBlockImport < RuntimeApi , Executor > ,
247
+ Arc < TFullClient < Block , RuntimeApi , WasmExecutor < HostFunctions > > > ,
248
+ ParachainBlockImport < RuntimeApi > ,
243
249
& Configuration ,
244
250
Option < TelemetryHandle > ,
245
251
& TaskManager ,
246
252
) -> Result < sc_consensus:: DefaultImportQueue < Block > , sc_service:: Error > ,
247
253
{
248
254
let parachain_config = prepare_node_config ( parachain_config) ;
249
255
250
- let params = new_partial :: < RuntimeApi , Executor , BIQ > ( & parachain_config, build_import_queue) ?;
256
+ let params = new_partial :: < RuntimeApi , BIQ > ( & parachain_config, build_import_queue) ?;
251
257
let ( block_import, mut telemetry, telemetry_worker_handle) = params. other ;
252
258
253
259
let client = Arc :: clone ( & params. client ) ;
@@ -357,7 +363,7 @@ where
357
363
} ) ?;
358
364
359
365
if validator {
360
- start_consensus :: < RuntimeApi , Executor > (
366
+ start_consensus :: < RuntimeApi > (
361
367
Arc :: clone ( & client) ,
362
368
Arc :: clone ( & backend) ,
363
369
block_import,
@@ -383,16 +389,15 @@ where
383
389
384
390
#[ allow( clippy:: type_complexity) ]
385
391
/// Build the import queue for THE runtime.
386
- pub ( crate ) fn build_import_queue < RE , API > (
387
- client : Arc < TFullClient < Block , API , NativeElseWasmExecutor < RE > > > ,
388
- block_import : ParachainBlockImport < API , RE > ,
392
+ pub ( crate ) fn build_import_queue < API > (
393
+ client : Arc < TFullClient < Block , API , WasmExecutor < HostFunctions > > > ,
394
+ block_import : ParachainBlockImport < API > ,
389
395
config : & Configuration ,
390
396
telemetry : Option < TelemetryHandle > ,
391
397
task_manager : & TaskManager ,
392
398
) -> Result < sc_consensus:: DefaultImportQueue < Block > , sc_service:: Error >
393
399
where
394
- RE : sc_executor:: NativeExecutionDispatch + ' static ,
395
- API : ConstructRuntimeApi < Block , TFullClient < Block , API , NativeElseWasmExecutor < RE > > > + Send + Sync + ' static ,
400
+ API : ConstructRuntimeApi < Block , TFullClient < Block , API , WasmExecutor < HostFunctions > > > + Send + Sync + ' static ,
396
401
API :: RuntimeApi : sp_transaction_pool:: runtime_api:: TaggedTransactionQueue < Block >
397
402
+ sp_api:: Metadata < Block >
398
403
+ sp_session:: SessionKeys < Block >
@@ -430,16 +435,15 @@ where
430
435
}
431
436
432
437
/// Start a parachain node.
433
- pub ( crate ) async fn start_node < RE , API > (
438
+ pub ( crate ) async fn start_node < API > (
434
439
parachain_config : Configuration ,
435
440
polkadot_config : Configuration ,
436
441
collator_options : CollatorOptions ,
437
442
id : ParaId ,
438
443
hwbench : Option < sc_sysinfo:: HwBench > ,
439
- ) -> sc_service:: error:: Result < ( TaskManager , Arc < TFullClient < Block , API , NativeElseWasmExecutor < RE > > > ) >
444
+ ) -> sc_service:: error:: Result < ( TaskManager , Arc < TFullClient < Block , API , WasmExecutor < HostFunctions > > > ) >
440
445
where
441
- RE : sc_executor:: NativeExecutionDispatch + ' static ,
442
- API : ConstructRuntimeApi < Block , TFullClient < Block , API , NativeElseWasmExecutor < RE > > > + Send + Sync + ' static ,
446
+ API : ConstructRuntimeApi < Block , TFullClient < Block , API , WasmExecutor < HostFunctions > > > + Send + Sync + ' static ,
443
447
API :: RuntimeApi : sp_transaction_pool:: runtime_api:: TaggedTransactionQueue < Block >
444
448
+ sp_api:: Metadata < Block >
445
449
+ sp_session:: SessionKeys < Block >
@@ -453,28 +457,28 @@ where
453
457
+ cumulus_primitives_aura:: AuraUnincludedSegmentApi < Block > ,
454
458
sc_client_api:: StateBackendFor < TFullBackend < Block > , Block > : sp_state_machine:: Backend < BlakeTwo256 > ,
455
459
{
456
- start_node_impl :: < API , RE , _ , _ > (
460
+ start_node_impl :: < API , _ , _ > (
457
461
parachain_config,
458
462
polkadot_config,
459
463
collator_options,
460
464
id,
461
465
|_| Ok ( RpcModule :: new ( ( ) ) ) ,
462
- build_import_queue :: < RE , API > ,
466
+ build_import_queue :: < API > ,
463
467
hwbench,
464
468
)
465
469
. await
466
470
}
467
471
468
472
#[ allow( clippy:: too_many_arguments) ]
469
- fn start_consensus < RuntimeApi , Executor > (
470
- client : Arc < ParachainClient < RuntimeApi , Executor > > ,
473
+ fn start_consensus < RuntimeApi > (
474
+ client : Arc < ParachainClient < RuntimeApi > > ,
471
475
backend : Arc < ParachainBackend > ,
472
- block_import : ParachainBlockImport < RuntimeApi , Executor > ,
476
+ block_import : ParachainBlockImport < RuntimeApi > ,
473
477
prometheus_registry : Option < & Registry > ,
474
478
telemetry : Option < TelemetryHandle > ,
475
479
task_manager : & TaskManager ,
476
480
relay_chain_interface : Arc < dyn RelayChainInterface > ,
477
- transaction_pool : Arc < sc_transaction_pool:: FullPool < Block , ParachainClient < RuntimeApi , Executor > > > ,
481
+ transaction_pool : Arc < sc_transaction_pool:: FullPool < Block , ParachainClient < RuntimeApi > > > ,
478
482
sync_oracle : Arc < SyncingService < Block > > ,
479
483
keystore : KeystorePtr ,
480
484
relay_chain_slot_duration : Duration ,
@@ -484,10 +488,8 @@ fn start_consensus<RuntimeApi, Executor>(
484
488
announce_block : Arc < dyn Fn ( Hash , Option < Vec < u8 > > ) + Send + Sync > ,
485
489
) -> Result < ( ) , sc_service:: Error >
486
490
where
487
- RuntimeApi : ConstructRuntimeApi < Block , TFullClient < Block , RuntimeApi , NativeElseWasmExecutor < Executor > > >
488
- + Send
489
- + Sync
490
- + ' static ,
491
+ RuntimeApi :
492
+ ConstructRuntimeApi < Block , TFullClient < Block , RuntimeApi , WasmExecutor < HostFunctions > > > + Send + Sync + ' static ,
491
493
RuntimeApi :: RuntimeApi : sp_transaction_pool:: runtime_api:: TaggedTransactionQueue < Block >
492
494
+ sp_api:: Metadata < Block >
493
495
+ sp_session:: SessionKeys < Block >
@@ -499,7 +501,6 @@ where
499
501
+ substrate_frame_rpc_system:: AccountNonceApi < Block , AccountId , Nonce >
500
502
+ sp_consensus_aura:: AuraApi < Block , AuthorityId >
501
503
+ cumulus_primitives_aura:: AuraUnincludedSegmentApi < Block > ,
502
- Executor : sc_executor:: NativeExecutionDispatch + ' static ,
503
504
{
504
505
use cumulus_client_consensus_aura:: collators:: lookahead:: { self as aura, Params as AuraParams } ;
505
506
0 commit comments