aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces
diff options
context:
space:
mode:
authorfurszy <matiasfurszyfer@protonmail.com>2023-04-13 22:14:41 -0300
committerfurszy <matiasfurszyfer@protonmail.com>2023-05-25 10:45:38 -0300
commit82bb7831fa6052620998c7eef47e48ed594248a8 (patch)
tree795a6b327be267d595b89fd07900104d6ffc7b71 /src/interfaces
parenta082434d122754ec1a10e0e08a35bdb1f47989e6 (diff)
downloadbitcoin-82bb7831fa6052620998c7eef47e48ed594248a8.tar.xz
wallet: skip block scan if block was created before wallet birthday
To avoid wasting processing power, we can skip blocks that occurred before the wallet's creation time, since these blocks are guaranteed not to contain any relevant wallet data. This has direct implications (an speed improvement) on the underlying blockchain synchronization process as well. The reason is that the validation interface queue is limited to 10 tasks per time. This means that no more than 10 blocks can be waiting for the wallet(s) to be processed while we are synchronizing the chain (activating the best chain to be more precise). Which can be a bottleneck if blocks arrive and are processed faster from the network than what they are processed by the wallet(s).
Diffstat (limited to 'src/interfaces')
-rw-r--r--src/interfaces/chain.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/interfaces/chain.h b/src/interfaces/chain.h
index a3fa753a98..40bf0b680c 100644
--- a/src/interfaces/chain.h
+++ b/src/interfaces/chain.h
@@ -87,6 +87,9 @@ struct BlockInfo {
unsigned data_pos = 0;
const CBlock* data = nullptr;
const CBlockUndo* undo_data = nullptr;
+ // The maximum time in the chain up to and including this block.
+ // A timestamp that can only move forward.
+ unsigned int chain_time_max{0};
BlockInfo(const uint256& hash LIFETIMEBOUND) : hash(hash) {}
};