Skip to main content

StateProofProvider

Trait StateProofProvider 

Source
pub trait StateProofProvider {
    // Required methods
    fn proof(
        &self,
        input: TrieInput,
        address: Address,
        slots: &[B256],
    ) -> ProviderResult<AccountProof>;
    fn multiproof(
        &self,
        input: TrieInput,
        targets: MultiProofTargets,
    ) -> ProviderResult<MultiProof>;
    fn multiproof_v2(
        &self,
        targets: MultiProofTargetsV2,
        requires_masks: bool,
    ) -> ProviderResult<DecodedMultiProofV2>;
    fn witness(
        &self,
        input: TrieInput,
        target: HashedPostState,
        mode: ExecutionWitnessMode,
    ) -> ProviderResult<Vec<Bytes>>;
}
Expand description

A type that can generate state proof on top of a given post state.

Required Methods§

Source

fn proof( &self, input: TrieInput, address: Address, slots: &[B256], ) -> ProviderResult<AccountProof>

Get account and storage proofs of target keys in the HashedPostState on top of the current state.

Source

fn multiproof( &self, input: TrieInput, targets: MultiProofTargets, ) -> ProviderResult<MultiProof>

Generate [MultiProof] for target hashed account and corresponding hashed storage slot keys.

Source

fn multiproof_v2( &self, targets: MultiProofTargetsV2, requires_masks: bool, ) -> ProviderResult<DecodedMultiProofV2>

Generate a V2 decoded multiproof for target hashed accounts and storage slots against the provider’s state.

A storage address with no slot targets requests its storage root node. Empty targets return an empty proof.

Set requires_masks when the hash and tree masks of returned branch nodes must match the stored trie, as required to produce trie updates from them. Otherwise node hashes are still exact, but masks are not guaranteed to match.

Source

fn witness( &self, input: TrieInput, target: HashedPostState, mode: ExecutionWitnessMode, ) -> ProviderResult<Vec<Bytes>>

Get trie witness for provided state using the given witness generation mode.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<'a, T: 'a + StateProofProvider + ?Sized> StateProofProvider for &'a T

Source§

fn proof( &self, input: TrieInput, address: Address, slots: &[B256], ) -> ProviderResult<AccountProof>

Source§

fn multiproof( &self, input: TrieInput, targets: MultiProofTargets, ) -> ProviderResult<MultiProof>

Source§

fn multiproof_v2( &self, targets: MultiProofTargetsV2, requires_masks: bool, ) -> ProviderResult<DecodedMultiProofV2>

Source§

fn witness( &self, input: TrieInput, target: HashedPostState, mode: ExecutionWitnessMode, ) -> ProviderResult<Vec<Bytes>>

Source§

impl<T: StateProofProvider + ?Sized> StateProofProvider for Arc<T>

Source§

fn proof( &self, input: TrieInput, address: Address, slots: &[B256], ) -> ProviderResult<AccountProof>

Source§

fn multiproof( &self, input: TrieInput, targets: MultiProofTargets, ) -> ProviderResult<MultiProof>

Source§

fn multiproof_v2( &self, targets: MultiProofTargetsV2, requires_masks: bool, ) -> ProviderResult<DecodedMultiProofV2>

Source§

fn witness( &self, input: TrieInput, target: HashedPostState, mode: ExecutionWitnessMode, ) -> ProviderResult<Vec<Bytes>>

Source§

impl<T: StateProofProvider + ?Sized> StateProofProvider for Box<T>

Source§

fn proof( &self, input: TrieInput, address: Address, slots: &[B256], ) -> ProviderResult<AccountProof>

Source§

fn multiproof( &self, input: TrieInput, targets: MultiProofTargets, ) -> ProviderResult<MultiProof>

Source§

fn multiproof_v2( &self, targets: MultiProofTargetsV2, requires_masks: bool, ) -> ProviderResult<DecodedMultiProofV2>

Source§

fn witness( &self, input: TrieInput, target: HashedPostState, mode: ExecutionWitnessMode, ) -> ProviderResult<Vec<Bytes>>

Implementors§

Source§

impl<C: Send + Sync, N: NodePrimitives> StateProofProvider for NoopProvider<C, N>