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<NumberFor<Block>>,
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<NumberFor<Block>>,
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<NumberFor<Block>>,
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<NumberFor<Block>>,
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
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> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§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<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.§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<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§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.