pub trait BlockImportOperation<Block: BlockT> {
    type State: StateBackend<HashFor<Block>>;

    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_cache(&mut self, cache: HashMap<Id, Vec<u8>>); fn update_db_storage(
&mut self,
update: TransactionForSB<Self::State, 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 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<HashFor<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_cache(&mut self, cache: HashMap<Id, Vec<u8>>)

Update cached data.

source

fn update_db_storage(
&mut self,
update: TransactionForSB<Self::State, 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.

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.

Provided Methods§

source

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

Write offchain storage changes to the database.

Implementors§

source§

impl<Block: BlockT> BlockImportOperation<Block> for BlockImportOperation<Block>where
Block::Hash: Ord,

§

type State = TrieBackend<MemoryDB<<<Block as Block>::Header as Header>::Hashing, HashKey<<<Block as Block>::Header as Header>::Hashing>, Vec<u8, Global>>, <<Block as Block>::Header as Header>::Hashing, LocalTrieCache<<<Block as Block>::Header as Header>::Hashing>>