pub trait StateProofProvider {
// Required methods
fn proof(
&self,
input: TrieInput,
address: Address,
slots: &[FixedBytes<32>],
) -> Result<AccountProof, ProviderError>;
fn multiproof(
&self,
input: TrieInput,
targets: MultiProofTargets,
) -> Result<MultiProof, ProviderError>;
fn witness(
&self,
input: TrieInput,
target: HashedPostState,
mode: ExecutionWitnessMode,
) -> Result<Vec<Bytes>, ProviderError>;
}Expand description
A type that can generate state proof on top of a given post state.
Required Methods§
Sourcefn proof(
&self,
input: TrieInput,
address: Address,
slots: &[FixedBytes<32>],
) -> Result<AccountProof, ProviderError>
fn proof( &self, input: TrieInput, address: Address, slots: &[FixedBytes<32>], ) -> Result<AccountProof, ProviderError>
Get account and storage proofs of target keys in the HashedPostState
on top of the current state.
Sourcefn multiproof(
&self,
input: TrieInput,
targets: MultiProofTargets,
) -> Result<MultiProof, ProviderError>
fn multiproof( &self, input: TrieInput, targets: MultiProofTargets, ) -> Result<MultiProof, ProviderError>
Generate MultiProof for target hashed account and corresponding
hashed storage slot keys.
Sourcefn witness(
&self,
input: TrieInput,
target: HashedPostState,
mode: ExecutionWitnessMode,
) -> Result<Vec<Bytes>, ProviderError>
fn witness( &self, input: TrieInput, target: HashedPostState, mode: ExecutionWitnessMode, ) -> Result<Vec<Bytes>, ProviderError>
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, N> StateProofProvider for MemoryOverlayStateProvider<N>where
N: NodePrimitives,
impl<'a, N> StateProofProvider for MemoryOverlayStateProvider<N>where
N: NodePrimitives,
fn proof( &self, input: TrieInput, address: Address, slots: &[FixedBytes<32>], ) -> Result<AccountProof, ProviderError>
fn multiproof( &self, input: TrieInput, targets: MultiProofTargets, ) -> Result<MultiProof, ProviderError>
fn witness( &self, input: TrieInput, target: HashedPostState, mode: ExecutionWitnessMode, ) -> Result<Vec<Bytes>, ProviderError>
Source§impl<'a, T> StateProofProvider for &'a Twhere
T: 'a + StateProofProvider + ?Sized,
impl<'a, T> StateProofProvider for &'a Twhere
T: 'a + StateProofProvider + ?Sized,
fn proof( &self, input: TrieInput, address: Address, slots: &[FixedBytes<32>], ) -> Result<AccountProof, ProviderError>
fn multiproof( &self, input: TrieInput, targets: MultiProofTargets, ) -> Result<MultiProof, ProviderError>
fn witness( &self, input: TrieInput, target: HashedPostState, mode: ExecutionWitnessMode, ) -> Result<Vec<Bytes>, ProviderError>
Source§impl<N> StateProofProvider for MemoryOverlayStateProviderRef<'_, N>where
N: NodePrimitives,
impl<N> StateProofProvider for MemoryOverlayStateProviderRef<'_, N>where
N: NodePrimitives,
fn proof( &self, input: TrieInput, address: Address, slots: &[FixedBytes<32>], ) -> Result<AccountProof, ProviderError>
fn multiproof( &self, input: TrieInput, targets: MultiProofTargets, ) -> Result<MultiProof, ProviderError>
fn witness( &self, input: TrieInput, target: HashedPostState, mode: ExecutionWitnessMode, ) -> Result<Vec<Bytes>, ProviderError>
Source§impl<T> StateProofProvider for Arc<T>where
T: StateProofProvider + ?Sized,
impl<T> StateProofProvider for Arc<T>where
T: StateProofProvider + ?Sized,
fn proof( &self, input: TrieInput, address: Address, slots: &[FixedBytes<32>], ) -> Result<AccountProof, ProviderError>
fn multiproof( &self, input: TrieInput, targets: MultiProofTargets, ) -> Result<MultiProof, ProviderError>
fn witness( &self, input: TrieInput, target: HashedPostState, mode: ExecutionWitnessMode, ) -> Result<Vec<Bytes>, ProviderError>
Source§impl<T> StateProofProvider for Box<T>where
T: StateProofProvider + ?Sized,
impl<T> StateProofProvider for Box<T>where
T: StateProofProvider + ?Sized,
fn proof( &self, input: TrieInput, address: Address, slots: &[FixedBytes<32>], ) -> Result<AccountProof, ProviderError>
fn multiproof( &self, input: TrieInput, targets: MultiProofTargets, ) -> Result<MultiProof, ProviderError>
fn witness( &self, input: TrieInput, target: HashedPostState, mode: ExecutionWitnessMode, ) -> Result<Vec<Bytes>, ProviderError>
Implementors§
impl<'a, Provider: DBProvider + BlockHashReader + StorageSettingsCache> StateProofProvider for LatestStateProvider<Provider>
impl<'a, Provider: DBProvider + BlockNumReader + BlockHashReader + ChangeSetReader + StorageChangeSetReader + PruneCheckpointReader + StageCheckpointReader + StorageSettingsCache + RocksDBProviderFactory + NodePrimitivesProvider> StateProofProvider for HistoricalStateProvider<Provider>
impl<C, N> StateProofProvider for NoopProvider<C, N>
impl<Provider, N> StateProofProvider for HistoricalStateProviderRef<'_, Provider, N>where
Provider: DBProvider + ChangeSetReader + StorageChangeSetReader + BlockNumReader + BlockHashReader + PruneCheckpointReader + StageCheckpointReader + StorageSettingsCache + NodePrimitivesProvider<Primitives = N>,
N: NodePrimitives,
impl<Provider: DBProvider + StorageSettingsCache> StateProofProvider for LatestStateProviderRef<'_, Provider>
impl<T, ChainSpec> StateProofProvider for MockEthProvider<T, ChainSpec>
Available on crate features
test-utils only.