mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
chore: replaces tx.get::<Table> with provider methods (#3189)
This commit is contained in:
@ -26,7 +26,7 @@ use reth_interfaces::{
|
||||
use reth_network::NetworkHandle;
|
||||
use reth_network_api::NetworkInfo;
|
||||
use reth_primitives::{stage::StageId, BlockHashOrNumber, BlockNumber, ChainSpec, H256};
|
||||
use reth_provider::{providers::get_stage_checkpoint, ProviderFactory};
|
||||
use reth_provider::{ProviderFactory, StageCheckpointProvider};
|
||||
use reth_staged_sync::utils::init::{init_db, init_genesis};
|
||||
use reth_stages::{
|
||||
sets::DefaultStages,
|
||||
@ -242,15 +242,17 @@ impl Command {
|
||||
ctx.task_executor
|
||||
.spawn_critical("events task", events::handle_events(Some(network.clone()), events));
|
||||
|
||||
let factory = ProviderFactory::new(&db, self.chain.clone());
|
||||
let provider = factory.provider().map_err(PipelineError::Interface)?;
|
||||
|
||||
let latest_block_number =
|
||||
get_stage_checkpoint(&db.tx()?, StageId::Finish)?.unwrap_or_default().block_number;
|
||||
provider.get_stage_checkpoint(StageId::Finish)?.unwrap_or_default().block_number;
|
||||
if latest_block_number >= self.to {
|
||||
info!(target: "reth::cli", latest = latest_block_number, "Nothing to run");
|
||||
return Ok(())
|
||||
}
|
||||
|
||||
let mut current_max_block = latest_block_number;
|
||||
let factory = ProviderFactory::new(&db, self.chain.clone());
|
||||
|
||||
while current_max_block < self.to {
|
||||
let next_block = current_max_block + 1;
|
||||
|
||||
@ -9,7 +9,7 @@ use reth_primitives::{
|
||||
stage::{StageCheckpoint, StageId},
|
||||
ChainSpec,
|
||||
};
|
||||
use reth_provider::ProviderFactory;
|
||||
use reth_provider::{ProviderFactory, StageCheckpointProvider};
|
||||
use reth_staged_sync::utils::init::init_db;
|
||||
use reth_stages::{
|
||||
stages::{
|
||||
|
||||
@ -23,8 +23,6 @@ use reth_config::Config;
|
||||
use reth_db::{
|
||||
database::Database,
|
||||
mdbx::{Env, WriteMap},
|
||||
tables,
|
||||
transaction::DbTx,
|
||||
};
|
||||
use reth_discv4::DEFAULT_DISCOVERY_PORT;
|
||||
use reth_downloaders::{
|
||||
@ -41,12 +39,10 @@ use reth_interfaces::{
|
||||
};
|
||||
use reth_network::{error::NetworkError, NetworkConfig, NetworkHandle, NetworkManager};
|
||||
use reth_network_api::NetworkInfo;
|
||||
use reth_primitives::{
|
||||
stage::StageId, BlockHashOrNumber, ChainSpec, Head, Header, SealedHeader, H256,
|
||||
};
|
||||
use reth_primitives::{stage::StageId, BlockHashOrNumber, ChainSpec, Head, SealedHeader, H256};
|
||||
use reth_provider::{
|
||||
providers::get_stage_checkpoint, BlockProvider, CanonStateSubscriptions, HeaderProvider,
|
||||
ProviderFactory,
|
||||
BlockHashProvider, BlockProvider, CanonStateSubscriptions, HeaderProvider, ProviderFactory,
|
||||
StageCheckpointProvider,
|
||||
};
|
||||
use reth_revm::Factory;
|
||||
use reth_revm_inspectors::stack::Hook;
|
||||
@ -509,30 +505,31 @@ impl Command {
|
||||
Ok(handle)
|
||||
}
|
||||
|
||||
fn lookup_head(
|
||||
&self,
|
||||
db: Arc<Env<WriteMap>>,
|
||||
) -> Result<Head, reth_interfaces::db::DatabaseError> {
|
||||
db.view(|tx| {
|
||||
let head = get_stage_checkpoint(tx, StageId::Finish)?.unwrap_or_default().block_number;
|
||||
let header = tx
|
||||
.get::<tables::Headers>(head)?
|
||||
.expect("the header for the latest block is missing, database is corrupt");
|
||||
let total_difficulty = tx.get::<tables::HeaderTD>(head)?.expect(
|
||||
"the total difficulty for the latest block is missing, database is corrupt",
|
||||
);
|
||||
let hash = tx
|
||||
.get::<tables::CanonicalHeaders>(head)?
|
||||
.expect("the hash for the latest block is missing, database is corrupt");
|
||||
Ok::<Head, reth_interfaces::db::DatabaseError>(Head {
|
||||
number: head,
|
||||
hash,
|
||||
difficulty: header.difficulty,
|
||||
total_difficulty: total_difficulty.into(),
|
||||
timestamp: header.timestamp,
|
||||
})
|
||||
})?
|
||||
.map_err(Into::into)
|
||||
fn lookup_head(&self, db: Arc<Env<WriteMap>>) -> Result<Head, reth_interfaces::Error> {
|
||||
let factory = ProviderFactory::new(db, self.chain.clone());
|
||||
let provider = factory.provider()?;
|
||||
|
||||
let head = provider.get_stage_checkpoint(StageId::Finish)?.unwrap_or_default().block_number;
|
||||
|
||||
let header = provider
|
||||
.header_by_number(head)?
|
||||
.expect("the header for the latest block is missing, database is corrupt");
|
||||
|
||||
let total_difficulty = provider
|
||||
.header_td_by_number(head)?
|
||||
.expect("the total difficulty for the latest block is missing, database is corrupt");
|
||||
|
||||
let hash = provider
|
||||
.block_hash(head)?
|
||||
.expect("the hash for the latest block is missing, database is corrupt");
|
||||
|
||||
Ok(Head {
|
||||
number: head,
|
||||
hash,
|
||||
difficulty: header.difficulty,
|
||||
total_difficulty,
|
||||
timestamp: header.timestamp,
|
||||
})
|
||||
}
|
||||
|
||||
/// Attempt to look up the block number for the tip hash in the database.
|
||||
@ -565,13 +562,10 @@ impl Command {
|
||||
DB: Database,
|
||||
Client: HeadersClient,
|
||||
{
|
||||
let header = db.view(|tx| -> Result<Option<Header>, reth_db::DatabaseError> {
|
||||
let number = match tip {
|
||||
BlockHashOrNumber::Hash(hash) => tx.get::<tables::HeaderNumbers>(hash)?,
|
||||
BlockHashOrNumber::Number(number) => Some(number),
|
||||
};
|
||||
Ok(number.map(|number| tx.get::<tables::Headers>(number)).transpose()?.flatten())
|
||||
})??;
|
||||
let factory = ProviderFactory::new(db, self.chain.clone());
|
||||
let provider = factory.provider()?;
|
||||
|
||||
let header = provider.header_by_hash_or_number(tip)?;
|
||||
|
||||
// try to look up the header in the database
|
||||
if let Some(header) = header {
|
||||
|
||||
@ -12,7 +12,7 @@ use reth_beacon_consensus::BeaconConsensus;
|
||||
use reth_config::Config;
|
||||
use reth_downloaders::bodies::bodies::BodiesDownloaderBuilder;
|
||||
use reth_primitives::ChainSpec;
|
||||
use reth_provider::{providers::get_stage_checkpoint, ProviderFactory};
|
||||
use reth_provider::{ProviderFactory, StageCheckpointProvider};
|
||||
use reth_staged_sync::utils::init::init_db;
|
||||
use reth_stages::{
|
||||
stages::{
|
||||
@ -215,8 +215,7 @@ impl Command {
|
||||
assert!(exec_stage.type_id() == unwind_stage.type_id());
|
||||
}
|
||||
|
||||
let checkpoint =
|
||||
get_stage_checkpoint(provider_rw.tx_ref(), exec_stage.id())?.unwrap_or_default();
|
||||
let checkpoint = provider_rw.get_stage_checkpoint(exec_stage.id())?.unwrap_or_default();
|
||||
|
||||
let unwind_stage = unwind_stage.as_mut().unwrap_or(&mut exec_stage);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user