mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
fix: fetch header by hash (#11407)
This commit is contained in:
@ -1524,19 +1524,13 @@ where
|
|||||||
/// Return sealed block from database or in-memory state by hash.
|
/// Return sealed block from database or in-memory state by hash.
|
||||||
fn sealed_header_by_hash(&self, hash: B256) -> ProviderResult<Option<SealedHeader>> {
|
fn sealed_header_by_hash(&self, hash: B256) -> ProviderResult<Option<SealedHeader>> {
|
||||||
// check memory first
|
// check memory first
|
||||||
let block = self
|
let block =
|
||||||
.state
|
self.state.tree_state.block_by_hash(hash).map(|block| block.as_ref().clone().header);
|
||||||
.tree_state
|
|
||||||
.block_by_hash(hash)
|
|
||||||
// TODO: clone for compatibility. should we return an Arc here?
|
|
||||||
.map(|block| block.as_ref().clone().header);
|
|
||||||
|
|
||||||
if block.is_some() {
|
if block.is_some() {
|
||||||
Ok(block)
|
Ok(block)
|
||||||
} else if let Some(block_num) = self.provider.block_number(hash)? {
|
|
||||||
Ok(self.provider.sealed_header(block_num)?)
|
|
||||||
} else {
|
} else {
|
||||||
Ok(None)
|
self.provider.sealed_header_by_hash(hash)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,11 @@ pub trait HeaderProvider: Send + Sync {
|
|||||||
/// Get header by block hash
|
/// Get header by block hash
|
||||||
fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Header>>;
|
fn header(&self, block_hash: &BlockHash) -> ProviderResult<Option<Header>>;
|
||||||
|
|
||||||
|
/// Retrieves the header sealed by the given block hash.
|
||||||
|
fn sealed_header_by_hash(&self, block_hash: BlockHash) -> ProviderResult<Option<SealedHeader>> {
|
||||||
|
Ok(self.header(&block_hash)?.map(|header| SealedHeader::new(header, block_hash)))
|
||||||
|
}
|
||||||
|
|
||||||
/// Get header by block number
|
/// Get header by block number
|
||||||
fn header_by_number(&self, num: u64) -> ProviderResult<Option<Header>>;
|
fn header_by_number(&self, num: u64) -> ProviderResult<Option<Header>>;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user