mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
fix: use generic receipt in StaticFileProducer (#13324)
This commit is contained in:
@ -36,7 +36,11 @@ where
|
||||
Provider: StaticFileProviderFactory
|
||||
+ DatabaseProviderFactory<
|
||||
Provider: StaticFileProviderFactory<
|
||||
Primitives: NodePrimitives<SignedTx: Value + Compact, BlockHeader: Value + Compact>,
|
||||
Primitives: NodePrimitives<
|
||||
SignedTx: Value + Compact,
|
||||
BlockHeader: Value + Compact,
|
||||
Receipt: Value + Compact,
|
||||
>,
|
||||
> + StageCheckpointReader
|
||||
+ BlockReader
|
||||
+ ChainStateBlockReader,
|
||||
@ -152,7 +156,11 @@ where
|
||||
Provider: StaticFileProviderFactory
|
||||
+ DatabaseProviderFactory<
|
||||
Provider: StaticFileProviderFactory<
|
||||
Primitives: NodePrimitives<SignedTx: Value + Compact, BlockHeader: Value + Compact>,
|
||||
Primitives: NodePrimitives<
|
||||
SignedTx: Value + Compact,
|
||||
BlockHeader: Value + Compact,
|
||||
Receipt: Value + Compact,
|
||||
>,
|
||||
> + StageCheckpointReader
|
||||
+ BlockReader
|
||||
+ ChainStateBlockReader,
|
||||
|
||||
@ -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, BlockReader, DBProvider, StaticFileProviderFactory,
|
||||
};
|
||||
@ -13,8 +15,11 @@ use std::ops::RangeInclusive;
|
||||
#[derive(Debug, Default)]
|
||||
pub struct Receipts;
|
||||
|
||||
impl<Provider: StaticFileProviderFactory + DBProvider + BlockReader> Segment<Provider>
|
||||
for Receipts
|
||||
impl<Provider> Segment<Provider> for Receipts
|
||||
where
|
||||
Provider: StaticFileProviderFactory<Primitives: NodePrimitives<Receipt: Value + Compact>>
|
||||
+ DBProvider
|
||||
+ BlockReader,
|
||||
{
|
||||
fn segment(&self) -> StaticFileSegment {
|
||||
StaticFileSegment::Receipts
|
||||
@ -36,7 +41,10 @@ impl<Provider: StaticFileProviderFactory + DBProvider + BlockReader> Segment<Pro
|
||||
.block_body_indices(block)?
|
||||
.ok_or(ProviderError::BlockBodyIndicesNotFound(block))?;
|
||||
|
||||
let mut receipts_cursor = provider.tx_ref().cursor_read::<tables::Receipts>()?;
|
||||
let mut receipts_cursor = provider
|
||||
.tx_ref()
|
||||
.cursor_read::<tables::Receipts<<Provider::Primitives as NodePrimitives>::Receipt>>(
|
||||
)?;
|
||||
let receipts_walker = receipts_cursor.walk_range(block_body_indices.tx_num_range())?;
|
||||
|
||||
static_file_writer.append_receipts(
|
||||
|
||||
@ -90,7 +90,11 @@ where
|
||||
Provider: StaticFileProviderFactory
|
||||
+ DatabaseProviderFactory<
|
||||
Provider: StaticFileProviderFactory<
|
||||
Primitives: NodePrimitives<SignedTx: Value + Compact, BlockHeader: Value + Compact>,
|
||||
Primitives: NodePrimitives<
|
||||
SignedTx: Value + Compact,
|
||||
BlockHeader: Value + Compact,
|
||||
Receipt: Value + Compact,
|
||||
>,
|
||||
> + StageCheckpointReader
|
||||
+ BlockReader,
|
||||
>,
|
||||
|
||||
@ -11,7 +11,7 @@ use reth_nippy_jar::{NippyJar, NippyJarError, NippyJarWriter};
|
||||
use reth_node_types::NodePrimitives;
|
||||
use reth_primitives::{
|
||||
static_file::{SegmentHeader, SegmentRangeInclusive},
|
||||
Receipt, StaticFileSegment,
|
||||
StaticFileSegment,
|
||||
};
|
||||
use reth_storage_errors::provider::{ProviderError, ProviderResult};
|
||||
use std::{
|
||||
@ -615,7 +615,8 @@ impl<N: NodePrimitives> StaticFileProviderRW<N> {
|
||||
pub fn append_receipts<I, R>(&mut self, receipts: I) -> ProviderResult<Option<TxNumber>>
|
||||
where
|
||||
I: Iterator<Item = Result<(TxNumber, R), ProviderError>>,
|
||||
R: Borrow<Receipt>,
|
||||
R: Borrow<N::Receipt>,
|
||||
N::Receipt: Compact,
|
||||
{
|
||||
debug_assert!(self.writer.user_header().segment() == StaticFileSegment::Receipts);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user