mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-05 11:28:49 +02:00
refactor: Get rid of more redundant chain methods
This just drops three interfaces::Chain methods replacing them with other calls. Motivation for removing these chain methods: - Need to get rid of findFirstBlockWithTimeAndHeight for #10102, which doesn't support overloaded methods - Followup from https://github.com/bitcoin/bitcoin/pull/16426#discussion_r412487403 - phantomcircuit comments about findNextBlock test http://www.erisian.com.au/bitcoin-core-dev/log-2020-06-06.html#l-214 Behavior is not changing in any way here. A TODO comment in ScanForWalletTransactions was removed, but just because it was invalid (see https://github.com/bitcoin/bitcoin/pull/19195#discussion_r448020762), not because it was implemented.
This commit is contained in:
@@ -44,6 +44,10 @@ public:
|
||||
FoundBlock& time(int64_t& time) { m_time = &time; return *this; }
|
||||
FoundBlock& maxTime(int64_t& max_time) { m_max_time = &max_time; return *this; }
|
||||
FoundBlock& mtpTime(int64_t& mtp_time) { m_mtp_time = &mtp_time; return *this; }
|
||||
//! Return whether block is in the active (most-work) chain.
|
||||
FoundBlock& inActiveChain(bool& in_active_chain) { m_in_active_chain = &in_active_chain; return *this; }
|
||||
//! Return next block in the active chain if current block is in the active chain.
|
||||
FoundBlock& nextBlock(const FoundBlock& next_block) { m_next_block = &next_block; return *this; }
|
||||
//! Read block data from disk. If the block exists but doesn't have data
|
||||
//! (for example due to pruning), the CBlock variable will be set to null.
|
||||
FoundBlock& data(CBlock& data) { m_data = &data; return *this; }
|
||||
@@ -53,6 +57,8 @@ public:
|
||||
int64_t* m_time = nullptr;
|
||||
int64_t* m_max_time = nullptr;
|
||||
int64_t* m_mtp_time = nullptr;
|
||||
bool* m_in_active_chain = nullptr;
|
||||
const FoundBlock* m_next_block = nullptr;
|
||||
CBlock* m_data = nullptr;
|
||||
};
|
||||
|
||||
@@ -77,9 +83,9 @@ public:
|
||||
//! wallet cache it, fee estimation being driven by node mempool, wallet
|
||||
//! should be the consumer.
|
||||
//!
|
||||
//! * The `guessVerificationProgress`, `getBlockHeight`, `getBlockHash`, etc
|
||||
//! methods can go away if rescan logic is moved on the node side, and wallet
|
||||
//! only register rescan request.
|
||||
//! * `guessVerificationProgress` and similar methods can go away if rescan
|
||||
//! logic moves out of the wallet, and the wallet just requests scans from the
|
||||
//! node (https://github.com/bitcoin/bitcoin/issues/11756)
|
||||
class Chain
|
||||
{
|
||||
public:
|
||||
@@ -90,11 +96,6 @@ public:
|
||||
//! any blocks)
|
||||
virtual Optional<int> getHeight() = 0;
|
||||
|
||||
//! Get block height above genesis block. Returns 0 for genesis block,
|
||||
//! 1 for following block, and so on. Returns nullopt for a block not
|
||||
//! included in the current chain.
|
||||
virtual Optional<int> getBlockHeight(const uint256& hash) = 0;
|
||||
|
||||
//! Get block hash. Height must be valid or this function will abort.
|
||||
virtual uint256 getBlockHash(int height) = 0;
|
||||
|
||||
@@ -102,13 +103,6 @@ public:
|
||||
//! pruned), and contains transactions.
|
||||
virtual bool haveBlockOnDisk(int height) = 0;
|
||||
|
||||
//! Return height of the first block in the chain with timestamp equal
|
||||
//! or greater than the given time and height equal or greater than the
|
||||
//! given height, or nullopt if there is no block with a high enough
|
||||
//! timestamp and height. Also return the block hash as an optional output parameter
|
||||
//! (to avoid the cost of a second lookup in case this information is needed.)
|
||||
virtual Optional<int> findFirstBlockWithTimeAndHeight(int64_t time, int height, uint256* hash) = 0;
|
||||
|
||||
//! Get locator for the current chain tip.
|
||||
virtual CBlockLocator getTipLocator() = 0;
|
||||
|
||||
@@ -130,11 +124,6 @@ public:
|
||||
//! information.
|
||||
virtual bool findFirstBlockWithTimeAndHeight(int64_t min_time, int min_height, const FoundBlock& block={}) = 0;
|
||||
|
||||
//! Find next block if block is part of current chain. Also flag if
|
||||
//! there was a reorg and the specified block hash is no longer in the
|
||||
//! current chain, and optionally return block information.
|
||||
virtual bool findNextBlock(const uint256& block_hash, int block_height, const FoundBlock& next={}, bool* reorg=nullptr) = 0;
|
||||
|
||||
//! Find ancestor of block at specified height and optionally return
|
||||
//! ancestor information.
|
||||
virtual bool findAncestorByHeight(const uint256& block_hash, int ancestor_height, const FoundBlock& ancestor_out={}) = 0;
|
||||
|
||||
Reference in New Issue
Block a user