mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-02-04 06:12:07 +01:00
Merge bitcoin/bitcoin#32596: wallet, rpc, doc: various legacy wallet removal cleanups in RPCs
e5cbea416brpc: doc: remove redundant "descriptors" parameter in `createwallet` examples (Sebastian Falbesoner)7a05f941bbrpc: doc: drop descriptor wallet mentions in fast wallet rescan related RPCs (Sebastian Falbesoner)db465a50e2wallet, rpc: remove obsolete "keypoololdest" result field/code (Sebastian Falbesoner) Pull request description: This PR contains a few smaller wallet RPC cleanups based on that we only ever operate on descriptor wallets now: * remove the now obsolete "keypoololdest" field from the `getwalletinfo` RPC and the corresponding CWallet/ScriptPubKeyMan methods * in RPCs where potential fast wallet rescan is documented, remove the "descriptor wallet" mentions (back then introduced in commitca48a4694f, PR #25957) * for the `createwallet` RPC examples, remove the "descriptors" parameters that always have to be true now (proposed in https://github.com/bitcoin/bitcoin/pull/31250#discussion_r2042020967; corresponds to86de8c1668, PR #32544 which did the same for functional tests) ACKs for top commit: achow101: ACKe5cbea416b1440000bytes: ACKe5cbea416brkrux: ACKe5cbea416bTree-SHA512: d785f621af3f3987b258e5d7fb8309344fb13c2cf41855f8adf99ff89f581142db36e3ba59919d6abf82662caa3f7e4a2bd38eba1be9e23665e6a4a23ee52acd
This commit is contained in:
@@ -611,8 +611,8 @@ RPCHelpMan restorewallet()
|
||||
return RPCHelpMan{
|
||||
"restorewallet",
|
||||
"Restores and loads a wallet from backup.\n"
|
||||
"\nThe rescan is significantly faster if a descriptor wallet is restored"
|
||||
"\nand block filters are available (using startup option \"-blockfilterindex=1\").\n",
|
||||
"\nThe rescan is significantly faster if block filters are available"
|
||||
"\n(using startup option \"-blockfilterindex=1\").\n",
|
||||
{
|
||||
{"wallet_name", RPCArg::Type::STR, RPCArg::Optional::NO, "The name that will be applied to the restored wallet"},
|
||||
{"backup_file", RPCArg::Type::STR, RPCArg::Optional::NO, "The backup file that will be used to restore the wallet."},
|
||||
|
||||
@@ -857,8 +857,8 @@ RPCHelpMan rescanblockchain()
|
||||
"rescanblockchain",
|
||||
"Rescan the local blockchain for wallet related transactions.\n"
|
||||
"Note: Use \"getwalletinfo\" to query the scanning progress.\n"
|
||||
"The rescan is significantly faster when used on a descriptor wallet\n"
|
||||
"and block filters are available (using startup option \"-blockfilterindex=1\").\n",
|
||||
"The rescan is significantly faster if block filters are available\n"
|
||||
"(using startup option \"-blockfilterindex=1\").\n",
|
||||
{
|
||||
{"start_height", RPCArg::Type::NUM, RPCArg::Default{0}, "block height where the rescan should start"},
|
||||
{"stop_height", RPCArg::Type::NUM, RPCArg::Optional::OMITTED, "the last block height that should be scanned. If none is provided it will rescan up to the tip at return time of this call."},
|
||||
|
||||
@@ -46,7 +46,6 @@ static RPCHelpMan getwalletinfo()
|
||||
{RPCResult::Type::STR_AMOUNT, "unconfirmed_balance", "DEPRECATED. Identical to getbalances().mine.untrusted_pending"},
|
||||
{RPCResult::Type::STR_AMOUNT, "immature_balance", "DEPRECATED. Identical to getbalances().mine.immature"},
|
||||
{RPCResult::Type::NUM, "txcount", "the total number of transactions in the wallet"},
|
||||
{RPCResult::Type::NUM_TIME, "keypoololdest", /*optional=*/true, "the " + UNIX_EPOCH_TIME + " of the oldest pre-generated key in the key pool. Legacy wallets only."},
|
||||
{RPCResult::Type::NUM, "keypoolsize", "how many new keys are pre-generated (only counts external keys)"},
|
||||
{RPCResult::Type::NUM, "keypoolsize_hd_internal", /*optional=*/true, "how many new keys are pre-generated for internal use (used for change outputs, only appears if the wallet is using this feature, otherwise external keys are used)"},
|
||||
{RPCResult::Type::NUM_TIME, "unlocked_until", /*optional=*/true, "the " + UNIX_EPOCH_TIME + " until which the wallet is unlocked for transfers, or 0 if the wallet is locked (only present for passphrase-encrypted wallets)"},
|
||||
@@ -91,10 +90,6 @@ static RPCHelpMan getwalletinfo()
|
||||
obj.pushKV("unconfirmed_balance", ValueFromAmount(bal.m_mine_untrusted_pending));
|
||||
obj.pushKV("immature_balance", ValueFromAmount(bal.m_mine_immature));
|
||||
obj.pushKV("txcount", (int)pwallet->mapWallet.size());
|
||||
const auto kp_oldest = pwallet->GetOldestKeyPoolTime();
|
||||
if (kp_oldest.has_value()) {
|
||||
obj.pushKV("keypoololdest", kp_oldest.value());
|
||||
}
|
||||
obj.pushKV("keypoolsize", (int64_t)kpExternalSize);
|
||||
|
||||
if (pwallet->CanSupportFeature(FEATURE_HD_SPLIT)) {
|
||||
@@ -356,8 +351,8 @@ static RPCHelpMan createwallet()
|
||||
RPCExamples{
|
||||
HelpExampleCli("createwallet", "\"testwallet\"")
|
||||
+ HelpExampleRpc("createwallet", "\"testwallet\"")
|
||||
+ HelpExampleCliNamed("createwallet", {{"wallet_name", "descriptors"}, {"avoid_reuse", true}, {"descriptors", true}, {"load_on_startup", true}})
|
||||
+ HelpExampleRpcNamed("createwallet", {{"wallet_name", "descriptors"}, {"avoid_reuse", true}, {"descriptors", true}, {"load_on_startup", true}})
|
||||
+ HelpExampleCliNamed("createwallet", {{"wallet_name", "descriptors"}, {"avoid_reuse", true}, {"load_on_startup", true}})
|
||||
+ HelpExampleRpcNamed("createwallet", {{"wallet_name", "descriptors"}, {"avoid_reuse", true}, {"load_on_startup", true}})
|
||||
},
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
|
||||
@@ -1189,13 +1189,6 @@ bool DescriptorScriptPubKeyMan::HaveCryptedKeys() const
|
||||
return !m_map_crypted_keys.empty();
|
||||
}
|
||||
|
||||
std::optional<int64_t> DescriptorScriptPubKeyMan::GetOldestKeyPoolTime() const
|
||||
{
|
||||
// This is only used for getwalletinfo output and isn't relevant to descriptor wallets.
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
|
||||
unsigned int DescriptorScriptPubKeyMan::GetKeyPoolSize() const
|
||||
{
|
||||
LOCK(cs_desc_man);
|
||||
|
||||
@@ -133,8 +133,6 @@ public:
|
||||
//! The action to do when the DB needs rewrite
|
||||
virtual void RewriteDB() {}
|
||||
|
||||
virtual std::optional<int64_t> GetOldestKeyPoolTime() const { return GetTime(); }
|
||||
|
||||
virtual unsigned int GetKeyPoolSize() const { return 0; }
|
||||
|
||||
virtual int64_t GetTimeFirstKey() const { return 0; }
|
||||
@@ -364,7 +362,6 @@ public:
|
||||
std::optional<CKey> GetKey(const CKeyID& keyid) const EXCLUSIVE_LOCKS_REQUIRED(cs_desc_man);
|
||||
bool HaveCryptedKeys() const override;
|
||||
|
||||
std::optional<int64_t> GetOldestKeyPoolTime() const override;
|
||||
unsigned int GetKeyPoolSize() const override;
|
||||
|
||||
int64_t GetTimeFirstKey() const override;
|
||||
|
||||
@@ -2506,20 +2506,6 @@ util::Result<CTxDestination> CWallet::GetNewChangeDestination(const OutputType t
|
||||
return op_dest;
|
||||
}
|
||||
|
||||
std::optional<int64_t> CWallet::GetOldestKeyPoolTime() const
|
||||
{
|
||||
LOCK(cs_wallet);
|
||||
if (m_spk_managers.empty()) {
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
std::optional<int64_t> oldest_key{std::numeric_limits<int64_t>::max()};
|
||||
for (const auto& spk_man_pair : m_spk_managers) {
|
||||
oldest_key = std::min(oldest_key, spk_man_pair.second->GetOldestKeyPoolTime());
|
||||
}
|
||||
return oldest_key;
|
||||
}
|
||||
|
||||
void CWallet::MarkDestinationsDirty(const std::set<CTxDestination>& destinations) {
|
||||
for (auto& entry : mapWallet) {
|
||||
CWalletTx& wtx = entry.second;
|
||||
|
||||
@@ -733,8 +733,6 @@ public:
|
||||
size_t KeypoolCountExternalKeys() const EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
|
||||
bool TopUpKeyPool(unsigned int kpSize = 0);
|
||||
|
||||
std::optional<int64_t> GetOldestKeyPoolTime() const;
|
||||
|
||||
// Filter struct for 'ListAddrBookAddresses'
|
||||
struct AddrBookFilter {
|
||||
// Fetch addresses with the provided label
|
||||
|
||||
Reference in New Issue
Block a user