diff options
author | Ivan Metlushko <metlushko@gmail.com> | 2020-11-11 11:41:53 +0700 |
---|---|---|
committer | Ivan Metlushko <metlushko@gmail.com> | 2020-11-11 11:41:53 +0700 |
commit | 345e88eecf1b28607d5da3af38e19794a8a115ce (patch) | |
tree | a98c0d616444b7df4cadf2ca0a548c36221d4476 /src/wallet/wallettool.cpp | |
parent | 6d3af3ab627096a824cb6a7ca1ebeddc7530361c (diff) |
wallettool: add param to create descriptors wallet
Diffstat (limited to 'src/wallet/wallettool.cpp')
-rw-r--r-- | src/wallet/wallettool.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/wallet/wallettool.cpp b/src/wallet/wallettool.cpp index 4e8bfd615c..538389e4c0 100644 --- a/src/wallet/wallettool.cpp +++ b/src/wallet/wallettool.cpp @@ -21,16 +21,19 @@ static void WalletToolReleaseWallet(CWallet* wallet) delete wallet; } -static void WalletCreate(CWallet* wallet_instance) +static void WalletCreate(CWallet* wallet_instance, uint64_t wallet_creation_flags) { LOCK(wallet_instance->cs_wallet); wallet_instance->SetMinVersion(FEATURE_HD_SPLIT); + wallet_instance->AddWalletFlags(wallet_creation_flags); - // generate a new HD seed - auto spk_man = wallet_instance->GetOrCreateLegacyScriptPubKeyMan(); - CPubKey seed = spk_man->GenerateNewSeed(); - spk_man->SetHDSeed(seed); + if (!wallet_instance->IsWalletFlagSet(WALLET_FLAG_DESCRIPTORS)) { + auto spk_man = wallet_instance->GetOrCreateLegacyScriptPubKeyMan(); + spk_man->SetupGeneration(false); + } else { + wallet_instance->SetupDescriptorScriptPubKeyMans(); + } tfm::format(std::cout, "Topping up keypool...\n"); wallet_instance->TopUpKeyPool(); @@ -79,7 +82,7 @@ static std::shared_ptr<CWallet> MakeWallet(const std::string& name, const fs::pa } } - if (options.require_create) WalletCreate(wallet_instance.get()); + if (options.require_create) WalletCreate(wallet_instance.get(), options.create_flags); return wallet_instance; } @@ -106,6 +109,11 @@ bool ExecuteWalletToolFunc(const std::string& command, const std::string& name) if (command == "create") { DatabaseOptions options; options.require_create = true; + if (gArgs.GetBoolArg("-descriptors", false)) { + options.create_flags |= WALLET_FLAG_DESCRIPTORS; + options.require_format = DatabaseFormat::SQLITE; + } + std::shared_ptr<CWallet> wallet_instance = MakeWallet(name, path, options); if (wallet_instance) { WalletShowInfo(wallet_instance.get()); |