Trait reth_rpc_eth_api::helpers::state::LoadState

source ·
pub trait LoadState: EthApiTypes {
    // Required methods
    fn provider(
        &self,
    ) -> impl StateProviderFactory + ChainSpecProvider<ChainSpec = ChainSpec>;
    fn cache(&self) -> &EthStateCache;
    fn pool(&self) -> impl TransactionPool;

    // Provided methods
    fn state_at_hash(
        &self,
        block_hash: B256,
    ) -> Result<StateProviderBox, Self::Error> { ... }
    fn state_at_block_id(
        &self,
        at: BlockId,
    ) -> Result<StateProviderBox, Self::Error> { ... }
    fn latest_state(&self) -> Result<StateProviderBox, Self::Error> { ... }
    fn state_at_block_id_or_latest(
        &self,
        block_id: Option<BlockId>,
    ) -> Result<StateProviderBox, Self::Error> { ... }
    fn evm_env_at(
        &self,
        at: BlockId,
    ) -> impl Future<Output = Result<(CfgEnvWithHandlerCfg, BlockEnv, BlockId), Self::Error>> + Send
       where Self: LoadPendingBlock + SpawnBlocking { ... }
    fn evm_env_for_raw_block(
        &self,
        header: &Header,
    ) -> impl Future<Output = Result<(CfgEnvWithHandlerCfg, BlockEnv), Self::Error>> + Send
       where Self: LoadPendingBlock + SpawnBlocking { ... }
    fn transaction_count(
        &self,
        address: Address,
        block_id: Option<BlockId>,
    ) -> impl Future<Output = Result<U256, Self::Error>> + Send
       where Self: SpawnBlocking { ... }
    fn get_code(
        &self,
        address: Address,
        block_id: Option<BlockId>,
    ) -> impl Future<Output = Result<Bytes, Self::Error>> + Send
       where Self: SpawnBlocking { ... }
}
Expand description

Loads state from database.

Behaviour shared by several eth_ RPC methods, not exclusive to eth_ state RPC methods.

Required Methods§

source

fn provider( &self, ) -> impl StateProviderFactory + ChainSpecProvider<ChainSpec = ChainSpec>

Returns a handle for reading state from database.

Data access in default trait method implementations.

source

fn cache(&self) -> &EthStateCache

Returns a handle for reading data from memory.

Data access in default (L1) trait method implementations.

source

fn pool(&self) -> impl TransactionPool

Returns a handle for reading data from transaction pool.

Data access in default trait method implementations.

Provided Methods§

source

fn state_at_hash( &self, block_hash: B256, ) -> Result<StateProviderBox, Self::Error>

Returns the state at the given block number

source

fn state_at_block_id( &self, at: BlockId, ) -> Result<StateProviderBox, Self::Error>

Returns the state at the given [BlockId] enum.

Note: if not BlockNumberOrTag::Pending then this will only return canonical state. See also https://github.com/paradigmxyz/reth/issues/4515

source

fn latest_state(&self) -> Result<StateProviderBox, Self::Error>

Returns the latest state

source

fn state_at_block_id_or_latest( &self, block_id: Option<BlockId>, ) -> Result<StateProviderBox, Self::Error>

Returns the state at the given [BlockId] enum or the latest.

Convenience function to interprets None as BlockId::Number(BlockNumberOrTag::Latest)

source

fn evm_env_at( &self, at: BlockId, ) -> impl Future<Output = Result<(CfgEnvWithHandlerCfg, BlockEnv, BlockId), Self::Error>> + Send

Returns the revm evm env for the requested [BlockId]

If the [BlockId] this will return the [BlockId] of the block the env was configured for. If the [BlockId] is pending, this will return the “Pending” tag, otherwise this returns the hash of the exact block.

source

fn evm_env_for_raw_block( &self, header: &Header, ) -> impl Future<Output = Result<(CfgEnvWithHandlerCfg, BlockEnv), Self::Error>> + Send

Returns the revm evm env for the raw block header

This is used for tracing raw blocks

source

fn transaction_count( &self, address: Address, block_id: Option<BlockId>, ) -> impl Future<Output = Result<U256, Self::Error>> + Send
where Self: SpawnBlocking,

Returns the number of transactions sent from an address at the given block identifier.

If this is BlockNumberOrTag::Pending then this will look up the highest transaction in pool and return the next nonce (highest + 1).

source

fn get_code( &self, address: Address, block_id: Option<BlockId>, ) -> impl Future<Output = Result<Bytes, Self::Error>> + Send
where Self: SpawnBlocking,

Returns code of given account, at the given identifier.

Object Safety§

This trait is not object safe.

Implementors§