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
|
Provider: StaticFileProviderFactory
|
||||||
+ DatabaseProviderFactory<
|
+ DatabaseProviderFactory<
|
||||||
Provider: StaticFileProviderFactory<
|
Provider: StaticFileProviderFactory<
|
||||||
Primitives: NodePrimitives<SignedTx: Value + Compact, BlockHeader: Value + Compact>,
|
Primitives: NodePrimitives<
|
||||||
|
SignedTx: Value + Compact,
|
||||||
|
BlockHeader: Value + Compact,
|
||||||
|
Receipt: Value + Compact,
|
||||||
|
>,
|
||||||
> + StageCheckpointReader
|
> + StageCheckpointReader
|
||||||
+ BlockReader
|
+ BlockReader
|
||||||
+ ChainStateBlockReader,
|
+ ChainStateBlockReader,
|
||||||
@ -152,7 +156,11 @@ where
|
|||||||
Provider: StaticFileProviderFactory
|
Provider: StaticFileProviderFactory
|
||||||
+ DatabaseProviderFactory<
|
+ DatabaseProviderFactory<
|
||||||
Provider: StaticFileProviderFactory<
|
Provider: StaticFileProviderFactory<
|
||||||
Primitives: NodePrimitives<SignedTx: Value + Compact, BlockHeader: Value + Compact>,
|
Primitives: NodePrimitives<
|
||||||
|
SignedTx: Value + Compact,
|
||||||
|
BlockHeader: Value + Compact,
|
||||||
|
Receipt: Value + Compact,
|
||||||
|
>,
|
||||||
> + StageCheckpointReader
|
> + StageCheckpointReader
|
||||||
+ BlockReader
|
+ BlockReader
|
||||||
+ ChainStateBlockReader,
|
+ ChainStateBlockReader,
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
use crate::segments::Segment;
|
use crate::segments::Segment;
|
||||||
use alloy_primitives::BlockNumber;
|
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_db_api::{cursor::DbCursorRO, transaction::DbTx};
|
||||||
|
use reth_primitives_traits::NodePrimitives;
|
||||||
use reth_provider::{
|
use reth_provider::{
|
||||||
providers::StaticFileWriter, BlockReader, DBProvider, StaticFileProviderFactory,
|
providers::StaticFileWriter, BlockReader, DBProvider, StaticFileProviderFactory,
|
||||||
};
|
};
|
||||||
@ -13,8 +15,11 @@ use std::ops::RangeInclusive;
|
|||||||
#[derive(Debug, Default)]
|
#[derive(Debug, Default)]
|
||||||
pub struct Receipts;
|
pub struct Receipts;
|
||||||
|
|
||||||
impl<Provider: StaticFileProviderFactory + DBProvider + BlockReader> Segment<Provider>
|
impl<Provider> Segment<Provider> for Receipts
|
||||||
for Receipts
|
where
|
||||||
|
Provider: StaticFileProviderFactory<Primitives: NodePrimitives<Receipt: Value + Compact>>
|
||||||
|
+ DBProvider
|
||||||
|
+ BlockReader,
|
||||||
{
|
{
|
||||||
fn segment(&self) -> StaticFileSegment {
|
fn segment(&self) -> StaticFileSegment {
|
||||||
StaticFileSegment::Receipts
|
StaticFileSegment::Receipts
|
||||||
@ -36,7 +41,10 @@ impl<Provider: StaticFileProviderFactory + DBProvider + BlockReader> Segment<Pro
|
|||||||
.block_body_indices(block)?
|
.block_body_indices(block)?
|
||||||
.ok_or(ProviderError::BlockBodyIndicesNotFound(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())?;
|
let receipts_walker = receipts_cursor.walk_range(block_body_indices.tx_num_range())?;
|
||||||
|
|
||||||
static_file_writer.append_receipts(
|
static_file_writer.append_receipts(
|
||||||
|
|||||||
@ -90,7 +90,11 @@ where
|
|||||||
Provider: StaticFileProviderFactory
|
Provider: StaticFileProviderFactory
|
||||||
+ DatabaseProviderFactory<
|
+ DatabaseProviderFactory<
|
||||||
Provider: StaticFileProviderFactory<
|
Provider: StaticFileProviderFactory<
|
||||||
Primitives: NodePrimitives<SignedTx: Value + Compact, BlockHeader: Value + Compact>,
|
Primitives: NodePrimitives<
|
||||||
|
SignedTx: Value + Compact,
|
||||||
|
BlockHeader: Value + Compact,
|
||||||
|
Receipt: Value + Compact,
|
||||||
|
>,
|
||||||
> + StageCheckpointReader
|
> + StageCheckpointReader
|
||||||
+ BlockReader,
|
+ BlockReader,
|
||||||
>,
|
>,
|
||||||
|
|||||||
@ -11,7 +11,7 @@ use reth_nippy_jar::{NippyJar, NippyJarError, NippyJarWriter};
|
|||||||
use reth_node_types::NodePrimitives;
|
use reth_node_types::NodePrimitives;
|
||||||
use reth_primitives::{
|
use reth_primitives::{
|
||||||
static_file::{SegmentHeader, SegmentRangeInclusive},
|
static_file::{SegmentHeader, SegmentRangeInclusive},
|
||||||
Receipt, StaticFileSegment,
|
StaticFileSegment,
|
||||||
};
|
};
|
||||||
use reth_storage_errors::provider::{ProviderError, ProviderResult};
|
use reth_storage_errors::provider::{ProviderError, ProviderResult};
|
||||||
use std::{
|
use std::{
|
||||||
@ -615,7 +615,8 @@ impl<N: NodePrimitives> StaticFileProviderRW<N> {
|
|||||||
pub fn append_receipts<I, R>(&mut self, receipts: I) -> ProviderResult<Option<TxNumber>>
|
pub fn append_receipts<I, R>(&mut self, receipts: I) -> ProviderResult<Option<TxNumber>>
|
||||||
where
|
where
|
||||||
I: Iterator<Item = Result<(TxNumber, R), ProviderError>>,
|
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);
|
debug_assert!(self.writer.user_header().segment() == StaticFileSegment::Receipts);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user