pub struct DecodedMultiProofV2 {
pub account_proofs: Vec<ProofTrieNodeV2>,
pub storage_proofs: B256Map<Vec<ProofTrieNodeV2>>,
}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: B256Map<Vec<ProofTrieNodeV2>>Storage trie proof nodes indexed by account
Implementations§
Source§impl DecodedMultiProofV2
impl DecodedMultiProofV2
Sourcepub fn account_proof(
&self,
address: Address,
slots: &[B256],
) -> Result<AccountProof, Error>
pub fn account_proof( &self, address: Address, slots: &[B256], ) -> Result<AccountProof, Error>
Construct an account proof from the V2 multiproof.
Sourcepub fn from_witness(
state_root: B256,
witness: &B256Map<impl AsRef<[u8]>>,
) -> Result<Self, Error>
pub fn from_witness( state_root: B256, witness: &B256Map<impl AsRef<[u8]>>, ) -> Result<Self, 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.
Sourcepub fn from_witness_decoded(
state_root: B256,
witness: &B256Map<TrieNode>,
) -> Result<Self, Error>
pub fn from_witness_decoded( state_root: B256, witness: &B256Map<TrieNode>, ) -> Result<Self, 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.
Sourcepub fn from_witness_with(
state_root: B256,
node_by_hash: impl FnMut(&B256) -> Result<Option<TrieNode>, Error>,
) -> Result<Self, Error>
pub fn from_witness_with( state_root: B256, node_by_hash: impl FnMut(&B256) -> Result<Option<TrieNode>, Error>, ) -> Result<Self, 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.
Trait Implementations§
Source§impl Clone for DecodedMultiProofV2
impl Clone for DecodedMultiProofV2
Source§impl Debug for DecodedMultiProofV2
impl Debug for DecodedMultiProofV2
Source§impl Default for DecodedMultiProofV2
impl Default for DecodedMultiProofV2
impl Eq for DecodedMultiProofV2
Source§impl From<DecodedMultiProof> for DecodedMultiProofV2
impl From<DecodedMultiProof> for DecodedMultiProofV2
Source§fn from(proof: DecodedMultiProof) -> Self
fn from(proof: DecodedMultiProof) -> Self
Source§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> 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> ⓘ
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