Trait LoadState
pub trait LoadState: EthApiTypes + RpcNodeCoreExtwhere
Self::Provider: StateProviderFactory + ChainSpecProvider,
<Self::Provider as ChainSpecProvider>::ChainSpec: EthChainSpec + EthereumHardforks,
Self::Pool: TransactionPool,{
// Provided methods
fn state_at_hash(
&self,
block_hash: FixedBytes<32>,
) -> Result<Box<dyn StateProvider>, Self::Error> { ... }
fn state_at_block_id(
&self,
at: BlockId,
) -> Result<Box<dyn StateProvider>, Self::Error> { ... }
fn latest_state(&self) -> Result<Box<dyn StateProvider>, Self::Error> { ... }
fn state_at_block_id_or_latest(
&self,
block_id: Option<BlockId>,
) -> Result<Box<dyn StateProvider>, 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<Uint<256, 4>, 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§
fn state_at_hash(
&self,
block_hash: FixedBytes<32>,
) -> Result<Box<dyn StateProvider>, Self::Error>
fn state_at_hash( &self, block_hash: FixedBytes<32>, ) -> Result<Box<dyn StateProvider>, Self::Error>
Returns the state at the given block number
fn state_at_block_id(
&self,
at: BlockId,
) -> Result<Box<dyn StateProvider>, Self::Error>
fn state_at_block_id( &self, at: BlockId, ) -> Result<Box<dyn StateProvider>, 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
fn latest_state(&self) -> Result<Box<dyn StateProvider>, Self::Error>
fn latest_state(&self) -> Result<Box<dyn StateProvider>, Self::Error>
Returns the latest state
fn state_at_block_id_or_latest(
&self,
block_id: Option<BlockId>,
) -> Result<Box<dyn StateProvider>, Self::Error>
fn state_at_block_id_or_latest( &self, block_id: Option<BlockId>, ) -> Result<Box<dyn StateProvider>, Self::Error>
Returns the state at the given BlockId
enum or the latest.
Convenience function to interprets None
as BlockId::Number(BlockNumberOrTag::Latest)
fn 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,
fn 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
fn next_available_nonce(
&self,
address: Address,
) -> impl Future<Output = Result<u64, Self::Error>> + Sendwhere
Self: SpawnBlocking,
fn next_available_nonce(
&self,
address: Address,
) -> impl Future<Output = Result<u64, Self::Error>> + Sendwhere
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
fn transaction_count(
&self,
address: Address,
block_id: Option<BlockId>,
) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Sendwhere
Self: SpawnBlocking,
fn transaction_count(
&self,
address: Address,
block_id: Option<BlockId>,
) -> impl Future<Output = Result<Uint<256, 4>, 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).
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.