Trait sc_client_api::backend::BlockImportOperation

source ·
pub trait BlockImportOperation<Block: BlockT> {
    type State: StateBackend<HashingFor<Block>>;

    // Required methods
    fn state(&self) -> Result<Option<&Self::State>>;
    fn set_block_data(
        &mut self,
        header: Block::Header,
        body: Option<Vec<Block::Extrinsic>>,
        indexed_body: Option<Vec<Vec<u8>>>,
        justifications: Option<Justifications>,
        state: NewBlockState,
    ) -> Result<()>;
    fn update_db_storage(
        &mut self,
        update: BackendTransaction<HashingFor<Block>>,
    ) -> Result<()>;
    fn set_genesis_state(
        &mut self,
        storage: Storage,
        commit: bool,
        state_version: StateVersion,
    ) -> Result<Block::Hash>;
    fn reset_storage(
        &mut self,
        storage: Storage,
        state_version: StateVersion,
    ) -> Result<Block::Hash>;
    fn update_storage(
        &mut self,
        update: StorageCollection,
        child_update: ChildStorageCollection,
    ) -> Result<()>;
    fn insert_aux<I>(&mut self, ops: I) -> Result<()>
       where I: IntoIterator<Item = (Vec<u8>, Option<Vec<u8>>)>;
    fn mark_finalized(
        &mut self,
        hash: Block::Hash,
        justification: Option<Justification>,
    ) -> Result<()>;
    fn mark_head(&mut self, hash: Block::Hash) -> Result<()>;
    fn update_transaction_index(
        &mut self,
        index: Vec<IndexOperation>,
    ) -> Result<()>;
    fn set_create_gap(&mut self, create_gap: bool);

    // Provided method
    fn update_offchain_storage(
        &mut self,
        _offchain_update: OffchainChangesCollection,
    ) -> Result<()> { ... }
}
Expand description

Block insertion operation.

Keeps hold if the inserted block state and data.

Required Associated Types§

source

type State: StateBackend<HashingFor<Block>>

Associated state backend type.

Required Methods§

source

fn state(&self) -> Result<Option<&Self::State>>

Returns pending state.

Returns None for backends with locally-unavailable state data.

source

fn set_block_data( &mut self, header: Block::Header, body: Option<Vec<Block::Extrinsic>>, indexed_body: Option<Vec<Vec<u8>>>, justifications: Option<Justifications>, state: NewBlockState, ) -> Result<()>

Append block data to the transaction.

source

fn update_db_storage( &mut self, update: BackendTransaction<HashingFor<Block>>, ) -> Result<()>

Inject storage data into the database.

source

fn set_genesis_state( &mut self, storage: Storage, commit: bool, state_version: StateVersion, ) -> Result<Block::Hash>

Set genesis state. If commit is false the state is saved in memory, but is not written to the database.

source

fn reset_storage( &mut self, storage: Storage, state_version: StateVersion, ) -> Result<Block::Hash>

Inject storage data into the database replacing any existing data.

source

fn update_storage( &mut self, update: StorageCollection, child_update: ChildStorageCollection, ) -> Result<()>

Set storage changes.

source

fn insert_aux<I>(&mut self, ops: I) -> Result<()>
where I: IntoIterator<Item = (Vec<u8>, Option<Vec<u8>>)>,

Insert auxiliary keys.

Values are None if should be deleted.

source

fn mark_finalized( &mut self, hash: Block::Hash, justification: Option<Justification>, ) -> Result<()>

Mark a block as finalized, if multiple blocks are finalized in the same operation then they must be marked in ascending order.

source

fn mark_head(&mut self, hash: Block::Hash) -> Result<()>

Mark a block as new head. If both block import and set head are specified, set head overrides block import’s best block rule.

source

fn update_transaction_index(&mut self, index: Vec<IndexOperation>) -> Result<()>

Add a transaction index operation.

source

fn set_create_gap(&mut self, create_gap: bool)

Configure whether to create a block gap if newly imported block is missing parent

Provided Methods§

source

fn update_offchain_storage( &mut self, _offchain_update: OffchainChangesCollection, ) -> Result<()>

Write offchain storage changes to the database.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<Block: BlockT> BlockImportOperation<Block> for BlockImportOperation<Block>

§

type State = TrieBackend<MemoryDB<<<Block as Block>::Header as Header>::Hashing, PrefixedKey<<<Block as Block>::Header as Header>::Hashing>, Vec<u8>>, <<Block as Block>::Header as Header>::Hashing>