reth_rpc_eth_api::helpers::state

Trait LoadState

Source
pub trait LoadState: EthApiTypes + RpcNodeCoreExt<Provider: StateProviderFactory + ChainSpecProvider<ChainSpec: EthChainSpec + EthereumHardforks>, Pool: 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 next_available_nonce(
        &self,
        address: Address,
    ) -> impl Future<Output = Result<u64, Self::Error>> + Send
       where Self: 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.

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 next_available_nonce( &self, address: Address, ) -> impl Future<Output = Result<u64, Self::Error>> + Send
where Self: SpawnBlocking,

Returns the next available nonce without gaps for the given address Next available nonce is either the on chain nonce of the account or the highest consecutive nonce in the pool + 1

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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§