mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 12:02:48 +01:00
Merge c5e2fddc7a
into ad7a373529
This commit is contained in:
commit
f98cbea6d7
@ -31,6 +31,7 @@ static void SetupWalletToolArgs(ArgsManager& argsman)
|
|||||||
argsman.AddArg("-dumpfile=<file name>", "When used with 'dump', writes out the records to this file. When used with 'createfromdump', loads the records into a new wallet.", ArgsManager::ALLOW_STRING, OptionsCategory::OPTIONS);
|
argsman.AddArg("-dumpfile=<file name>", "When used with 'dump', writes out the records to this file. When used with 'createfromdump', loads the records into a new wallet.", ArgsManager::ALLOW_STRING, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-debug=<category>", "Output debugging information (default: 0).", ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
|
argsman.AddArg("-debug=<category>", "Output debugging information (default: 0).", ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
|
||||||
argsman.AddArg("-descriptors", "Create descriptors wallet. Only for 'create'", ArgsManager::ALLOW_BOOL, OptionsCategory::OPTIONS);
|
argsman.AddArg("-descriptors", "Create descriptors wallet. Only for 'create'", ArgsManager::ALLOW_BOOL, OptionsCategory::OPTIONS);
|
||||||
|
argsman.AddArg("-legacy", "Create legacy wallet. Only for 'create'", ArgsManager::ALLOW_BOOL, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-format=<format>", "The format of the wallet file to create. Either \"bdb\" or \"sqlite\". Only used with 'createfromdump'", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-format=<format>", "The format of the wallet file to create. Either \"bdb\" or \"sqlite\". Only used with 'createfromdump'", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-printtoconsole", "Send trace/debug info to console (default: 1 when no -debug is true, 0 otherwise).", ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
|
argsman.AddArg("-printtoconsole", "Send trace/debug info to console (default: 1 when no -debug is true, 0 otherwise).", ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
|
||||||
|
|
||||||
|
@ -107,6 +107,9 @@
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Descriptor Wallet (EXPERIMENTAL)</string>
|
<string>Descriptor Wallet (EXPERIMENTAL)</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
@ -2986,7 +2986,7 @@ static RPCHelpMan createwallet()
|
|||||||
{"blank", RPCArg::Type::BOOL, RPCArg::Default{false}, "Create a blank wallet. A blank wallet has no keys or HD seed. One can be set using upgradetohd (by mnemonic) or sethdseed (WIF private key)."},
|
{"blank", RPCArg::Type::BOOL, RPCArg::Default{false}, "Create a blank wallet. A blank wallet has no keys or HD seed. One can be set using upgradetohd (by mnemonic) or sethdseed (WIF private key)."},
|
||||||
{"passphrase", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG, "Encrypt the wallet with this passphrase."},
|
{"passphrase", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG, "Encrypt the wallet with this passphrase."},
|
||||||
{"avoid_reuse", RPCArg::Type::BOOL, RPCArg::Default{false}, "Keep track of coin reuse, and treat dirty and clean coins differently with privacy considerations in mind."},
|
{"avoid_reuse", RPCArg::Type::BOOL, RPCArg::Default{false}, "Keep track of coin reuse, and treat dirty and clean coins differently with privacy considerations in mind."},
|
||||||
{"descriptors", RPCArg::Type::BOOL, RPCArg::Default{false}, "Create a native descriptor wallet. The wallet will use descriptors internally to handle address creation. This feature is well-tested but still considered experimental."},
|
{"descriptors", RPCArg::Type::BOOL, RPCArg::Default{true}, "Create a native descriptor wallet. The wallet will use descriptors internally to handle address creation. This feature is well-tested but still considered experimental."},
|
||||||
{"load_on_startup", RPCArg::Type::BOOL, RPCArg::Optional::OMITTED_NAMED_ARG, "Save wallet name to persistent settings and load on startup. True to add wallet to startup list, false to remove, null to leave unchanged."},
|
{"load_on_startup", RPCArg::Type::BOOL, RPCArg::Optional::OMITTED_NAMED_ARG, "Save wallet name to persistent settings and load on startup. True to add wallet to startup list, false to remove, null to leave unchanged."},
|
||||||
},
|
},
|
||||||
RPCResult{
|
RPCResult{
|
||||||
@ -3027,7 +3027,7 @@ static RPCHelpMan createwallet()
|
|||||||
if (!request.params[4].isNull() && request.params[4].get_bool()) {
|
if (!request.params[4].isNull() && request.params[4].get_bool()) {
|
||||||
flags |= WALLET_FLAG_AVOID_REUSE;
|
flags |= WALLET_FLAG_AVOID_REUSE;
|
||||||
}
|
}
|
||||||
if (!request.params[5].isNull() && request.params[5].get_bool()) {
|
if (request.params[5].isNull() || request.params[5].get_bool()) {
|
||||||
#ifndef USE_SQLITE
|
#ifndef USE_SQLITE
|
||||||
throw JSONRPCError(RPC_WALLET_ERROR, "Compiled without sqlite support (required for descriptor wallets)");
|
throw JSONRPCError(RPC_WALLET_ERROR, "Compiled without sqlite support (required for descriptor wallets)");
|
||||||
#endif
|
#endif
|
||||||
@ -3035,7 +3035,6 @@ static RPCHelpMan createwallet()
|
|||||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "The createwallet RPC requires specifying the 'load_on_startup' flag when creating descriptor wallets. Dash Core v21 introduced this requirement due to breaking changes in the createwallet RPC.");
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "The createwallet RPC requires specifying the 'load_on_startup' flag when creating descriptor wallets. Dash Core v21 introduced this requirement due to breaking changes in the createwallet RPC.");
|
||||||
}
|
}
|
||||||
flags |= WALLET_FLAG_DESCRIPTORS;
|
flags |= WALLET_FLAG_DESCRIPTORS;
|
||||||
warnings.emplace_back(Untranslated("Wallet is an experimental descriptor wallet"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef USE_BDB
|
#ifndef USE_BDB
|
||||||
|
@ -128,6 +128,10 @@ bool ExecuteWalletToolFunc(const ArgsManager& args, const std::string& command)
|
|||||||
tfm::format(std::cerr, "The -descriptors option can only be used with the 'create' command.\n");
|
tfm::format(std::cerr, "The -descriptors option can only be used with the 'create' command.\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (args.IsArgSet("-legacy") && command != "create") {
|
||||||
|
tfm::format(std::cerr, "The -legacy option can only be used with the 'create' command.\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (command == "create" && !args.IsArgSet("-wallet")) {
|
if (command == "create" && !args.IsArgSet("-wallet")) {
|
||||||
tfm::format(std::cerr, "Wallet name must be provided when creating a new wallet.\n");
|
tfm::format(std::cerr, "Wallet name must be provided when creating a new wallet.\n");
|
||||||
return false;
|
return false;
|
||||||
@ -138,7 +142,19 @@ bool ExecuteWalletToolFunc(const ArgsManager& args, const std::string& command)
|
|||||||
if (command == "create") {
|
if (command == "create") {
|
||||||
DatabaseOptions options;
|
DatabaseOptions options;
|
||||||
options.require_create = true;
|
options.require_create = true;
|
||||||
if (args.GetBoolArg("-descriptors", false)) {
|
// If -legacy is set, use it. Otherwise default to false.
|
||||||
|
bool make_legacy = args.GetBoolArg("-legacy", false);
|
||||||
|
// If neither -legacy nor -descriptors is set, default to true. If -descriptors is set, use its value.
|
||||||
|
bool make_descriptors = (!args.IsArgSet("-descriptors") && !args.IsArgSet("-legacy")) || (args.IsArgSet("-descriptors") && args.GetBoolArg("-descriptors", true));
|
||||||
|
if (make_legacy && make_descriptors) {
|
||||||
|
tfm::format(std::cerr, "Only one of -legacy or -descriptors can be set to true, not both\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!make_legacy && !make_descriptors) {
|
||||||
|
tfm::format(std::cerr, "One of -legacy or -descriptors must be set to true (or omitted)\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (make_descriptors) {
|
||||||
options.create_flags |= WALLET_FLAG_DESCRIPTORS;
|
options.create_flags |= WALLET_FLAG_DESCRIPTORS;
|
||||||
options.require_format = DatabaseFormat::SQLITE;
|
options.require_format = DatabaseFormat::SQLITE;
|
||||||
}
|
}
|
||||||
|
@ -30,8 +30,8 @@ class ToolWalletTest(BitcoinTestFramework):
|
|||||||
def dash_wallet_process(self, *args):
|
def dash_wallet_process(self, *args):
|
||||||
binary = self.config["environment"]["BUILDDIR"] + '/src/dash-wallet' + self.config["environment"]["EXEEXT"]
|
binary = self.config["environment"]["BUILDDIR"] + '/src/dash-wallet' + self.config["environment"]["EXEEXT"]
|
||||||
default_args = ['-datadir={}'.format(self.nodes[0].datadir), '-chain=%s' % self.chain]
|
default_args = ['-datadir={}'.format(self.nodes[0].datadir), '-chain=%s' % self.chain]
|
||||||
if self.options.descriptors and 'create' in args:
|
if not self.options.descriptors and 'create' in args:
|
||||||
default_args.append('-descriptors')
|
default_args.append('-legacy')
|
||||||
|
|
||||||
return subprocess.Popen([binary] + default_args + list(args), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
|
return subprocess.Popen([binary] + default_args + list(args), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user