mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
chore: typos, rm oudated todos (#2962)
This commit is contained in:
@ -341,7 +341,7 @@ impl<DB: Database, C: Consensus, EF: ExecutorFactory> BlockchainTree<DB, C, EF>
|
||||
|
||||
/// This tries to append the given block to the canonical chain.
|
||||
///
|
||||
/// WARNING: this expects that the block is part of the canonical chain: The block's parent is
|
||||
/// WARNING: this expects that the block extends the canonical chain: The block's parent is
|
||||
/// part of the canonical chain (e.g. the block's parent is the latest canonical hash). See also
|
||||
/// [Self::is_block_hash_canonical].
|
||||
#[instrument(skip_all, target = "blockchain_tree")]
|
||||
@ -357,65 +357,66 @@ impl<DB: Database, C: Consensus, EF: ExecutorFactory> BlockchainTree<DB, C, EF>
|
||||
// TODO save pending block to database
|
||||
// https://github.com/paradigmxyz/reth/issues/1713
|
||||
|
||||
let db = self.externals.database();
|
||||
let provider =
|
||||
db.provider().map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?;
|
||||
let (block_status, chain) = {
|
||||
let db = self.externals.database();
|
||||
let provider = db
|
||||
.provider()
|
||||
.map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?;
|
||||
|
||||
// Validate that the block is post merge
|
||||
let parent_td = provider
|
||||
.header_td(&block.parent_hash)
|
||||
.map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?
|
||||
.ok_or_else(|| {
|
||||
InsertBlockError::tree_error(
|
||||
BlockchainTreeError::CanonicalChain { block_hash: block.parent_hash },
|
||||
block.block.clone(),
|
||||
)
|
||||
})?;
|
||||
// Validate that the block is post merge
|
||||
let parent_td = provider
|
||||
.header_td(&block.parent_hash)
|
||||
.map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?
|
||||
.ok_or_else(|| {
|
||||
InsertBlockError::tree_error(
|
||||
BlockchainTreeError::CanonicalChain { block_hash: block.parent_hash },
|
||||
block.block.clone(),
|
||||
)
|
||||
})?;
|
||||
|
||||
// Pass the parent total difficulty to short-circuit unnecessary calculations.
|
||||
if !self.externals.chain_spec.fork(Hardfork::Paris).active_at_ttd(parent_td, U256::ZERO) {
|
||||
return Err(InsertBlockError::execution_error(
|
||||
BlockExecutionError::BlockPreMerge { hash: block.hash },
|
||||
block.block,
|
||||
))
|
||||
}
|
||||
// Pass the parent total difficulty to short-circuit unnecessary calculations.
|
||||
if !self.externals.chain_spec.fork(Hardfork::Paris).active_at_ttd(parent_td, U256::ZERO)
|
||||
{
|
||||
return Err(InsertBlockError::execution_error(
|
||||
BlockExecutionError::BlockPreMerge { hash: block.hash },
|
||||
block.block,
|
||||
))
|
||||
}
|
||||
|
||||
let parent_header = provider
|
||||
.header(&block.parent_hash)
|
||||
.map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?
|
||||
.ok_or_else(|| {
|
||||
InsertBlockError::tree_error(
|
||||
BlockchainTreeError::CanonicalChain { block_hash: block.parent_hash },
|
||||
block.block.clone(),
|
||||
)
|
||||
})?
|
||||
.seal(block.parent_hash);
|
||||
let parent_header = provider
|
||||
.header(&block.parent_hash)
|
||||
.map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?
|
||||
.ok_or_else(|| {
|
||||
InsertBlockError::tree_error(
|
||||
BlockchainTreeError::CanonicalChain { block_hash: block.parent_hash },
|
||||
block.block.clone(),
|
||||
)
|
||||
})?
|
||||
.seal(block.parent_hash);
|
||||
|
||||
let canonical_chain = self.canonical_chain();
|
||||
let canonical_chain = self.canonical_chain();
|
||||
|
||||
let (block_status, chain) = if block.parent_hash == canonical_chain.tip().hash {
|
||||
let chain = AppendableChain::new_canonical_head_fork(
|
||||
block,
|
||||
&parent_header,
|
||||
canonical_chain.inner(),
|
||||
parent,
|
||||
&self.externals,
|
||||
)?;
|
||||
(BlockStatus::Valid, chain)
|
||||
} else {
|
||||
let chain = AppendableChain::new_canonical_fork(
|
||||
block,
|
||||
&parent_header,
|
||||
canonical_chain.inner(),
|
||||
parent,
|
||||
&self.externals,
|
||||
)?;
|
||||
(BlockStatus::Accepted, chain)
|
||||
if block.parent_hash == canonical_chain.tip().hash {
|
||||
let chain = AppendableChain::new_canonical_head_fork(
|
||||
block,
|
||||
&parent_header,
|
||||
canonical_chain.inner(),
|
||||
parent,
|
||||
&self.externals,
|
||||
)?;
|
||||
(BlockStatus::Valid, chain)
|
||||
} else {
|
||||
let chain = AppendableChain::new_canonical_fork(
|
||||
block,
|
||||
&parent_header,
|
||||
canonical_chain.inner(),
|
||||
parent,
|
||||
&self.externals,
|
||||
)?;
|
||||
(BlockStatus::Accepted, chain)
|
||||
}
|
||||
};
|
||||
|
||||
// let go of `db` immutable borrow
|
||||
drop(provider);
|
||||
|
||||
self.insert_chain(chain);
|
||||
self.try_connect_buffered_blocks(block_num_hash);
|
||||
Ok(block_status)
|
||||
|
||||
@ -227,12 +227,10 @@ impl AppendableChain {
|
||||
let (block, senders) = block.into_components();
|
||||
let block = block.unseal();
|
||||
|
||||
//get state provider.
|
||||
// get the state provider.
|
||||
let db = externals.database();
|
||||
// TODO, small perf can check if caonical fork is the latest state.
|
||||
let canonical_fork = post_state_data_provider.canonical_fork();
|
||||
let history_provider = db.history_by_block_number(canonical_fork.number)?;
|
||||
let state_provider = history_provider;
|
||||
let state_provider = db.history_by_block_number(canonical_fork.number)?;
|
||||
|
||||
let provider = PostStateProvider::new(state_provider, post_state_data_provider);
|
||||
|
||||
@ -265,18 +263,16 @@ impl AppendableChain {
|
||||
C: Consensus,
|
||||
EF: ExecutorFactory,
|
||||
{
|
||||
// some checks are done before blocks comes here.
|
||||
// ensure the block is a valid descendant of the parent, according to consensus rules
|
||||
externals.consensus.validate_header_against_parent(&block, parent_block)?;
|
||||
|
||||
let (block, senders) = block.into_components();
|
||||
let block = block.unseal();
|
||||
|
||||
//get state provider.
|
||||
// get the state provider.
|
||||
let db = externals.database();
|
||||
// TODO, small perf can check if caonical fork is the latest state.
|
||||
let canonical_fork = post_state_data_provider.canonical_fork();
|
||||
let history_provider = db.history_by_block_number(canonical_fork.number)?;
|
||||
let state_provider = history_provider;
|
||||
let state_provider = db.history_by_block_number(canonical_fork.number)?;
|
||||
|
||||
let provider = PostStateProvider::new(state_provider, post_state_data_provider);
|
||||
|
||||
|
||||
@ -118,7 +118,7 @@ impl Default for Header {
|
||||
}
|
||||
|
||||
impl Header {
|
||||
/// Retuen paret block number and hash
|
||||
/// Returns the parent block's number and hash
|
||||
pub fn parent_num_hash(&self) -> BlockNumHash {
|
||||
BlockNumHash { number: self.number.saturating_sub(1), hash: self.parent_hash }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user