mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-15 12:51:00 +02:00
Merge 6b56873b41 into merged_master (Bitcoin PR bitcoin/bitcoin#25784)
This commit is contained in:
commit
c76ddcea4d
3 changed files with 11 additions and 6 deletions
|
|
@ -1539,16 +1539,20 @@ bool CWallet::LoadWalletFlags(uint64_t flags)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool CWallet::AddWalletFlags(uint64_t flags)
|
||||
void CWallet::InitWalletFlags(uint64_t flags)
|
||||
{
|
||||
LOCK(cs_wallet);
|
||||
|
||||
// We should never be writing unknown non-tolerable wallet flags
|
||||
assert(((flags & KNOWN_WALLET_FLAGS) >> 32) == (flags >> 32));
|
||||
// This should only be used once, when creating a new wallet - so current flags are expected to be blank
|
||||
assert(m_wallet_flags == 0);
|
||||
|
||||
if (!WalletBatch(GetDatabase()).WriteWalletFlags(flags)) {
|
||||
throw std::runtime_error(std::string(__func__) + ": writing wallet flags failed");
|
||||
}
|
||||
|
||||
return LoadWalletFlags(flags);
|
||||
if (!LoadWalletFlags(flags)) assert(false);
|
||||
}
|
||||
|
||||
bool CWallet::ImportScripts(const std::set<CScript> scripts, int64_t timestamp)
|
||||
|
|
@ -3064,7 +3068,7 @@ 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->AddWalletFlags(wallet_creation_flags);
|
||||
walletInstance->InitWalletFlags(wallet_creation_flags);
|
||||
|
||||
// Only create LegacyScriptPubKeyMan when not descriptor wallet
|
||||
if (!walletInstance->IsWalletFlagSet(WALLET_FLAG_DESCRIPTORS)) {
|
||||
|
|
|
|||
|
|
@ -875,8 +875,9 @@ public:
|
|||
bool IsWalletFlagSet(uint64_t flag) const override;
|
||||
|
||||
/** overwrite all flags by the given uint64_t
|
||||
returns false if unknown, non-tolerable flags are present */
|
||||
bool AddWalletFlags(uint64_t flags);
|
||||
flags must be uninitialised (or 0)
|
||||
only known flags may be present */
|
||||
void InitWalletFlags(uint64_t flags);
|
||||
/** Loads the flags into the wallet. (used by LoadWallet) */
|
||||
bool LoadWalletFlags(uint64_t flags);
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ static void WalletCreate(CWallet* wallet_instance, uint64_t wallet_creation_flag
|
|||
LOCK(wallet_instance->cs_wallet);
|
||||
|
||||
wallet_instance->SetMinVersion(FEATURE_LATEST);
|
||||
wallet_instance->AddWalletFlags(wallet_creation_flags);
|
||||
wallet_instance->InitWalletFlags(wallet_creation_flags);
|
||||
|
||||
if (!wallet_instance->IsWalletFlagSet(WALLET_FLAG_DESCRIPTORS)) {
|
||||
auto spk_man = wallet_instance->GetOrCreateLegacyScriptPubKeyMan();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue