From bdb8b9fae2d5c74c193c898f763315d48fd57774 Mon Sep 17 00:00:00 2001 From: nk_ysg Date: Tue, 6 Aug 2024 19:07:14 +0800 Subject: [PATCH] remove pending block support from OpEthApi (#10074) --- crates/optimism/rpc/src/eth/pending_block.rs | 33 +++++++++++++++----- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/crates/optimism/rpc/src/eth/pending_block.rs b/crates/optimism/rpc/src/eth/pending_block.rs index c64c83cc06..0a66fb6230 100644 --- a/crates/optimism/rpc/src/eth/pending_block.rs +++ b/crates/optimism/rpc/src/eth/pending_block.rs @@ -1,17 +1,22 @@ //! Loads OP pending block for a RPC response. +use crate::OpEthApi; use reth_evm::ConfigureEvm; use reth_node_api::FullNodeComponents; -use reth_primitives::{revm_primitives::BlockEnv, BlockNumber, B256}; -use reth_provider::{ - BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, ExecutionOutcome, StateProviderFactory, +use reth_primitives::{ + revm_primitives::BlockEnv, BlockHashOrNumber, BlockNumber, SealedBlockWithSenders, B256, }; -use reth_rpc_eth_api::helpers::{LoadPendingBlock, SpawnBlocking}; -use reth_rpc_eth_types::PendingBlock; +use reth_provider::{ + BlockReader, BlockReaderIdExt, ChainSpecProvider, EvmEnvProvider, ExecutionOutcome, + StateProviderFactory, +}; +use reth_rpc_eth_api::{ + helpers::{LoadPendingBlock, SpawnBlocking}, + FromEthApiError, +}; +use reth_rpc_eth_types::{EthApiError, PendingBlock}; use reth_transaction_pool::TransactionPool; -use crate::OpEthApi; - impl LoadPendingBlock for OpEthApi where Self: SpawnBlocking, @@ -39,6 +44,20 @@ where self.inner.evm_config() } + /// Returns the locally built pending block + async fn local_pending_block(&self) -> Result, Self::Error> { + // See: + let latest = self + .provider() + .latest_header() + .map_err(Self::Error::from_eth_err)? + .ok_or_else(|| EthApiError::UnknownBlockNumber)?; + let (_, block_hash) = latest.split(); + self.provider() + .sealed_block_with_senders(BlockHashOrNumber::from(block_hash), Default::default()) + .map_err(Self::Error::from_eth_err) + } + fn receipts_root( &self, _block_env: &BlockEnv,