wallet: Set upgraded descriptor cache flag for newly created wallets

Although WalletBatch::LoadWallet performs the descriptor cache upgrade,
because new wallets do not have the descriptor flag set yet, the upgrade
does not run and set the flag.

Since new wallets will always being using the upgraded cache, there's no
reason to wait to set the flag, so set it when the wallet flags are
being initialized for new wallets.
This commit is contained in:
Ava Chow
2025-05-13 14:33:45 -07:00
parent 2df824f4e6
commit 69f588a99a

View File

@ -2904,7 +2904,9 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
// ensure this wallet.dat can only be opened by clients supporting HD with chain split and expects no default key
walletInstance->SetMinVersion(FEATURE_LATEST);
walletInstance->InitWalletFlags(wallet_creation_flags);
// Init with passed flags.
// Always set the cache upgrade flag as this feature is supported from the beginning.
walletInstance->InitWalletFlags(wallet_creation_flags | WALLET_FLAG_LAST_HARDENED_XPUB_CACHED);
// Only descriptor wallets can be created
assert(walletInstance->IsWalletFlagSet(WALLET_FLAG_DESCRIPTORS));