pub fn start_aura<B, C, SC, E, I, P, SO, CAW, BS, Error>(
    slot_duration: SlotDuration,
    client: Arc<C>,
    select_chain: SC,
    block_import: I,
    env: E,
    sync_oracle: SO,
    inherent_data_providers: InherentDataProviders,
    force_authoring: bool,
    backoff_authoring_blocks: Option<BS>,
    keystore: SyncCryptoStorePtr,
    can_author_with: CAW
) -> Result<impl Future<Output = ()>, Error> where
    B: BlockT,
    C: ProvideRuntimeApi<B> + BlockOf + ProvideCache<B> + AuxStore + HeaderBackend<B> + Send + Sync,
    C::Api: AuraApi<B, <P as Pair>::Public>,
    SC: SelectChain<B>,
    E: Environment<B, Error = Error> + Send + Sync + 'static,
    E::Proposer: Proposer<B, Error = Error, Transaction = TransactionFor<C, B>>,
    P: Pair + Send + Sync,
    P::Public: AppPublic + Hash + Member + Encode + Decode,
    P::Signature: TryFrom<Vec<u8>> + Hash + Member + Encode + Decode,
    I: BlockImport<B, Transaction = TransactionFor<C, B>> + Send + Sync + 'static,
    Error: Error + Send + From<Error> + 'static,
    SO: SyncOracle + Send + Sync + Clone,
    CAW: CanAuthorWith<B> + Send,
    BS: BackoffAuthoringBlocksStrategy<NumberFor<B>> + Send + 'static, 
Expand description

Start the aura worker. The returned future should be run in a futures executor.