mirror of https://github.com/bitcoin/bitcoin.git
Merge bitcoin/bitcoin#33169: interfaces, chain, refactor: Remove unused getTipLocator and incaccurate getActiveChainLocator
2b00030af8
interfaces, chain, refactor: Remove inaccurate getActiveChainLocator (pablomartin4btc)110a0f405c
interfaces, chain, refactor: Remove unused getTipLocator (pablomartin4btc) Pull request description: Remove `Chain::getTipLocator`, `Chain::GetLocator()`, and `Chain::getActiveChainLocator`: - `Chain::getTipLocator` is no longer used. - `Chain::GetLocator`, replaced its call by `GetLocator()`, which uses `LocatorEntries`, avoiding direct access to the chain itself (change suggested by l0rinc while reviewing this PR to maintain consistency with the overall refactoring). - `Chain::getActiveChainLocator`, whose name was misleading, has functionality redundant with Chain::findBlock. - Additionally, the comment for getActiveChainLocator became inaccurate following changes in commited470940cd
(from PR #25717). This is a [follow-up](https://github.com/bitcoin/bitcoin/pull/29652#issuecomment-3151665095) to #29652. ACKs for top commit: achow101: ACK2b00030af8
furszy: ACK2b00030af8
stickies-v: ACK2b00030af8
w0xlt: ACK2b00030af8
Tree-SHA512: b12ba6a15feeaeec692d69204a6e155e3af43edfac25597dabf14cacca1e4a2152574816e58dc544f39043c5721f5e707acf544f4541d3b9c0f8c0c40069215e
This commit is contained in:
commit
8405fdb06e
|
@ -52,11 +52,6 @@ CBlockLocator GetLocator(const CBlockIndex* index)
|
|||
return CBlockLocator{LocatorEntries(index)};
|
||||
}
|
||||
|
||||
CBlockLocator CChain::GetLocator() const
|
||||
{
|
||||
return ::GetLocator(Tip());
|
||||
}
|
||||
|
||||
const CBlockIndex *CChain::FindFork(const CBlockIndex *pindex) const {
|
||||
if (pindex == nullptr) {
|
||||
return nullptr;
|
||||
|
|
|
@ -467,9 +467,6 @@ public:
|
|||
/** Set/initialize a chain with a given tip. */
|
||||
void SetTip(CBlockIndex& block);
|
||||
|
||||
/** Return a CBlockLocator that refers to the tip in of this chain. */
|
||||
CBlockLocator GetLocator() const;
|
||||
|
||||
/** Find the last common block between this chain and a block index entry. */
|
||||
const CBlockIndex* FindFork(const CBlockIndex* pindex) const;
|
||||
|
||||
|
|
|
@ -143,13 +143,6 @@ public:
|
|||
//! pruned), and contains transactions.
|
||||
virtual bool haveBlockOnDisk(int height) = 0;
|
||||
|
||||
//! Get locator for the current chain tip.
|
||||
virtual CBlockLocator getTipLocator() = 0;
|
||||
|
||||
//! Return a locator that refers to a block in the active chain.
|
||||
//! If specified block is not in the active chain, return locator for the latest ancestor that is in the chain.
|
||||
virtual CBlockLocator getActiveChainLocator(const uint256& block_hash) = 0;
|
||||
|
||||
//! Return height of the highest block on chain in common with the locator,
|
||||
//! which will either be the original block used to create the locator,
|
||||
//! or one of its ancestors.
|
||||
|
|
|
@ -559,17 +559,6 @@ public:
|
|||
const CBlockIndex* block{chainman().ActiveChain()[height]};
|
||||
return block && ((block->nStatus & BLOCK_HAVE_DATA) != 0) && block->nTx > 0;
|
||||
}
|
||||
CBlockLocator getTipLocator() override
|
||||
{
|
||||
LOCK(::cs_main);
|
||||
return chainman().ActiveChain().GetLocator();
|
||||
}
|
||||
CBlockLocator getActiveChainLocator(const uint256& block_hash) override
|
||||
{
|
||||
LOCK(::cs_main);
|
||||
const CBlockIndex* index = chainman().m_blockman.LookupBlockIndex(block_hash);
|
||||
return GetLocator(index);
|
||||
}
|
||||
std::optional<int> findLocatorFork(const CBlockLocator& locator) override
|
||||
{
|
||||
LOCK(::cs_main);
|
||||
|
|
|
@ -2897,7 +2897,7 @@ bool Chainstate::FlushStateToDisk(
|
|||
}
|
||||
if (full_flush_completed && m_chainman.m_options.signals) {
|
||||
// Update best block in wallet (so we can detect restored wallets).
|
||||
m_chainman.m_options.signals->ChainStateFlushed(this->GetRole(), m_chain.GetLocator());
|
||||
m_chainman.m_options.signals->ChainStateFlushed(this->GetRole(), GetLocator(m_chain.Tip()));
|
||||
}
|
||||
} catch (const std::runtime_error& e) {
|
||||
return FatalError(m_chainman.GetNotifications(), state, strprintf(_("System error while flushing: %s"), e.what()));
|
||||
|
|
|
@ -1837,9 +1837,13 @@ CWallet::ScanResult CWallet::ScanForWalletTransactions(const uint256& start_bloc
|
|||
chain().findBlock(block_hash, FoundBlock().inActiveChain(block_still_active).nextBlock(FoundBlock().inActiveChain(next_block).hash(next_block_hash)));
|
||||
|
||||
if (fetch_block) {
|
||||
// Read block data
|
||||
// Read block data and locator if needed (the locator is usually null unless we need to save progress)
|
||||
CBlock block;
|
||||
chain().findBlock(block_hash, FoundBlock().data(block));
|
||||
CBlockLocator loc;
|
||||
// Find block
|
||||
FoundBlock found_block{FoundBlock().data(block)};
|
||||
if (save_progress && next_interval) found_block.locator(loc);
|
||||
chain().findBlock(block_hash, found_block);
|
||||
|
||||
if (!block.IsNull()) {
|
||||
LOCK(cs_wallet);
|
||||
|
@ -1857,15 +1861,11 @@ CWallet::ScanResult CWallet::ScanForWalletTransactions(const uint256& start_bloc
|
|||
result.last_scanned_block = block_hash;
|
||||
result.last_scanned_height = block_height;
|
||||
|
||||
if (save_progress && next_interval) {
|
||||
CBlockLocator loc = m_chain->getActiveChainLocator(block_hash);
|
||||
|
||||
if (!loc.IsNull()) {
|
||||
WalletLogPrintf("Saving scan progress %d.\n", block_height);
|
||||
WalletBatch batch(GetDatabase());
|
||||
batch.WriteBestBlock(loc);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// could not scan block, keep scanning but record this block as the most recent failure
|
||||
result.last_failed_block = block_hash;
|
||||
|
|
Loading…
Reference in New Issue