async fn start_node_impl<RpcBuilder, RuntimeApi, Executor, ConsensusBuilder>(
    parachain_config: Configuration,
    polkadot_config: Configuration,
    collator_options: CollatorOptions,
    para_id: ParaId,
    _rpc_ext_builder: RpcBuilder,
    build_consensus: ConsensusBuilder
) -> Result<NewFull<Arc<FullClient<RuntimeApi, Executor>>>>where
    RpcBuilder: Fn(Arc<FullClient<RuntimeApi, Executor>>) -> Result<RpcModule<()>, Error> + Send + 'static,
    RuntimeApi: ConstructRuntimeApi<Block, FullClient<RuntimeApi, Executor>> + Send + Sync + 'static,
    RuntimeApi::RuntimeApi: RuntimeApiCollection<StateBackend = StateBackendFor<FullBackend, Block>> + CollectCollationInfo<Block> + AuraApi<Block, AuthorityId>,
    Executor: NativeExecutionDispatch + 'static,
    ConsensusBuilder: FnOnce(Arc<FullClient<RuntimeApi, Executor>>, Option<&Registry>, Option<TelemetryHandle>, &TaskManager, Arc<dyn RelayChainInterface>, Arc<FullPool<Block, FullClient<RuntimeApi, Executor>>>, Arc<NetworkService<Block, H256>>, SyncCryptoStorePtr, 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.