Trait sc_client_api::proof_provider::ProofProvider [−][src]
pub trait ProofProvider<Block: BlockT> { fn read_proof(
&self,
id: &BlockId<Block>,
keys: &mut dyn Iterator<Item = &[u8]>
) -> Result<StorageProof>; fn read_child_proof(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
keys: &mut dyn Iterator<Item = &[u8]>
) -> Result<StorageProof>; fn execution_proof(
&self,
id: &BlockId<Block>,
method: &str,
call_data: &[u8]
) -> Result<(Vec<u8>, StorageProof)>; fn header_proof(
&self,
id: &BlockId<Block>
) -> Result<(Block::Header, StorageProof)>; fn key_changes_proof(
&self,
first: Block::Hash,
last: Block::Hash,
min: Block::Hash,
max: Block::Hash,
storage_key: Option<&PrefixedStorageKey>,
key: &StorageKey
) -> Result<ChangesProof<Block::Header>>; fn read_proof_collection(
&self,
id: &BlockId<Block>,
start_key: &[u8],
size_limit: usize
) -> Result<(StorageProof, u32)>; fn storage_collection(
&self,
id: &BlockId<Block>,
start_key: &[u8],
size_limit: usize
) -> Result<Vec<(Vec<u8>, Vec<u8>)>>; fn verify_range_proof(
&self,
root: Block::Hash,
proof: StorageProof,
start_key: &[u8]
) -> Result<(Vec<(Vec<u8>, Vec<u8>)>, bool)>; }
Expand description
Interface for providing block proving utilities.
Required methods
fn read_proof(
&self,
id: &BlockId<Block>,
keys: &mut dyn Iterator<Item = &[u8]>
) -> Result<StorageProof>
fn read_proof(
&self,
id: &BlockId<Block>,
keys: &mut dyn Iterator<Item = &[u8]>
) -> Result<StorageProof>
Reads storage value at a given block + key, returning read proof.
fn read_child_proof(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
keys: &mut dyn Iterator<Item = &[u8]>
) -> Result<StorageProof>
fn read_child_proof(
&self,
id: &BlockId<Block>,
child_info: &ChildInfo,
keys: &mut dyn Iterator<Item = &[u8]>
) -> Result<StorageProof>
Reads child storage value at a given block + storage_key + key, returning read proof.
Execute a call to a contract on top of state in a block of given hash AND returning execution proof.
No changes are made.
fn header_proof(
&self,
id: &BlockId<Block>
) -> Result<(Block::Header, StorageProof)>
fn header_proof(
&self,
id: &BlockId<Block>
) -> Result<(Block::Header, StorageProof)>
Reads given header and generates CHT-based header proof.
fn key_changes_proof(
&self,
first: Block::Hash,
last: Block::Hash,
min: Block::Hash,
max: Block::Hash,
storage_key: Option<&PrefixedStorageKey>,
key: &StorageKey
) -> Result<ChangesProof<Block::Header>>
fn key_changes_proof(
&self,
first: Block::Hash,
last: Block::Hash,
min: Block::Hash,
max: Block::Hash,
storage_key: Option<&PrefixedStorageKey>,
key: &StorageKey
) -> Result<ChangesProof<Block::Header>>
Get proof for computation of (block, extrinsic) pairs where key has been changed at given
blocks range. min
is the hash of the first block, which changes trie root is known to the
requester - when we’re using changes tries from ascendants of this block, we should provide
proofs for changes tries roots max
is the hash of the last block known to the requester -
we can’t use changes tries from descendants of this block.
Works only for runtimes that are supporting changes tries.
Given a BlockId
iterate over all storage values starting at start_key
exclusively,
building proofs until size limit is reached. Returns combined proof and the number of
collected keys.
Given a BlockId
iterate over all storage values starting at start_key
.
Returns collected keys and values.