From 741122d4c1a62ced3e96d16d67f4eeb3a6522d99 Mon Sep 17 00:00:00 2001 From: Andrew Chow Date: Mon, 8 Jul 2019 16:25:10 -0400 Subject: [PATCH] Implement MarkUnusedAddresses in DescriptorScriptPubKeyMan --- src/wallet/scriptpubkeyman.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/wallet/scriptpubkeyman.cpp b/src/wallet/scriptpubkeyman.cpp index 88563459bc..31a87a53fe 100644 --- a/src/wallet/scriptpubkeyman.cpp +++ b/src/wallet/scriptpubkeyman.cpp @@ -1540,6 +1540,17 @@ bool DescriptorScriptPubKeyMan::TopUp(unsigned int size) void DescriptorScriptPubKeyMan::MarkUnusedAddresses(const CScript& script) { + LOCK(cs_desc_man); + if (IsMine(script)) { + int32_t index = m_map_script_pub_keys[script]; + if (index >= m_wallet_descriptor.next_index) { + WalletLogPrintf("%s: Detected a used keypool item at index %d, mark all keypool items up to this item as used\n", __func__, index); + m_wallet_descriptor.next_index = index + 1; + } + if (!TopUp()) { + WalletLogPrintf("%s: Topping up keypool failed (locked wallet)\n", __func__); + } + } } bool DescriptorScriptPubKeyMan::IsHDEnabled() const