pub(crate) async fn start_node_impl<RuntimeApi, Executor, RB, BIQ, BIC>(
    parachain_config: Configuration,
    polkadot_config: Configuration,
    eth_config: EthConfiguration,
    collator_options: CollatorOptions,
    id: ParaId,
    hwbench: Option<HwBench>,
    first_evm_block: BlockNumber,
    rpc_ext_builder: RB,
    build_import_queue: BIQ,
    build_consensus: BIC
) -> Result<(TaskManager, Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>)>where
    RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>> + Send + Sync + 'static,
    RuntimeApi::RuntimeApi: TaggedTransactionQueue<Block> + Metadata<Block> + SessionKeys<Block> + ApiExt<Block, StateBackend = StateBackendFor<TFullBackend<Block>, Block>> + OffchainWorkerApi<Block> + BlockBuilder<Block> + CollectCollationInfo<Block> + EthereumRuntimeRPCApi<Block> + ConvertTransactionRuntimeApi<Block>,
    StateBackendFor<TFullBackend<Block>, Block>: StateBackend<BlakeTwo256>,
    Executor: NativeExecutionDispatch + 'static,
    RB: Fn(Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>, Arc<FullPool<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>>, DenyUnsafe, SubscriptionTaskExecutor, Arc<NetworkService<Block, Hash>>, Arc<SyncingService<Block>>, Backend<Block>, FilterPool, FeeHistoryCache, Arc<OverrideHandle<Block>>, Arc<EthBlockDataCacheTask<Block>>) -> Result<RpcModule<()>, Error> + 'static,
    BIQ: FnOnce(Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>, ParachainBlockImport<Block, Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>, TFullBackend<Block>>, &Configuration, Option<TelemetryHandle>, &TaskManager, Backend<Block>, BlockNumber) -> Result<DefaultImportQueue<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>, Error>,
    BIC: FnOnce(Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>, ParachainBlockImport<Block, Arc<TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>, TFullBackend<Block>>, Option<&Registry>, Option<TelemetryHandle>, &TaskManager, Arc<dyn RelayChainInterface>, Arc<FullPool<Block, TFullClient<Block, RuntimeApi, NativeElseWasmExecutor<Executor>>>>, Arc<SyncingService<Block>>, KeystorePtr, bool) -> Result<Box<dyn ParachainConsensus<Block>>, Error>,
Expand description

Start a node with the given parachain Configuration and relay chain Configuration.

This is the actual implementation that is abstract over the executor and the runtime api.