Trait sc_client_api::backend::StorageProvider
source · [−]pub trait StorageProvider<Block: BlockT, B: Backend<Block>> {
fn storage(
&self,
id: &BlockId<Block>,
key: &StorageKey
) -> Result<Option<StorageData>>;
fn storage_keys(
&self,
id: &BlockId<Block>,
key_prefix: &StorageKey
) -> Result<Vec<StorageKey>>;
fn storage_hash(
&self,
id: &BlockId<Block>,
key: &StorageKey
) -> Result<Option<Block::Hash>>;
fn storage_pairs(
&self,
id: &BlockId<Block>,
key_prefix: &StorageKey
) -> Result<Vec<(StorageKey, StorageData)>>;
fn storage_keys_iter<'a>(
&self,
id: &BlockId<Block>,
prefix: Option<&'a StorageKey>,
start_key: Option<&StorageKey>
) -> Result<KeyIterator<'a, B::State, Block>>;
fn child_storage(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
key: &StorageKey
) -> Result<Option<StorageData>>;
fn child_storage_keys(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
key_prefix: &StorageKey
) -> Result<Vec<StorageKey>>;
fn child_storage_hash(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
key: &StorageKey
) -> Result<Option<Block::Hash>>;
fn max_key_changes_range(
&self,
first: NumberFor<Block>,
last: BlockId<Block>
) -> Result<Option<(NumberFor<Block>, BlockId<Block>)>>;
fn key_changes(
&self,
first: NumberFor<Block>,
last: BlockId<Block>,
storage_key: Option<&PrefixedStorageKey>,
key: &StorageKey
) -> Result<Vec<(NumberFor<Block>, u32)>>;
}
Expand description
Provides acess to storage primitives
Required methods
fn storage(
&self,
id: &BlockId<Block>,
key: &StorageKey
) -> Result<Option<StorageData>>
fn storage(
&self,
id: &BlockId<Block>,
key: &StorageKey
) -> Result<Option<StorageData>>
Given a BlockId
and a key, return the value under the key in that block.
fn storage_keys(
&self,
id: &BlockId<Block>,
key_prefix: &StorageKey
) -> Result<Vec<StorageKey>>
fn storage_keys(
&self,
id: &BlockId<Block>,
key_prefix: &StorageKey
) -> Result<Vec<StorageKey>>
Given a BlockId
and a key prefix, return the matching storage keys in that block.
fn storage_hash(
&self,
id: &BlockId<Block>,
key: &StorageKey
) -> Result<Option<Block::Hash>>
fn storage_hash(
&self,
id: &BlockId<Block>,
key: &StorageKey
) -> Result<Option<Block::Hash>>
Given a BlockId
and a key, return the value under the hash in that block.
fn storage_pairs(
&self,
id: &BlockId<Block>,
key_prefix: &StorageKey
) -> Result<Vec<(StorageKey, StorageData)>>
fn storage_pairs(
&self,
id: &BlockId<Block>,
key_prefix: &StorageKey
) -> Result<Vec<(StorageKey, StorageData)>>
Given a BlockId
and a key prefix, return the matching child storage keys and values in that block.
fn storage_keys_iter<'a>(
&self,
id: &BlockId<Block>,
prefix: Option<&'a StorageKey>,
start_key: Option<&StorageKey>
) -> Result<KeyIterator<'a, B::State, Block>>
fn storage_keys_iter<'a>(
&self,
id: &BlockId<Block>,
prefix: Option<&'a StorageKey>,
start_key: Option<&StorageKey>
) -> Result<KeyIterator<'a, B::State, Block>>
Given a BlockId
and a key prefix, return a KeyIterator
iterates matching storage keys in that block.
fn child_storage(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
key: &StorageKey
) -> Result<Option<StorageData>>
fn child_storage(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
key: &StorageKey
) -> Result<Option<StorageData>>
Given a BlockId
, a key and a child storage key, return the value under the key in that block.
fn child_storage_keys(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
key_prefix: &StorageKey
) -> Result<Vec<StorageKey>>
fn child_storage_keys(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
key_prefix: &StorageKey
) -> Result<Vec<StorageKey>>
Given a BlockId
, a key prefix, and a child storage key, return the matching child storage keys.
fn child_storage_hash(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
key: &StorageKey
) -> Result<Option<Block::Hash>>
fn child_storage_hash(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
key: &StorageKey
) -> Result<Option<Block::Hash>>
Given a BlockId
, a key and a child storage key, return the hash under the key in that block.
Get longest range within [first; last] that is possible to use in key_changes
and key_changes_proof
calls.
Range could be shortened from the beginning if some changes tries have been pruned.
Returns Ok(None) if changes tries are not supported.
fn key_changes(
&self,
first: NumberFor<Block>,
last: BlockId<Block>,
storage_key: Option<&PrefixedStorageKey>,
key: &StorageKey
) -> Result<Vec<(NumberFor<Block>, u32)>>
fn key_changes(
&self,
first: NumberFor<Block>,
last: BlockId<Block>,
storage_key: Option<&PrefixedStorageKey>,
key: &StorageKey
) -> Result<Vec<(NumberFor<Block>, u32)>>
Get pairs of (block, extrinsic) where key has been changed at given blocks range. Works only for runtimes that are supporting changes tries.
Changes are returned in descending order (i.e. last block comes first).