Struct DecodedMultiProofV2
pub struct DecodedMultiProofV2 {
pub account_proofs: Vec<ProofTrieNodeV2>,
pub storage_proofs: HashMap<FixedBytes<32>, Vec<ProofTrieNodeV2>, FbBuildHasher<32>>,
}Expand description
V2 decoded multiproof which contains the results of both account and storage V2 proof calculations.
Fields§
§account_proofs: Vec<ProofTrieNodeV2>Account trie proof nodes
storage_proofs: HashMap<FixedBytes<32>, Vec<ProofTrieNodeV2>, FbBuildHasher<32>>Storage trie proof nodes indexed by account
Implementations§
§impl DecodedMultiProofV2
impl DecodedMultiProofV2
pub fn account_proof(
&self,
address: Address,
slots: &[FixedBytes<32>],
) -> Result<AccountProof, Error>
pub fn account_proof( &self, address: Address, slots: &[FixedBytes<32>], ) -> Result<AccountProof, Error>
Construct an account proof from the V2 multiproof.
pub fn from_witness(
state_root: FixedBytes<32>,
witness: &HashMap<FixedBytes<32>, impl AsRef<[u8]>, FbBuildHasher<32>>,
) -> Result<DecodedMultiProofV2, Error>
pub fn from_witness( state_root: FixedBytes<32>, witness: &HashMap<FixedBytes<32>, impl AsRef<[u8]>, FbBuildHasher<32>>, ) -> Result<DecodedMultiProofV2, Error>
Builds a DecodedMultiProofV2 from a flat witness map (hash → RLP-encoded trie node).
This performs a BFS traversal starting from state_root, following hashed and inline
children and organizing decoded nodes into account and storage proof vectors. This is the
inverse of witness generation — it reconstructs the structured multiproof from the flat
format used in ExecutionWitness.
pub fn from_witness_decoded(
state_root: FixedBytes<32>,
witness: &HashMap<FixedBytes<32>, TrieNode, FbBuildHasher<32>>,
) -> Result<DecodedMultiProofV2, Error>
pub fn from_witness_decoded( state_root: FixedBytes<32>, witness: &HashMap<FixedBytes<32>, TrieNode, FbBuildHasher<32>>, ) -> Result<DecodedMultiProofV2, Error>
Builds a DecodedMultiProofV2 from a witness map of already decoded trie nodes, keyed by
node hash.
Same traversal as Self::from_witness, for callers that build multiproofs at several
roots over one witness and decode each node once. Inline children are still decoded from
their parent.
pub fn from_witness_with(
state_root: FixedBytes<32>,
node_by_hash: impl FnMut(&FixedBytes<32>) -> Result<Option<TrieNode>, Error>,
) -> Result<DecodedMultiProofV2, Error>
pub fn from_witness_with( state_root: FixedBytes<32>, node_by_hash: impl FnMut(&FixedBytes<32>) -> Result<Option<TrieNode>, Error>, ) -> Result<DecodedMultiProofV2, Error>
Builds a DecodedMultiProofV2 by BFS from state_root, resolving hashed nodes with
node_by_hash.
node_by_hash returns the decoded node for a hash, None to leave that node blinded, or
an error that aborts the traversal. Inline children are decoded from their parent.
pub fn extend(&mut self, other: DecodedMultiProofV2)
pub fn extend(&mut self, other: DecodedMultiProofV2)
Appends the given multiproof’s data to this one.
This implementation does not deduplicate redundant proofs.
Trait Implementations§
§impl Clone for DecodedMultiProofV2
impl Clone for DecodedMultiProofV2
§fn clone(&self) -> DecodedMultiProofV2
fn clone(&self) -> DecodedMultiProofV2
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for DecodedMultiProofV2
impl Debug for DecodedMultiProofV2
§impl Default for DecodedMultiProofV2
impl Default for DecodedMultiProofV2
§fn default() -> DecodedMultiProofV2
fn default() -> DecodedMultiProofV2
impl Eq for DecodedMultiProofV2
§impl From<DecodedMultiProof> for DecodedMultiProofV2
impl From<DecodedMultiProof> for DecodedMultiProofV2
§fn from(proof: DecodedMultiProof) -> DecodedMultiProofV2
fn from(proof: DecodedMultiProof) -> DecodedMultiProofV2
§impl PartialEq for DecodedMultiProofV2
impl PartialEq for DecodedMultiProofV2
impl StructuralPartialEq for DecodedMultiProofV2
Auto Trait Implementations§
impl Freeze for DecodedMultiProofV2
impl RefUnwindSafe for DecodedMultiProofV2
impl Send for DecodedMultiProofV2
impl Sync for DecodedMultiProofV2
impl Unpin for DecodedMultiProofV2
impl UnsafeUnpin for DecodedMultiProofV2
impl UnwindSafe for DecodedMultiProofV2
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
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 moreimpl<T> MaybeDebug for Twhere
T: Debug,
§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
Source§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 64 bytes