diff --git a/crates/rpc/eth/block.rs b/crates/rpc/eth/block.rs index 81f2bbed407..2e24b671fc8 100644 --- a/crates/rpc/eth/block.rs +++ b/crates/rpc/eth/block.rs @@ -511,6 +511,16 @@ pub fn create_access_list( serde_json::to_value(result).map_err(|_| RpcErr::Internal) } +pub fn block_number(storage: Store) -> Result { + info!("Requested latest block number"); + match storage.get_latest_block_number() { + Ok(Some(block_number)) => { + serde_json::to_value(format!("{:#x}", block_number)).map_err(|_| RpcErr::Internal) + } + _ => Err(RpcErr::Internal), + } +} + impl Display for BlockIdentifier { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { diff --git a/crates/rpc/rpc.rs b/crates/rpc/rpc.rs index 2b1738eb84a..9de1591c8b6 100644 --- a/crates/rpc/rpc.rs +++ b/crates/rpc/rpc.rs @@ -139,6 +139,7 @@ pub fn map_requests(req: &RpcRequest, storage: Store) -> Result { let request = CreateAccessListRequest::parse(&req.params).ok_or(RpcErr::BadParams)?; block::create_access_list(&request, storage) } + "eth_blockNumber" => block::block_number(storage), "engine_forkchoiceUpdatedV3" => engine::forkchoice_updated_v3(), "engine_newPayloadV3" => { let request =