referrerpolicy=no-referrer-when-downgrade

Trait polkadot_test_client::sp_consensus::Proposer

source ·
pub trait Proposer<B>
where B: Block,
{ type Error: From<Error> + Error + 'static; type Proposal: Future<Output = Result<Proposal<B, Self::Proof>, Self::Error>> + Send + Unpin + 'static; type ProofRecording: ProofRecording<Proof = Self::Proof> + Send + Sync + 'static; type Proof: Send + Sync + 'static; // Required method fn propose( self, inherent_data: InherentData, inherent_digests: Digest, max_duration: Duration, block_size_limit: Option<usize>, ) -> Self::Proposal; }
Expand description

Logic for a proposer.

This will encapsulate creation and evaluation of proposals at a specific block.

Proposers are generic over bits of “consensus data” which are engine-specific.

Required Associated Types§

source

type Error: From<Error> + Error + 'static

Error type which can occur when proposing or evaluating.

source

type Proposal: Future<Output = Result<Proposal<B, Self::Proof>, Self::Error>> + Send + Unpin + 'static

Future that resolves to a committed proposal with an optional proof.

source

type ProofRecording: ProofRecording<Proof = Self::Proof> + Send + Sync + 'static

The supported proof recording by the implementor of this trait. See ProofRecording for more information.

source

type Proof: Send + Sync + 'static

The proof type used by Self::ProofRecording.

Required Methods§

source

fn propose( self, inherent_data: InherentData, inherent_digests: Digest, max_duration: Duration, block_size_limit: Option<usize>, ) -> Self::Proposal

Create a proposal.

Gets the inherent_data and inherent_digests as input for the proposal. Additionally a maximum duration for building this proposal is given. If building the proposal takes longer than this maximum, the proposal will be very likely discarded.

If block_size_limit is given, the proposer should push transactions until the block size limit is hit. Depending on the finalize_block implementation of the runtime, it probably incorporates other operations (that are happening after the block limit is hit). So, when the block size estimation also includes a proof that is recorded alongside the block production, the proof can still grow. This means that the block_size_limit should not be the hard limit of what is actually allowed.

§Return

Returns a future that resolves to a Proposal or to Error.

Implementations on Foreign Types§

source§

impl<A, Block, C, PR> Proposer<Block> for Proposer<Block, C, A, PR>
where A: TransactionPool<Block = Block> + 'static, Block: Block, C: HeaderBackend<Block> + ProvideRuntimeApi<Block> + CallApiAt<Block> + Send + Sync + 'static, <C as ProvideRuntimeApi<Block>>::Api: ApiExt<Block> + BlockBuilder<Block>, PR: ProofRecording,

§

type Proposal = Pin<Box<dyn Future<Output = Result<Proposal<Block, <PR as ProofRecording>::Proof>, <Proposer<Block, C, A, PR> as Proposer<Block>>::Error>> + Send>>

§

type Error = Error

§

type ProofRecording = PR

§

type Proof = <PR as ProofRecording>::Proof

source§

fn propose( self, inherent_data: InherentData, inherent_digests: Digest, max_duration: Duration, block_size_limit: Option<usize>, ) -> <Proposer<Block, C, A, PR> as Proposer<Block>>::Proposal

Implementors§