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§
sourcefn provider(
&self,
) -> impl StateProviderFactory + ChainSpecProvider<ChainSpec = ChainSpec>
fn provider( &self, ) -> impl StateProviderFactory + ChainSpecProvider<ChainSpec = ChainSpec>
Returns a handle for reading state from database.
Data access in default trait method implementations.
Provided Methods§
sourcefn state_at_hash(
&self,
block_hash: B256,
) -> Result<StateProviderBox, Self::Error>
fn state_at_hash( &self, block_hash: B256, ) -> Result<StateProviderBox, Self::Error>
Returns the state at the given block number
sourcefn state_at_block_id(
&self,
at: BlockId,
) -> Result<StateProviderBox, Self::Error>
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
sourcefn latest_state(&self) -> Result<StateProviderBox, Self::Error>
fn latest_state(&self) -> Result<StateProviderBox, Self::Error>
Returns the latest state
sourcefn state_at_block_id_or_latest(
&self,
block_id: Option<BlockId>,
) -> Result<StateProviderBox, Self::Error>
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)
sourcefn evm_env_at(
&self,
at: BlockId,
) -> impl Future<Output = Result<(CfgEnvWithHandlerCfg, BlockEnv, BlockId), Self::Error>> + Sendwhere
Self: LoadPendingBlock + SpawnBlocking,
fn evm_env_at(
&self,
at: BlockId,
) -> impl Future<Output = Result<(CfgEnvWithHandlerCfg, BlockEnv, BlockId), Self::Error>> + Sendwhere
Self: LoadPendingBlock + SpawnBlocking,
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.
sourcefn evm_env_for_raw_block(
&self,
header: &Header,
) -> impl Future<Output = Result<(CfgEnvWithHandlerCfg, BlockEnv), Self::Error>> + Sendwhere
Self: LoadPendingBlock + SpawnBlocking,
fn evm_env_for_raw_block(
&self,
header: &Header,
) -> impl Future<Output = Result<(CfgEnvWithHandlerCfg, BlockEnv), Self::Error>> + Sendwhere
Self: LoadPendingBlock + SpawnBlocking,
Returns the revm evm env for the raw block header
This is used for tracing raw blocks
sourcefn transaction_count(
&self,
address: Address,
block_id: Option<BlockId>,
) -> impl Future<Output = Result<U256, Self::Error>> + Sendwhere
Self: SpawnBlocking,
fn transaction_count(
&self,
address: Address,
block_id: Option<BlockId>,
) -> impl Future<Output = Result<U256, Self::Error>> + Sendwhere
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).