Skip to main content

StateProvider

Trait StateProvider 

Source
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§

Source

fn storage( &self, account: Address, storage_key: FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>

Get storage of given account.

Provided Methods§

Source

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

Source

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

Source

fn account_nonce(&self, addr: &Address) -> Result<Option<u64>, ProviderError>

Get account nonce by its address.

Returns None if the account doesn’t exist

Source

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 T

Source§

fn storage( &self, account: Address, storage_key: FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>

Source§

fn account_code( &self, addr: &Address, ) -> Result<Option<Bytecode>, ProviderError>

Source§

fn account_balance( &self, addr: &Address, ) -> Result<Option<Uint<256, 4>>, ProviderError>

Source§

fn account_nonce(&self, addr: &Address) -> Result<Option<u64>, ProviderError>

Source§

impl<Provider, N> StateProvider for OverlayStateProvider<Provider, N>

Source§

fn storage( &self, address: Address, storage_key: FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>

Source§

impl<T> StateProvider for Arc<T>

Source§

fn storage( &self, account: Address, storage_key: FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>

Source§

fn account_code( &self, addr: &Address, ) -> Result<Option<Bytecode>, ProviderError>

Source§

fn account_balance( &self, addr: &Address, ) -> Result<Option<Uint<256, 4>>, ProviderError>

Source§

fn account_nonce(&self, addr: &Address) -> Result<Option<u64>, ProviderError>

Source§

impl<T> StateProvider for Box<T>

Source§

fn storage( &self, account: Address, storage_key: FixedBytes<32>, ) -> Result<Option<Uint<256, 4>>, ProviderError>

Source§

fn account_code( &self, addr: &Address, ) -> Result<Option<Bytecode>, ProviderError>

Source§

fn account_balance( &self, addr: &Address, ) -> Result<Option<Uint<256, 4>>, ProviderError>

Source§

fn account_nonce(&self, addr: &Address) -> Result<Option<u64>, ProviderError>

Implementors§

Source§

impl<'a, Provider: DBProvider + BlockHashReader + StorageSettingsCache> StateProvider for LatestStateProvider<Provider>

Source§

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

Source§

impl<Provider: DBProvider + BlockHashReader + StorageSettingsCache> StateProvider for LatestStateProviderRef<'_, Provider>

Source§

impl<T, ChainSpec> StateProvider for MockEthProvider<T, ChainSpec>
where T: NodePrimitives, ChainSpec: EthChainSpec + Send + Sync + 'static,

Available on crate features test-utils only.