Trait LoadPendingBlock
pub trait LoadPendingBlock: EthApiTypes + RpcNodeCorewhere
Self::Error: FromEvmError<Self::Evm>,
Self::RpcConvert: RpcConvert<Network = Self::NetworkTypes>,{
// Required methods
fn pending_block(&self) -> &Mutex<Option<PendingBlock<Self::Primitives>>>;
fn pending_env_builder(
&self,
) -> &(dyn PendingEnvBuilder<Self::Evm> + 'static);
fn pending_block_kind(&self) -> PendingBlockKind;
// Provided methods
fn pending_block_env_and_cfg(
&self,
) -> Result<PendingBlockEnv<<Self::Provider as BlockReader>::Block, <Self::Provider as ReceiptProvider>::Receipt, <<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Spec>, Self::Error> { ... }
fn next_env_attributes(
&self,
parent: &SealedHeader<<Self::Provider as HeaderProvider>::Header>,
) -> Result<<Self::Evm as ConfigureEvm>::NextBlockEnvCtx, Self::Error> { ... }
fn local_pending_state(
&self,
) -> impl Future<Output = Result<Option<Box<dyn StateProvider>>, Self::Error>> + Send
where Self: SpawnBlocking { ... }
fn pool_pending_block(
&self,
) -> impl Future<Output = Result<Option<PendingBlock<Self::Primitives>>, Self::Error>> + Send
where Self: SpawnBlocking { ... }
fn local_pending_block(
&self,
) -> impl Future<Output = Result<Option<(Arc<RecoveredBlock<<Self::Primitives as NodePrimitives>::Block>>, Arc<Vec<<Self::Primitives as NodePrimitives>::Receipt>>)>, Self::Error>> + Send
where Self: SpawnBlocking,
Self::Pool: TransactionPool,
<Self::Pool as TransactionPool>::Transaction: PoolTransaction<Consensus = <Self::Provider as TransactionsProvider>::Transaction> { ... }
fn build_block(
&self,
parent: &SealedHeader<<Self::Provider as HeaderProvider>::Header>,
) -> Result<ExecutedBlock<Self::Primitives>, Self::Error>
where Self::Pool: TransactionPool,
<Self::Pool as TransactionPool>::Transaction: PoolTransaction<Consensus = <Self::Provider as TransactionsProvider>::Transaction>,
EthApiError: From<ProviderError> { ... }
}
Expand description
Loads a pending block from database.
Behaviour shared by several eth_
RPC methods, not exclusive to eth_
blocks RPC methods.
Required Methods§
fn pending_block(&self) -> &Mutex<Option<PendingBlock<Self::Primitives>>>
fn pending_block(&self) -> &Mutex<Option<PendingBlock<Self::Primitives>>>
Returns a handle to the pending block.
Data access in default (L1) trait method implementations.
fn pending_env_builder(&self) -> &(dyn PendingEnvBuilder<Self::Evm> + 'static)
fn pending_env_builder(&self) -> &(dyn PendingEnvBuilder<Self::Evm> + 'static)
Returns a PendingEnvBuilder
for the pending block.
fn pending_block_kind(&self) -> PendingBlockKind
fn pending_block_kind(&self) -> PendingBlockKind
Returns the pending block kind
Provided Methods§
fn pending_block_env_and_cfg(
&self,
) -> Result<PendingBlockEnv<<Self::Provider as BlockReader>::Block, <Self::Provider as ReceiptProvider>::Receipt, <<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Spec>, Self::Error>
fn pending_block_env_and_cfg( &self, ) -> Result<PendingBlockEnv<<Self::Provider as BlockReader>::Block, <Self::Provider as ReceiptProvider>::Receipt, <<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Spec>, Self::Error>
Configures the PendingBlockEnv
for the pending block
If no pending block is available, this will derive it from the latest
block
fn next_env_attributes(
&self,
parent: &SealedHeader<<Self::Provider as HeaderProvider>::Header>,
) -> Result<<Self::Evm as ConfigureEvm>::NextBlockEnvCtx, Self::Error>
fn next_env_attributes( &self, parent: &SealedHeader<<Self::Provider as HeaderProvider>::Header>, ) -> Result<<Self::Evm as ConfigureEvm>::NextBlockEnvCtx, Self::Error>
Returns ConfigureEvm::NextBlockEnvCtx
for building a local pending block.
fn local_pending_state(
&self,
) -> impl Future<Output = Result<Option<Box<dyn StateProvider>>, Self::Error>> + Sendwhere
Self: SpawnBlocking,
fn local_pending_state(
&self,
) -> impl Future<Output = Result<Option<Box<dyn StateProvider>>, Self::Error>> + Sendwhere
Self: SpawnBlocking,
Returns a StateProviderBox
on a mem-pool built pending block overlaying latest.
fn pool_pending_block(
&self,
) -> impl Future<Output = Result<Option<PendingBlock<Self::Primitives>>, Self::Error>> + Sendwhere
Self: SpawnBlocking,
fn pool_pending_block(
&self,
) -> impl Future<Output = Result<Option<PendingBlock<Self::Primitives>>, Self::Error>> + Sendwhere
Self: SpawnBlocking,
Returns a mem-pool built pending block.
fn local_pending_block(
&self,
) -> impl Future<Output = Result<Option<(Arc<RecoveredBlock<<Self::Primitives as NodePrimitives>::Block>>, Arc<Vec<<Self::Primitives as NodePrimitives>::Receipt>>)>, Self::Error>> + Sendwhere
Self: SpawnBlocking,
Self::Pool: TransactionPool,
<Self::Pool as TransactionPool>::Transaction: PoolTransaction<Consensus = <Self::Provider as TransactionsProvider>::Transaction>,
fn local_pending_block(
&self,
) -> impl Future<Output = Result<Option<(Arc<RecoveredBlock<<Self::Primitives as NodePrimitives>::Block>>, Arc<Vec<<Self::Primitives as NodePrimitives>::Receipt>>)>, Self::Error>> + Sendwhere
Self: SpawnBlocking,
Self::Pool: TransactionPool,
<Self::Pool as TransactionPool>::Transaction: PoolTransaction<Consensus = <Self::Provider as TransactionsProvider>::Transaction>,
Returns the locally built pending block
fn build_block(
&self,
parent: &SealedHeader<<Self::Provider as HeaderProvider>::Header>,
) -> Result<ExecutedBlock<Self::Primitives>, Self::Error>where
Self::Pool: TransactionPool,
<Self::Pool as TransactionPool>::Transaction: PoolTransaction<Consensus = <Self::Provider as TransactionsProvider>::Transaction>,
EthApiError: From<ProviderError>,
fn build_block(
&self,
parent: &SealedHeader<<Self::Provider as HeaderProvider>::Header>,
) -> Result<ExecutedBlock<Self::Primitives>, Self::Error>where
Self::Pool: TransactionPool,
<Self::Pool as TransactionPool>::Transaction: PoolTransaction<Consensus = <Self::Provider as TransactionsProvider>::Transaction>,
EthApiError: From<ProviderError>,
Builds a pending block using the configured provider and pool.
If the origin is the actual pending block, the block is built with withdrawals.
After Cancun, if the origin is the actual pending block, the block includes the EIP-4788 pre block contract call using the parent beacon block root received from the CL.
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.