Trait sc_consensus_slots::SimpleSlotWorker [−][src]
pub trait SimpleSlotWorker<B: BlockT> { type BlockImport: BlockImport<B, Transaction = <Self::Proposer as Proposer<B>>::Transaction> + Send + 'static; type SyncOracle: SyncOracle; type JustificationSyncLink: JustificationSyncLink<B>; type CreateProposer: Future<Output = Result<Self::Proposer, Error>> + Send + Unpin + 'static; type Proposer: Proposer<B> + Send; type Claim: Send + 'static; type EpochData: Send + 'static;}Show methods
fn logging_target(&self) -> &'static str; fn block_import(&mut self) -> &mut Self::BlockImport; fn epoch_data(
&self,
header: &B::Header,
slot: Slot
) -> Result<Self::EpochData, Error>; fn authorities_len(&self, epoch_data: &Self::EpochData) -> Option<usize>; fn claim_slot(
&self,
header: &B::Header,
slot: Slot,
epoch_data: &Self::EpochData
) -> Option<Self::Claim>; fn pre_digest_data(
&self,
slot: Slot,
claim: &Self::Claim
) -> Vec<DigestItem<B::Hash>>; fn block_import_params(
&self
) -> Box<dyn Fn(B::Header, &B::Hash, Vec<B::Extrinsic>, StorageChanges<<Self::BlockImport as BlockImport<B>>::Transaction, B>, Self::Claim, Self::EpochData) -> Result<BlockImportParams<B, <Self::BlockImport as BlockImport<B>>::Transaction>, Error> + Send + 'static>; fn force_authoring(&self) -> bool; fn sync_oracle(&mut self) -> &mut Self::SyncOracle; fn justification_sync_link(&mut self) -> &mut Self::JustificationSyncLink; fn proposer(&mut self, block: &B::Header) -> Self::CreateProposer; fn telemetry(&self) -> Option<TelemetryHandle>; fn proposing_remaining_duration(&self, slot_info: &SlotInfo<B>) -> Duration; fn notify_slot(
&self,
_header: &B::Header,
_slot: Slot,
_epoch_data: &Self::EpochData
) { ... } fn should_backoff(&self, _slot: Slot, _chain_head: &B::Header) -> bool { ... } fn on_slot<'life0, 'async_trait>(
&'life0 mut self,
slot_info: SlotInfo<B>
) -> Pin<Box<dyn Future<Output = Option<SlotResult<B, <Self::Proposer as Proposer<B>>::Proof>>> + Send + 'async_trait>>
where
'life0: 'async_trait,
Self: Send + 'async_trait, { ... }
Expand description
A skeleton implementation for SlotWorker
which tries to claim a slot at
its beginning and tries to produce a block if successfully claimed, timing
out if block production takes too long.
Associated Types
type BlockImport: BlockImport<B, Transaction = <Self::Proposer as Proposer<B>>::Transaction> + Send + 'static
type BlockImport: BlockImport<B, Transaction = <Self::Proposer as Proposer<B>>::Transaction> + Send + 'static
A handle to a BlockImport
.
type SyncOracle: SyncOracle
type SyncOracle: SyncOracle
A handle to a SyncOracle
.
A handle to a JustificationSyncLink
, allows hooking into the sync module to control the
justification sync process.
The type of future resolving to the proposer.
Required methods
fn logging_target(&self) -> &'static str
fn logging_target(&self) -> &'static str
The logging target to use when logging messages.
fn block_import(&mut self) -> &mut Self::BlockImport
fn block_import(&mut self) -> &mut Self::BlockImport
A handle to a BlockImport
.
Returns the epoch data necessary for authoring. For time-dependent epochs, use the provided slot number as a canonical source of time.
Returns the number of authorities given the epoch data. None indicate that the authorities information is incomplete.
Tries to claim the given slot, returning an object with claim data if successful.
fn pre_digest_data(
&self,
slot: Slot,
claim: &Self::Claim
) -> Vec<DigestItem<B::Hash>>
fn pre_digest_data(
&self,
slot: Slot,
claim: &Self::Claim
) -> Vec<DigestItem<B::Hash>>
Return the pre digest data to include in a block authored with the given claim.
fn block_import_params(
&self
) -> Box<dyn Fn(B::Header, &B::Hash, Vec<B::Extrinsic>, StorageChanges<<Self::BlockImport as BlockImport<B>>::Transaction, B>, Self::Claim, Self::EpochData) -> Result<BlockImportParams<B, <Self::BlockImport as BlockImport<B>>::Transaction>, Error> + Send + 'static>
fn block_import_params(
&self
) -> Box<dyn Fn(B::Header, &B::Hash, Vec<B::Extrinsic>, StorageChanges<<Self::BlockImport as BlockImport<B>>::Transaction, B>, Self::Claim, Self::EpochData) -> Result<BlockImportParams<B, <Self::BlockImport as BlockImport<B>>::Transaction>, Error> + Send + 'static>
Returns a function which produces a BlockImportParams
.
Whether to force authoring if offline.
fn sync_oracle(&mut self) -> &mut Self::SyncOracle
fn sync_oracle(&mut self) -> &mut Self::SyncOracle
Returns a handle to a SyncOracle
.
fn justification_sync_link(&mut self) -> &mut Self::JustificationSyncLink
fn justification_sync_link(&mut self) -> &mut Self::JustificationSyncLink
Returns a handle to a JustificationSyncLink
.
fn proposer(&mut self, block: &B::Header) -> Self::CreateProposer
fn proposer(&mut self, block: &B::Header) -> Self::CreateProposer
Returns a Proposer
to author on top of the given block.
fn telemetry(&self) -> Option<TelemetryHandle>
fn telemetry(&self) -> Option<TelemetryHandle>
Returns a TelemetryHandle
if any.
fn proposing_remaining_duration(&self, slot_info: &SlotInfo<B>) -> Duration
fn proposing_remaining_duration(&self, slot_info: &SlotInfo<B>) -> Duration
Remaining duration for proposing.
Provided methods
fn notify_slot(
&self,
_header: &B::Header,
_slot: Slot,
_epoch_data: &Self::EpochData
)
fn notify_slot(
&self,
_header: &B::Header,
_slot: Slot,
_epoch_data: &Self::EpochData
)
Notifies the given slot. Similar to claim_slot
, but will be called no matter whether we
need to author blocks or not.
fn should_backoff(&self, _slot: Slot, _chain_head: &B::Header) -> bool
fn should_backoff(&self, _slot: Slot, _chain_head: &B::Header) -> bool
Returns whether the block production should back off.
By default this function always returns false
.
An example strategy that back offs if the finalized head is lagging too much behind the tip
is implemented by BackoffAuthoringOnFinalizedHeadLagging
.