mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
chore: replace Compact with bincode on ETL usage of SealedHeader (#11442)
This commit is contained in:
@ -24,7 +24,7 @@ reth-evm.workspace = true
|
||||
reth-exex.workspace = true
|
||||
reth-network-p2p.workspace = true
|
||||
reth-primitives = { workspace = true, features = ["secp256k1"] }
|
||||
reth-primitives-traits.workspace = true
|
||||
reth-primitives-traits = { workspace = true, features = ["serde-bincode-compat"] }
|
||||
reth-provider.workspace = true
|
||||
reth-execution-types.workspace = true
|
||||
reth-prune.workspace = true
|
||||
@ -52,6 +52,7 @@ itertools.workspace = true
|
||||
rayon.workspace = true
|
||||
num-traits = "0.2.15"
|
||||
tempfile = { workspace = true, optional = true }
|
||||
bincode.workspace = true
|
||||
|
||||
[dev-dependencies]
|
||||
# reth
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
use alloy_primitives::{BlockHash, BlockNumber, B256};
|
||||
use alloy_primitives::{BlockHash, BlockNumber, Bytes, B256};
|
||||
use futures_util::StreamExt;
|
||||
use reth_codecs::Compact;
|
||||
use reth_config::config::EtlConfig;
|
||||
use reth_consensus::Consensus;
|
||||
use reth_db::{tables, RawKey, RawTable, RawValue};
|
||||
@ -12,6 +11,7 @@ use reth_db_api::{
|
||||
use reth_etl::Collector;
|
||||
use reth_network_p2p::headers::{downloader::HeaderDownloader, error::HeadersDownloaderError};
|
||||
use reth_primitives::{SealedHeader, StaticFileSegment};
|
||||
use reth_primitives_traits::serde_bincode_compat;
|
||||
use reth_provider::{
|
||||
providers::{StaticFileProvider, StaticFileWriter},
|
||||
BlockHashReader, DBProvider, HeaderProvider, HeaderSyncGap, HeaderSyncGapProvider,
|
||||
@ -54,8 +54,8 @@ pub struct HeaderStage<Provider, Downloader: HeaderDownloader> {
|
||||
sync_gap: Option<HeaderSyncGap>,
|
||||
/// ETL collector with `HeaderHash` -> `BlockNumber`
|
||||
hash_collector: Collector<BlockHash, BlockNumber>,
|
||||
/// ETL collector with `BlockNumber` -> `SealedHeader`
|
||||
header_collector: Collector<BlockNumber, SealedHeader>,
|
||||
/// ETL collector with `BlockNumber` -> `BincodeSealedHeader`
|
||||
header_collector: Collector<BlockNumber, Bytes>,
|
||||
/// Returns true if the ETL collector has all necessary headers to fill the gap.
|
||||
is_etl_ready: bool,
|
||||
}
|
||||
@ -121,7 +121,11 @@ where
|
||||
info!(target: "sync::stages::headers", progress = %format!("{:.2}%", (index as f64 / total_headers as f64) * 100.0), "Writing headers");
|
||||
}
|
||||
|
||||
let (sealed_header, _) = SealedHeader::from_compact(&header_buf, header_buf.len());
|
||||
let sealed_header: SealedHeader =
|
||||
bincode::deserialize::<serde_bincode_compat::SealedHeader<'_>>(&header_buf)
|
||||
.map_err(|err| StageError::Fatal(Box::new(err)))?
|
||||
.into();
|
||||
|
||||
let (header, header_hash) = sealed_header.split();
|
||||
if header.number == 0 {
|
||||
continue
|
||||
@ -240,7 +244,15 @@ where
|
||||
let header_number = header.number;
|
||||
|
||||
self.hash_collector.insert(header.hash(), header_number)?;
|
||||
self.header_collector.insert(header_number, header)?;
|
||||
self.header_collector.insert(
|
||||
header_number,
|
||||
Bytes::from(
|
||||
bincode::serialize(&serde_bincode_compat::SealedHeader::from(
|
||||
&header,
|
||||
))
|
||||
.map_err(|err| StageError::Fatal(Box::new(err)))?,
|
||||
),
|
||||
)?;
|
||||
|
||||
// Headers are downloaded in reverse, so if we reach here, we know we have
|
||||
// filled the gap.
|
||||
|
||||
Reference in New Issue
Block a user