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.
|
/// 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
|
/// part of the canonical chain (e.g. the block's parent is the latest canonical hash). See also
|
||||||
/// [Self::is_block_hash_canonical].
|
/// [Self::is_block_hash_canonical].
|
||||||
#[instrument(skip_all, target = "blockchain_tree")]
|
#[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
|
// TODO save pending block to database
|
||||||
// https://github.com/paradigmxyz/reth/issues/1713
|
// https://github.com/paradigmxyz/reth/issues/1713
|
||||||
|
|
||||||
let db = self.externals.database();
|
let (block_status, chain) = {
|
||||||
let provider =
|
let db = self.externals.database();
|
||||||
db.provider().map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?;
|
let provider = db
|
||||||
|
.provider()
|
||||||
|
.map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?;
|
||||||
|
|
||||||
// Validate that the block is post merge
|
// Validate that the block is post merge
|
||||||
let parent_td = provider
|
let parent_td = provider
|
||||||
.header_td(&block.parent_hash)
|
.header_td(&block.parent_hash)
|
||||||
.map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?
|
.map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
InsertBlockError::tree_error(
|
InsertBlockError::tree_error(
|
||||||
BlockchainTreeError::CanonicalChain { block_hash: block.parent_hash },
|
BlockchainTreeError::CanonicalChain { block_hash: block.parent_hash },
|
||||||
block.block.clone(),
|
block.block.clone(),
|
||||||
)
|
)
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
// Pass the parent total difficulty to short-circuit unnecessary calculations.
|
// 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) {
|
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 },
|
return Err(InsertBlockError::execution_error(
|
||||||
block.block,
|
BlockExecutionError::BlockPreMerge { hash: block.hash },
|
||||||
))
|
block.block,
|
||||||
}
|
))
|
||||||
|
}
|
||||||
|
|
||||||
let parent_header = provider
|
let parent_header = provider
|
||||||
.header(&block.parent_hash)
|
.header(&block.parent_hash)
|
||||||
.map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?
|
.map_err(|err| InsertBlockError::new(block.block.clone(), err.into()))?
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
InsertBlockError::tree_error(
|
InsertBlockError::tree_error(
|
||||||
BlockchainTreeError::CanonicalChain { block_hash: block.parent_hash },
|
BlockchainTreeError::CanonicalChain { block_hash: block.parent_hash },
|
||||||
block.block.clone(),
|
block.block.clone(),
|
||||||
)
|
)
|
||||||
})?
|
})?
|
||||||
.seal(block.parent_hash);
|
.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 {
|
if block.parent_hash == canonical_chain.tip().hash {
|
||||||
let chain = AppendableChain::new_canonical_head_fork(
|
let chain = AppendableChain::new_canonical_head_fork(
|
||||||
block,
|
block,
|
||||||
&parent_header,
|
&parent_header,
|
||||||
canonical_chain.inner(),
|
canonical_chain.inner(),
|
||||||
parent,
|
parent,
|
||||||
&self.externals,
|
&self.externals,
|
||||||
)?;
|
)?;
|
||||||
(BlockStatus::Valid, chain)
|
(BlockStatus::Valid, chain)
|
||||||
} else {
|
} else {
|
||||||
let chain = AppendableChain::new_canonical_fork(
|
let chain = AppendableChain::new_canonical_fork(
|
||||||
block,
|
block,
|
||||||
&parent_header,
|
&parent_header,
|
||||||
canonical_chain.inner(),
|
canonical_chain.inner(),
|
||||||
parent,
|
parent,
|
||||||
&self.externals,
|
&self.externals,
|
||||||
)?;
|
)?;
|
||||||
(BlockStatus::Accepted, chain)
|
(BlockStatus::Accepted, chain)
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// let go of `db` immutable borrow
|
|
||||||
drop(provider);
|
|
||||||
|
|
||||||
self.insert_chain(chain);
|
self.insert_chain(chain);
|
||||||
self.try_connect_buffered_blocks(block_num_hash);
|
self.try_connect_buffered_blocks(block_num_hash);
|
||||||
Ok(block_status)
|
Ok(block_status)
|
||||||
|
|||||||
@ -227,12 +227,10 @@ impl AppendableChain {
|
|||||||
let (block, senders) = block.into_components();
|
let (block, senders) = block.into_components();
|
||||||
let block = block.unseal();
|
let block = block.unseal();
|
||||||
|
|
||||||
//get state provider.
|
// get the state provider.
|
||||||
let db = externals.database();
|
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 canonical_fork = post_state_data_provider.canonical_fork();
|
||||||
let history_provider = db.history_by_block_number(canonical_fork.number)?;
|
let state_provider = db.history_by_block_number(canonical_fork.number)?;
|
||||||
let state_provider = history_provider;
|
|
||||||
|
|
||||||
let provider = PostStateProvider::new(state_provider, post_state_data_provider);
|
let provider = PostStateProvider::new(state_provider, post_state_data_provider);
|
||||||
|
|
||||||
@ -265,18 +263,16 @@ impl AppendableChain {
|
|||||||
C: Consensus,
|
C: Consensus,
|
||||||
EF: ExecutorFactory,
|
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)?;
|
externals.consensus.validate_header_against_parent(&block, parent_block)?;
|
||||||
|
|
||||||
let (block, senders) = block.into_components();
|
let (block, senders) = block.into_components();
|
||||||
let block = block.unseal();
|
let block = block.unseal();
|
||||||
|
|
||||||
//get state provider.
|
// get the state provider.
|
||||||
let db = externals.database();
|
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 canonical_fork = post_state_data_provider.canonical_fork();
|
||||||
let history_provider = db.history_by_block_number(canonical_fork.number)?;
|
let state_provider = db.history_by_block_number(canonical_fork.number)?;
|
||||||
let state_provider = history_provider;
|
|
||||||
|
|
||||||
let provider = PostStateProvider::new(state_provider, post_state_data_provider);
|
let provider = PostStateProvider::new(state_provider, post_state_data_provider);
|
||||||
|
|
||||||
|
|||||||
@ -118,7 +118,7 @@ impl Default for Header {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Header {
|
impl Header {
|
||||||
/// Retuen paret block number and hash
|
/// Returns the parent block's number and hash
|
||||||
pub fn parent_num_hash(&self) -> BlockNumHash {
|
pub fn parent_num_hash(&self) -> BlockNumHash {
|
||||||
BlockNumHash { number: self.number.saturating_sub(1), hash: self.parent_hash }
|
BlockNumHash { number: self.number.saturating_sub(1), hash: self.parent_hash }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user