feat: add header AT to provider (#13030)

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
This commit is contained in:
Matthias Seitz
2024-12-02 14:24:48 +01:00
committed by GitHub
parent 519a10ae99
commit 332cce1f9b
71 changed files with 669 additions and 434 deletions

View File

@ -1,7 +1,9 @@
use crate::segments::Segment;
use alloy_primitives::BlockNumber;
use reth_db::tables;
use reth_codecs::Compact;
use reth_db::{table::Value, tables};
use reth_db_api::{cursor::DbCursorRO, transaction::DbTx};
use reth_primitives_traits::NodePrimitives;
use reth_provider::{providers::StaticFileWriter, DBProvider, StaticFileProviderFactory};
use reth_static_file_types::StaticFileSegment;
use reth_storage_errors::provider::ProviderResult;
@ -11,7 +13,11 @@ use std::ops::RangeInclusive;
#[derive(Debug, Default)]
pub struct Headers;
impl<Provider: StaticFileProviderFactory + DBProvider> Segment<Provider> for Headers {
impl<Provider> Segment<Provider> for Headers
where
Provider: StaticFileProviderFactory<Primitives: NodePrimitives<BlockHeader: Compact + Value>>
+ DBProvider,
{
fn segment(&self) -> StaticFileSegment {
StaticFileSegment::Headers
}
@ -25,7 +31,10 @@ impl<Provider: StaticFileProviderFactory + DBProvider> Segment<Provider> for Hea
let mut static_file_writer =
static_file_provider.get_writer(*block_range.start(), StaticFileSegment::Headers)?;
let mut headers_cursor = provider.tx_ref().cursor_read::<tables::Headers>()?;
let mut headers_cursor = provider
.tx_ref()
.cursor_read::<tables::Headers<<Provider::Primitives as NodePrimitives>::BlockHeader>>(
)?;
let headers_walker = headers_cursor.walk_range(block_range.clone())?;
let mut header_td_cursor =

View File

@ -90,7 +90,7 @@ where
Provider: StaticFileProviderFactory
+ DatabaseProviderFactory<
Provider: StaticFileProviderFactory<
Primitives: NodePrimitives<SignedTx: Value + Compact>,
Primitives: NodePrimitives<SignedTx: Value + Compact, BlockHeader: Value + Compact>,
> + StageCheckpointReader
+ BlockReader,
>,