diff --git a/src/wallet/scriptpubkeyman.cpp b/src/wallet/scriptpubkeyman.cpp --- a/src/wallet/scriptpubkeyman.cpp +++ b/src/wallet/scriptpubkeyman.cpp @@ -1557,7 +1557,22 @@ return false; } -void DescriptorScriptPubKeyMan::MarkUnusedAddresses(const CScript &script) {} +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 { return false;