pub struct SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>{ /* private fields */ }
Expand description
Subspace slot worker responsible for block and vote production
Implementations§
source§impl<PosTable, Block, Client, E, Error, SO, L, BS, AS> SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>where
PosTable: Table,
Block: BlockT,
Client: ProvideRuntimeApi<Block> + HeaderBackend<Block> + HeaderMetadata<Block, Error = Error> + AuxStore + 'static,
Client::Api: SubspaceApi<Block, PublicKey>,
E: Environment<Block, Error = Error> + Send + Sync,
E::Proposer: Proposer<Block, Error = Error>,
SO: SyncOracle + Send + Sync,
L: JustificationSyncLink<Block>,
BS: BackoffAuthoringBlocksStrategy<NumberFor<Block>> + Send + Sync,
Error: Error + Send + From<Error> + 'static,
AS: AuxStore + Send + Sync + 'static,
BlockNumber: From<<Block::Header as Header>::Number>,
impl<PosTable, Block, Client, E, Error, SO, L, BS, AS> SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>where
PosTable: Table,
Block: BlockT,
Client: ProvideRuntimeApi<Block> + HeaderBackend<Block> + HeaderMetadata<Block, Error = Error> + AuxStore + 'static,
Client::Api: SubspaceApi<Block, PublicKey>,
E: Environment<Block, Error = Error> + Send + Sync,
E::Proposer: Proposer<Block, Error = Error>,
SO: SyncOracle + Send + Sync,
L: JustificationSyncLink<Block>,
BS: BackoffAuthoringBlocksStrategy<NumberFor<Block>> + Send + Sync,
Error: Error + Send + From<Error> + 'static,
AS: AuxStore + Send + Sync + 'static,
BlockNumber: From<<Block::Header as Header>::Number>,
sourcepub fn new(
_: SubspaceSlotWorkerOptions<Block, Client, E, SO, L, BS, AS>,
) -> Self
pub fn new( _: SubspaceSlotWorkerOptions<Block, Client, E, SO, L, BS, AS>, ) -> Self
Create new Subspace slot worker
Trait Implementations§
source§impl<PosTable, Block, Client, E, SO, L, BS, AS> PotSlotWorker<Block> for SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>
impl<PosTable, Block, Client, E, SO, L, BS, AS> PotSlotWorker<Block> for SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>
source§impl<PosTable, Block, Client, E, Error, SO, L, BS, AS> SimpleSlotWorker<Block> for SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>where
PosTable: Table,
Block: BlockT,
Client: ProvideRuntimeApi<Block> + HeaderBackend<Block> + HeaderMetadata<Block, Error = Error> + AuxStore + 'static,
Client::Api: SubspaceApi<Block, PublicKey>,
E: Environment<Block, Error = Error> + Send + Sync,
E::Proposer: Proposer<Block, Error = Error>,
SO: SyncOracle + Send + Sync,
L: JustificationSyncLink<Block>,
BS: BackoffAuthoringBlocksStrategy<NumberFor<Block>> + Send + Sync,
Error: Error + Send + From<Error> + 'static,
AS: AuxStore + Send + Sync + 'static,
BlockNumber: From<<Block::Header as Header>::Number>,
impl<PosTable, Block, Client, E, Error, SO, L, BS, AS> SimpleSlotWorker<Block> for SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>where
PosTable: Table,
Block: BlockT,
Client: ProvideRuntimeApi<Block> + HeaderBackend<Block> + HeaderMetadata<Block, Error = Error> + AuxStore + 'static,
Client::Api: SubspaceApi<Block, PublicKey>,
E: Environment<Block, Error = Error> + Send + Sync,
E::Proposer: Proposer<Block, Error = Error>,
SO: SyncOracle + Send + Sync,
L: JustificationSyncLink<Block>,
BS: BackoffAuthoringBlocksStrategy<NumberFor<Block>> + Send + Sync,
Error: Error + Send + From<Error> + 'static,
AS: AuxStore + Send + Sync + 'static,
BlockNumber: From<<Block::Header as Header>::Number>,
source§type BlockImport = Box<dyn BlockImport<Block, Error = Error> + Sync + Send>
type BlockImport = Box<dyn BlockImport<Block, Error = Error> + Sync + Send>
A handle to a
BlockImport
.source§type SyncOracle = SubspaceSyncOracle<SO>
type SyncOracle = SubspaceSyncOracle<SO>
A handle to a
SyncOracle
.source§type JustificationSyncLink = L
type JustificationSyncLink = L
A handle to a
JustificationSyncLink
, allows hooking into the sync module to control the
justification sync process.source§type CreateProposer = Pin<Box<dyn Future<Output = Result<<E as Environment<Block>>::Proposer, Error>> + Send>>
type CreateProposer = Pin<Box<dyn Future<Output = Result<<E as Environment<Block>>::Proposer, Error>> + Send>>
The type of future resolving to the proposer.
source§type Proposer = <E as Environment<Block>>::Proposer
type Proposer = <E as Environment<Block>>::Proposer
The type of proposer to use to build blocks.
source§fn logging_target(&self) -> &'static str
fn logging_target(&self) -> &'static str
The logging target to use when logging messages.
source§fn block_import(&mut self) -> &mut Self::BlockImport
fn block_import(&mut self) -> &mut Self::BlockImport
A handle to a
BlockImport
.source§fn aux_data(
&self,
_parent: &Block::Header,
_slot: Slot,
) -> Result<Self::AuxData, ConsensusError>
fn aux_data( &self, _parent: &Block::Header, _slot: Slot, ) -> Result<Self::AuxData, ConsensusError>
Returns the auxiliary data necessary for authoring.
Returns the number of authorities.
None indicate that the authorities information is incomplete.
source§fn claim_slot<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
parent_header: &'life1 Block::Header,
slot: Slot,
_aux_data: &'life2 Self::AuxData,
) -> Pin<Box<dyn Future<Output = Option<Self::Claim>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn claim_slot<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
parent_header: &'life1 Block::Header,
slot: Slot,
_aux_data: &'life2 Self::AuxData,
) -> Pin<Box<dyn Future<Output = Option<Self::Claim>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Tries to claim the given slot, returning an object with claim data if successful.
source§fn pre_digest_data(
&self,
_slot: Slot,
(pre_digest, _justification): &Self::Claim,
) -> Vec<DigestItem>
fn pre_digest_data( &self, _slot: Slot, (pre_digest, _justification): &Self::Claim, ) -> Vec<DigestItem>
Return the pre digest data to include in a block authored with the given claim.
source§fn block_import_params<'life0, 'life1, 'async_trait>(
&'life0 self,
header: Block::Header,
header_hash: &'life1 Block::Hash,
body: Vec<Block::Extrinsic>,
storage_changes: StorageChanges<Block>,
__arg5: Self::Claim,
_aux_data: Self::AuxData,
) -> Pin<Box<dyn Future<Output = Result<BlockImportParams<Block>, ConsensusError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn block_import_params<'life0, 'life1, 'async_trait>(
&'life0 self,
header: Block::Header,
header_hash: &'life1 Block::Hash,
body: Vec<Block::Extrinsic>,
storage_changes: StorageChanges<Block>,
__arg5: Self::Claim,
_aux_data: Self::AuxData,
) -> Pin<Box<dyn Future<Output = Result<BlockImportParams<Block>, ConsensusError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns a function which produces a
BlockImportParams
.Whether to force authoring if offline.
source§fn should_backoff(&self, slot: Slot, chain_head: &Block::Header) -> bool
fn should_backoff(&self, slot: Slot, chain_head: &Block::Header) -> bool
Returns whether the block production should back off. Read more
source§fn sync_oracle(&mut self) -> &mut Self::SyncOracle
fn sync_oracle(&mut self) -> &mut Self::SyncOracle
Returns a handle to a
SyncOracle
.source§fn justification_sync_link(&mut self) -> &mut Self::JustificationSyncLink
fn justification_sync_link(&mut self) -> &mut Self::JustificationSyncLink
Returns a handle to a
JustificationSyncLink
.source§fn proposer(&mut self, block: &Block::Header) -> Self::CreateProposer
fn proposer(&mut self, block: &Block::Header) -> Self::CreateProposer
Returns a
Proposer
to author on top of the given block.source§fn proposing_remaining_duration(&self, slot_info: &SlotInfo<Block>) -> Duration
fn proposing_remaining_duration(&self, slot_info: &SlotInfo<Block>) -> Duration
Remaining duration for proposing.
§fn notify_slot(
&self,
_header: &<B as Block>::Header,
_slot: Slot,
_aux_data: &Self::AuxData,
)
fn notify_slot( &self, _header: &<B as Block>::Header, _slot: Slot, _aux_data: &Self::AuxData, )
Notifies the given slot. Similar to
claim_slot
, but will be called no matter whether we
need to author blocks or not.§fn propose<'life0, 'life1, 'async_trait>(
&'life0 mut self,
proposer: Self::Proposer,
claim: &'life1 Self::Claim,
slot_info: SlotInfo<B>,
end_proposing_at: Instant,
) -> Pin<Box<dyn Future<Output = Option<Proposal<B, <Self::Proposer as Proposer<B>>::Proof>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Send + 'async_trait,
fn propose<'life0, 'life1, 'async_trait>(
&'life0 mut self,
proposer: Self::Proposer,
claim: &'life1 Self::Claim,
slot_info: SlotInfo<B>,
end_proposing_at: Instant,
) -> Pin<Box<dyn Future<Output = Option<Proposal<B, <Self::Proposer as Proposer<B>>::Proof>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Send + 'async_trait,
Propose a block by
Proposer
.§fn create_inherent_data<'life0, 'life1, 'async_trait>(
slot_info: &'life0 SlotInfo<B>,
logging_target: &'life1 str,
end_proposing_at: Instant,
) -> Pin<Box<dyn Future<Output = Option<InherentData>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
fn create_inherent_data<'life0, 'life1, 'async_trait>(
slot_info: &'life0 SlotInfo<B>,
logging_target: &'life1 str,
end_proposing_at: Instant,
) -> Pin<Box<dyn Future<Output = Option<InherentData>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Calls
create_inherent_data
and handles errors.Auto Trait Implementations§
impl<PosTable, Block, Client, E, SO, L, BS, AS> Freeze for SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>
impl<PosTable, Block, Client, E, SO, L, BS, AS> !RefUnwindSafe for SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>
impl<PosTable, Block, Client, E, SO, L, BS, AS> Send for SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>
impl<PosTable, Block, Client, E, SO, L, BS, AS> Sync for SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>
impl<PosTable, Block, Client, E, SO, L, BS, AS> Unpin for SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>
impl<PosTable, Block, Client, E, SO, L, BS, AS> !UnwindSafe for SubspaceSlotWorker<PosTable, Block, Client, E, SO, L, BS, AS>
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read more§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.