pub struct BasicProvingTrie<Hashing, Key, Value>where
Hashing: Hasher,{ /* private fields */ }
Expand description
A helper structure for building a basic base-16 merkle trie and creating compact proofs for that
trie. Proofs are created with latest substrate trie format (LayoutV1
), and are not compatible
with proofs using LayoutV0
.
Implementations§
Source§impl<Hashing, Key, Value> BasicProvingTrie<Hashing, Key, Value>
impl<Hashing, Key, Value> BasicProvingTrie<Hashing, Key, Value>
Sourcepub fn create_multi_proof(&self, keys: &[Key]) -> Result<Vec<u8>, DispatchError>
pub fn create_multi_proof(&self, keys: &[Key]) -> Result<Vec<u8>, DispatchError>
Create a compact merkle proof needed to prove all keys
and their values are in the trie.
When verifying the proof created by this function, you must include all of the keys and values of the proof, else the verifier will complain that extra nodes are provided in the proof that are not needed.
Trait Implementations§
Source§impl<Hashing, Key, Value> ProofToHashes for BasicProvingTrie<Hashing, Key, Value>
impl<Hashing, Key, Value> ProofToHashes for BasicProvingTrie<Hashing, Key, Value>
Source§fn proof_to_hashes(proof: &[u8]) -> Result<u32, DispatchError>
fn proof_to_hashes(proof: &[u8]) -> Result<u32, DispatchError>
Source§impl<Hashing, Key, Value> ProvingTrie<Hashing, Key, Value> for BasicProvingTrie<Hashing, Key, Value>
impl<Hashing, Key, Value> ProvingTrie<Hashing, Key, Value> for BasicProvingTrie<Hashing, Key, Value>
Source§fn generate_for<I>(items: I) -> Result<Self, DispatchError>where
I: IntoIterator<Item = (Key, Value)>,
fn generate_for<I>(items: I) -> Result<Self, DispatchError>where
I: IntoIterator<Item = (Key, Value)>,
Create a new instance of a ProvingTrie
using an iterator of key/value pairs.
Source§fn query(&self, key: &Key) -> Option<Value>
fn query(&self, key: &Key) -> Option<Value>
Query a value contained within the current trie. Returns None
if the
nodes within the current MemoryDB
are insufficient to query the item.
Source§fn create_proof(&self, key: &Key) -> Result<Vec<u8>, DispatchError>
fn create_proof(&self, key: &Key) -> Result<Vec<u8>, DispatchError>
Create a compact merkle proof needed to prove a single key and its value are in the trie.
Source§fn verify_proof(
root: &Hashing::Out,
proof: &[u8],
key: &Key,
value: &Value,
) -> Result<(), DispatchError>
fn verify_proof( root: &Hashing::Out, proof: &[u8], key: &Key, value: &Value, ) -> Result<(), DispatchError>
Verify the existence of key
and value
in a given trie root and proof.
Auto Trait Implementations§
impl<Hashing, Key, Value> Freeze for BasicProvingTrie<Hashing, Key, Value>
impl<Hashing, Key, Value> RefUnwindSafe for BasicProvingTrie<Hashing, Key, Value>where
<Hashing as Hasher>::Out: RefUnwindSafe,
Key: RefUnwindSafe,
Value: RefUnwindSafe,
Hashing: RefUnwindSafe,
impl<Hashing, Key, Value> Send for BasicProvingTrie<Hashing, Key, Value>
impl<Hashing, Key, Value> Sync for BasicProvingTrie<Hashing, Key, Value>
impl<Hashing, Key, Value> Unpin for BasicProvingTrie<Hashing, Key, Value>
impl<Hashing, Key, Value> UnwindSafe for BasicProvingTrie<Hashing, Key, Value>where
<Hashing as Hasher>::Out: UnwindSafe,
Key: UnwindSafe,
Value: UnwindSafe,
Hashing: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
Source§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
Source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
Source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
Source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moreSource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
Source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.Source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
Source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.