pub trait StateProvider:
BlockHashReader
+ AccountReader
+ BytecodeReader
+ StateRootProvider
+ StorageRootProvider
+ StateProofProvider
+ HashedPostStateProvider {
// Required method
fn storage(
&self,
account: Address,
storage_key: FixedBytes<32>,
) -> Result<Option<Uint<256, 4>>, ProviderError>;
// Provided methods
fn account_code(
&self,
addr: &Address,
) -> Result<Option<Bytecode>, ProviderError> { ... }
fn account_balance(
&self,
addr: &Address,
) -> Result<Option<Uint<256, 4>>, ProviderError> { ... }
fn account_nonce(
&self,
addr: &Address,
) -> Result<Option<u64>, ProviderError> { ... }
fn into_evm_state_provider(self) -> EvmStateProviderAdapter<Self>
where Self: Sized { ... }
}Expand description
An abstraction for a type that provides state data.
Required Methods§
Sourcefn storage(
&self,
account: Address,
storage_key: FixedBytes<32>,
) -> Result<Option<Uint<256, 4>>, ProviderError>
fn storage( &self, account: Address, storage_key: FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>
Get storage of given account.
Provided Methods§
Sourcefn account_code(
&self,
addr: &Address,
) -> Result<Option<Bytecode>, ProviderError>
fn account_code( &self, addr: &Address, ) -> Result<Option<Bytecode>, ProviderError>
Get account code by its address.
Returns None if the account doesn’t exist or account is not a contract
Sourcefn account_balance(
&self,
addr: &Address,
) -> Result<Option<Uint<256, 4>>, ProviderError>
fn account_balance( &self, addr: &Address, ) -> Result<Option<Uint<256, 4>>, ProviderError>
Get account balance by its address.
Returns None if the account doesn’t exist
Sourcefn account_nonce(&self, addr: &Address) -> Result<Option<u64>, ProviderError>
fn account_nonce(&self, addr: &Address) -> Result<Option<u64>, ProviderError>
Get account nonce by its address.
Returns None if the account doesn’t exist
Sourcefn into_evm_state_provider(self) -> EvmStateProviderAdapter<Self>where
Self: Sized,
fn into_evm_state_provider(self) -> EvmStateProviderAdapter<Self>where
Self: Sized,
Wraps this provider for EVM execution without allocating or cloning it.
Call this on a reference to borrow the provider, or on a box to retain ownership.
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> StateProvider for &'a Twhere
T: 'a + StateProvider + ?Sized,
&'a T: BlockHashReader + AccountReader + BytecodeReader + StateRootProvider + StorageRootProvider + StateProofProvider + HashedPostStateProvider,
impl<'a, T> StateProvider for &'a Twhere
T: 'a + StateProvider + ?Sized,
&'a T: BlockHashReader + AccountReader + BytecodeReader + StateRootProvider + StorageRootProvider + StateProofProvider + HashedPostStateProvider,
fn storage( &self, account: Address, storage_key: FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>
fn account_code( &self, addr: &Address, ) -> Result<Option<Bytecode>, ProviderError>
fn account_balance( &self, addr: &Address, ) -> Result<Option<Uint<256, 4>>, ProviderError>
fn account_nonce(&self, addr: &Address) -> Result<Option<u64>, ProviderError>
Source§impl<Provider, N> StateProvider for OverlayStateProvider<Provider, N>where
N: NodePrimitives,
Provider: Deref,
<Provider as Deref>::Target: DBProvider + HistoryReader + BlockHashReader + StorageSettingsCache + StageCheckpointReader + PruneCheckpointReader + ChangeSetReader + StorageChangeSetReader + BlockNumReader,
impl<Provider, N> StateProvider for OverlayStateProvider<Provider, N>where
N: NodePrimitives,
Provider: Deref,
<Provider as Deref>::Target: DBProvider + HistoryReader + BlockHashReader + StorageSettingsCache + StageCheckpointReader + PruneCheckpointReader + ChangeSetReader + StorageChangeSetReader + BlockNumReader,
Source§impl<T> StateProvider for Arc<T>where
T: StateProvider + ?Sized,
Arc<T>: BlockHashReader + AccountReader + BytecodeReader + StateRootProvider + StorageRootProvider + StateProofProvider + HashedPostStateProvider,
impl<T> StateProvider for Arc<T>where
T: StateProvider + ?Sized,
Arc<T>: BlockHashReader + AccountReader + BytecodeReader + StateRootProvider + StorageRootProvider + StateProofProvider + HashedPostStateProvider,
fn storage( &self, account: Address, storage_key: FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>
fn account_code( &self, addr: &Address, ) -> Result<Option<Bytecode>, ProviderError>
fn account_balance( &self, addr: &Address, ) -> Result<Option<Uint<256, 4>>, ProviderError>
fn account_nonce(&self, addr: &Address) -> Result<Option<u64>, ProviderError>
Source§impl<T> StateProvider for Box<T>where
T: StateProvider + ?Sized,
Box<T>: BlockHashReader + AccountReader + BytecodeReader + StateRootProvider + StorageRootProvider + StateProofProvider + HashedPostStateProvider,
impl<T> StateProvider for Box<T>where
T: StateProvider + ?Sized,
Box<T>: BlockHashReader + AccountReader + BytecodeReader + StateRootProvider + StorageRootProvider + StateProofProvider + HashedPostStateProvider,
fn storage( &self, account: Address, storage_key: FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>
fn account_code( &self, addr: &Address, ) -> Result<Option<Bytecode>, ProviderError>
fn account_balance( &self, addr: &Address, ) -> Result<Option<Uint<256, 4>>, ProviderError>
fn account_nonce(&self, addr: &Address) -> Result<Option<u64>, ProviderError>
Implementors§
impl<'a, Provider: DBProvider + BlockHashReader + StorageSettingsCache> StateProvider for LatestStateProvider<Provider>
impl<C, N> StateProvider for NoopProvider<C, N>
impl<Provider: DBProvider + BlockHashReader + StorageSettingsCache> StateProvider for LatestStateProviderRef<'_, Provider>
impl<T, ChainSpec> StateProvider for MockEthProvider<T, ChainSpec>
Available on crate features
test-utils only.