pub trait BlockImport<B>where
B: Block,{
type Error: Error + Send + 'static;
// Required methods
fn check_block<'life0, 'async_trait>(
&'life0 self,
block: BlockCheckParams<B>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, Self::Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
Self: 'async_trait;
fn import_block<'life0, 'async_trait>(
&'life0 self,
block: BlockImportParams<B>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, Self::Error>> + Send + 'async_trait>>
where 'life0: 'async_trait,
Self: 'async_trait;
}Expand description
Block import trait.
Required Associated Types§
Required Methods§
Sourcefn check_block<'life0, 'async_trait>(
&'life0 self,
block: BlockCheckParams<B>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, Self::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn check_block<'life0, 'async_trait>(
&'life0 self,
block: BlockCheckParams<B>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, Self::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Check block preconditions.
Sourcefn import_block<'life0, 'async_trait>(
&'life0 self,
block: BlockImportParams<B>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, Self::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn import_block<'life0, 'async_trait>(
&'life0 self,
block: BlockImportParams<B>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, Self::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Import a block.
Trait Implementations§
Source§impl<B> BlockImport<B> for Box<dyn BlockImport<B, Error = Error> + Sync + Send>where
B: Block,
impl<B> BlockImport<B> for Box<dyn BlockImport<B, Error = Error> + Sync + Send>where
B: Block,
Source§fn check_block<'life0, 'async_trait>(
&'life0 self,
block: BlockCheckParams<B>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, <Box<dyn BlockImport<B, Error = Error> + Sync + Send> as BlockImport<B>>::Error>> + Send + 'async_trait>>
fn check_block<'life0, 'async_trait>( &'life0 self, block: BlockCheckParams<B>, ) -> Pin<Box<dyn Future<Output = Result<ImportResult, <Box<dyn BlockImport<B, Error = Error> + Sync + Send> as BlockImport<B>>::Error>> + Send + 'async_trait>>
Check block preconditions.
Source§fn import_block<'life0, 'async_trait>(
&'life0 self,
block: BlockImportParams<B>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, <Box<dyn BlockImport<B, Error = Error> + Sync + Send> as BlockImport<B>>::Error>> + Send + 'async_trait>>
fn import_block<'life0, 'async_trait>( &'life0 self, block: BlockImportParams<B>, ) -> Pin<Box<dyn Future<Output = Result<ImportResult, <Box<dyn BlockImport<B, Error = Error> + Sync + Send> as BlockImport<B>>::Error>> + Send + 'async_trait>>
Import a block.
Implementations on Foreign Types§
Source§impl<B> BlockImport<B> for Box<dyn BlockImport<B, Error = Error> + Sync + Send>where
B: Block,
impl<B> BlockImport<B> for Box<dyn BlockImport<B, Error = Error> + Sync + Send>where
B: Block,
Source§fn check_block<'life0, 'async_trait>(
&'life0 self,
block: BlockCheckParams<B>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, <Box<dyn BlockImport<B, Error = Error> + Sync + Send> as BlockImport<B>>::Error>> + Send + 'async_trait>>
fn check_block<'life0, 'async_trait>( &'life0 self, block: BlockCheckParams<B>, ) -> Pin<Box<dyn Future<Output = Result<ImportResult, <Box<dyn BlockImport<B, Error = Error> + Sync + Send> as BlockImport<B>>::Error>> + Send + 'async_trait>>
Check block preconditions.
Source§fn import_block<'life0, 'async_trait>(
&'life0 self,
block: BlockImportParams<B>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, <Box<dyn BlockImport<B, Error = Error> + Sync + Send> as BlockImport<B>>::Error>> + Send + 'async_trait>>
fn import_block<'life0, 'async_trait>( &'life0 self, block: BlockImportParams<B>, ) -> Pin<Box<dyn Future<Output = Result<ImportResult, <Box<dyn BlockImport<B, Error = Error> + Sync + Send> as BlockImport<B>>::Error>> + Send + 'async_trait>>
Import a block.
type Error = Error
Source§impl<BE, Block, Client, SC> BlockImport<Block> for GrandpaBlockImport<BE, Block, Client, SC>where
Block: Block,
<<Block as Block>::Header as Header>::Number: BlockNumberOps,
BE: Backend<Block>,
Client: ClientForGrandpa<Block, BE>,
<Client as ProvideRuntimeApi<Block>>::Api: GrandpaApi<Block>,
&'a Client: for<'a> BlockImport<Block, Error = Error>,
SC: Send + Sync,
impl<BE, Block, Client, SC> BlockImport<Block> for GrandpaBlockImport<BE, Block, Client, SC>where
Block: Block,
<<Block as Block>::Header as Header>::Number: BlockNumberOps,
BE: Backend<Block>,
Client: ClientForGrandpa<Block, BE>,
<Client as ProvideRuntimeApi<Block>>::Api: GrandpaApi<Block>,
&'a Client: for<'a> BlockImport<Block, Error = Error>,
SC: Send + Sync,
type Error = Error
fn import_block<'life0, 'async_trait>(
&'life0 self,
block: BlockImportParams<Block>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, <GrandpaBlockImport<BE, Block, Client, SC> as BlockImport<Block>>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
GrandpaBlockImport<BE, Block, Client, SC>: 'async_trait,
fn check_block<'life0, 'async_trait>(
&'life0 self,
block: BlockCheckParams<Block>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, <GrandpaBlockImport<BE, Block, Client, SC> as BlockImport<Block>>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
GrandpaBlockImport<BE, Block, Client, SC>: 'async_trait,
Source§impl<Block, Client, Inner, CIDP, SC> BlockImport<Block> for BabeBlockImport<Block, Client, Inner, CIDP, SC>where
Block: Block,
Inner: BlockImport<Block> + Send + Sync,
<Inner as BlockImport<Block>>::Error: Into<Error>,
Client: HeaderBackend<Block> + HeaderMetadata<Block, Error = Error> + AuxStore + ProvideRuntimeApi<Block> + Send + Sync,
<Client as ProvideRuntimeApi<Block>>::Api: BlockBuilder<Block> + BabeApi<Block> + ApiExt<Block>,
CIDP: CreateInherentDataProviders<Block, ()>,
<CIDP as CreateInherentDataProviders<Block, ()>>::InherentDataProviders: InherentDataProviderExt + Send + Sync,
SC: SelectChain<Block> + 'static,
impl<Block, Client, Inner, CIDP, SC> BlockImport<Block> for BabeBlockImport<Block, Client, Inner, CIDP, SC>where
Block: Block,
Inner: BlockImport<Block> + Send + Sync,
<Inner as BlockImport<Block>>::Error: Into<Error>,
Client: HeaderBackend<Block> + HeaderMetadata<Block, Error = Error> + AuxStore + ProvideRuntimeApi<Block> + Send + Sync,
<Client as ProvideRuntimeApi<Block>>::Api: BlockBuilder<Block> + BabeApi<Block> + ApiExt<Block>,
CIDP: CreateInherentDataProviders<Block, ()>,
<CIDP as CreateInherentDataProviders<Block, ()>>::InherentDataProviders: InherentDataProviderExt + Send + Sync,
SC: SelectChain<Block> + 'static,
type Error = Error
fn import_block<'life0, 'async_trait>(
&'life0 self,
block: BlockImportParams<Block>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, <BabeBlockImport<Block, Client, Inner, CIDP, SC> as BlockImport<Block>>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
BabeBlockImport<Block, Client, Inner, CIDP, SC>: 'async_trait,
fn check_block<'life0, 'async_trait>(
&'life0 self,
block: BlockCheckParams<Block>,
) -> Pin<Box<dyn Future<Output = Result<ImportResult, <BabeBlockImport<Block, Client, Inner, CIDP, SC> as BlockImport<Block>>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
BabeBlockImport<Block, Client, Inner, CIDP, SC>: 'async_trait,
Implementors§
Source§impl<B, E, Block, RA> BlockImport<Block> for &Client<B, E, Block, RA>where
B: Backend<Block>,
E: CallExecutor<Block> + Send + Sync,
Block: Block,
Client<B, E, Block, RA>: ProvideRuntimeApi<Block>,
<Client<B, E, Block, RA> as ProvideRuntimeApi<Block>>::Api: Core<Block> + ApiExt<Block>,
RA: Sync + Send,
NOTE: only use this implementation when you are sure there are NO consensus-level BlockImport
objects. Otherwise, importing blocks directly into the client would be bypassing
important verification work.
impl<B, E, Block, RA> BlockImport<Block> for &Client<B, E, Block, RA>where
B: Backend<Block>,
E: CallExecutor<Block> + Send + Sync,
Block: Block,
Client<B, E, Block, RA>: ProvideRuntimeApi<Block>,
<Client<B, E, Block, RA> as ProvideRuntimeApi<Block>>::Api: Core<Block> + ApiExt<Block>,
RA: Sync + Send,
NOTE: only use this implementation when you are sure there are NO consensus-level BlockImport objects. Otherwise, importing blocks directly into the client would be bypassing important verification work.