mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-17 13:07:54 +02:00
Merge cea38b491f into merged_master (Bitcoin PR bitcoin/bitcoin#22183)
This commit is contained in:
commit
e2ccc3a707
4 changed files with 44 additions and 34 deletions
|
|
@ -885,7 +885,7 @@ static void GetWalletBalances(UniValue& result)
|
|||
}
|
||||
|
||||
/**
|
||||
* GetProgressBar contructs a progress bar with 5% intervals.
|
||||
* GetProgressBar constructs a progress bar with 5% intervals.
|
||||
*
|
||||
* @param[in] progress The proportion of the progress bar to be filled between 0 and 1.
|
||||
* @param[out] progress_bar String representation of the progress bar.
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
#include <fs.h>
|
||||
#include <interfaces/chain.h>
|
||||
#include <scheduler.h>
|
||||
#include <util/check.h>
|
||||
#include <util/string.h>
|
||||
#include <util/system.h>
|
||||
#include <util/translation.h>
|
||||
|
|
@ -20,8 +21,10 @@
|
|||
bool VerifyWallets(WalletContext& context)
|
||||
{
|
||||
interfaces::Chain& chain = *context.chain;
|
||||
if (gArgs.IsArgSet("-walletdir")) {
|
||||
fs::path wallet_dir = gArgs.GetArg("-walletdir", "");
|
||||
ArgsManager& args = *Assert(context.args);
|
||||
|
||||
if (args.IsArgSet("-walletdir")) {
|
||||
fs::path wallet_dir = args.GetArg("-walletdir", "");
|
||||
boost::system::error_code error;
|
||||
// The canonical path cleans the path, preventing >1 Berkeley environment instances for the same directory
|
||||
fs::path canonical_wallet_dir = fs::canonical(wallet_dir, error);
|
||||
|
|
@ -36,7 +39,7 @@ bool VerifyWallets(WalletContext& context)
|
|||
chain.initError(strprintf(_("Specified -walletdir \"%s\" is a relative path"), wallet_dir.string()));
|
||||
return false;
|
||||
}
|
||||
gArgs.ForceSetArg("-walletdir", canonical_wallet_dir.string());
|
||||
args.ForceSetArg("-walletdir", canonical_wallet_dir.string());
|
||||
}
|
||||
|
||||
LogPrintf("Using wallet directory %s\n", GetWalletDir().string());
|
||||
|
|
@ -45,7 +48,7 @@ bool VerifyWallets(WalletContext& context)
|
|||
|
||||
// For backwards compatibility if an unnamed top level wallet exists in the
|
||||
// wallets directory, include it in the default list of wallets to load.
|
||||
if (!gArgs.IsArgSet("wallet")) {
|
||||
if (!args.IsArgSet("wallet")) {
|
||||
DatabaseOptions options;
|
||||
DatabaseStatus status;
|
||||
bilingual_str error_string;
|
||||
|
|
|
|||
|
|
@ -204,6 +204,7 @@ BOOST_FIXTURE_TEST_CASE(importmulti_rescan, TestChain100Setup)
|
|||
wallet->SetupLegacyScriptPubKeyMan();
|
||||
WITH_LOCK(wallet->cs_wallet, wallet->SetLastBlockProcessed(newTip->nHeight, newTip->GetBlockHash()));
|
||||
WalletContext context;
|
||||
context.args = &gArgs;
|
||||
AddWallet(context, wallet);
|
||||
UniValue keys;
|
||||
keys.setArray();
|
||||
|
|
@ -264,6 +265,7 @@ BOOST_FIXTURE_TEST_CASE(importwallet_rescan, TestChain100Setup)
|
|||
// Import key into wallet and call dumpwallet to create backup file.
|
||||
{
|
||||
WalletContext context;
|
||||
context.args = &gArgs;
|
||||
std::shared_ptr<CWallet> wallet = std::make_shared<CWallet>(m_node.chain.get(), "", CreateDummyWalletDatabase());
|
||||
{
|
||||
auto spk_man = wallet->GetOrCreateLegacyScriptPubKeyMan();
|
||||
|
|
@ -291,6 +293,7 @@ BOOST_FIXTURE_TEST_CASE(importwallet_rescan, TestChain100Setup)
|
|||
wallet->SetupLegacyScriptPubKeyMan();
|
||||
|
||||
WalletContext context;
|
||||
context.args = &gArgs;
|
||||
JSONRPCRequest request;
|
||||
request.context = &context;
|
||||
request.params.setArray();
|
||||
|
|
@ -690,6 +693,7 @@ BOOST_FIXTURE_TEST_CASE(CreateWallet, TestChain100Setup)
|
|||
gArgs.ForceSetArg("-unsafesqlitesync", "1");
|
||||
// Create new wallet with known key and unload it.
|
||||
WalletContext context;
|
||||
context.args = &gArgs;
|
||||
context.chain = m_node.chain.get();
|
||||
auto wallet = TestLoadWallet(context);
|
||||
CKey key;
|
||||
|
|
@ -786,6 +790,7 @@ BOOST_FIXTURE_TEST_CASE(CreateWallet, TestChain100Setup)
|
|||
BOOST_FIXTURE_TEST_CASE(CreateWalletWithoutChain, BasicTestingSetup)
|
||||
{
|
||||
WalletContext context;
|
||||
context.args = &gArgs;
|
||||
auto wallet = TestLoadWallet(context);
|
||||
BOOST_CHECK(wallet);
|
||||
UnloadWallet(std::move(wallet));
|
||||
|
|
@ -795,6 +800,7 @@ BOOST_FIXTURE_TEST_CASE(ZapSelectTx, TestChain100Setup)
|
|||
{
|
||||
gArgs.ForceSetArg("-unsafesqlitesync", "1");
|
||||
WalletContext context;
|
||||
context.args = &gArgs;
|
||||
context.chain = m_node.chain.get();
|
||||
auto wallet = TestLoadWallet(context);
|
||||
CKey key;
|
||||
|
|
|
|||
|
|
@ -2793,6 +2793,7 @@ std::unique_ptr<WalletDatabase> MakeWalletDatabase(const std::string& name, cons
|
|||
std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::string& name, std::unique_ptr<WalletDatabase> database, uint64_t wallet_creation_flags, bilingual_str& error, std::vector<bilingual_str>& warnings)
|
||||
{
|
||||
interfaces::Chain* chain = context.chain;
|
||||
ArgsManager& args = *Assert(context.args);
|
||||
const std::string& walletFile = database->Filename();
|
||||
|
||||
int64_t nStart = GetTimeMillis();
|
||||
|
|
@ -2874,28 +2875,28 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
|
|||
}
|
||||
}
|
||||
|
||||
if (!gArgs.GetArg("-addresstype", "").empty()) {
|
||||
std::optional<OutputType> parsed = ParseOutputType(gArgs.GetArg("-addresstype", ""));
|
||||
if (!args.GetArg("-addresstype", "").empty()) {
|
||||
std::optional<OutputType> parsed = ParseOutputType(args.GetArg("-addresstype", ""));
|
||||
if (!parsed) {
|
||||
error = strprintf(_("Unknown address type '%s'"), gArgs.GetArg("-addresstype", ""));
|
||||
error = strprintf(_("Unknown address type '%s'"), args.GetArg("-addresstype", ""));
|
||||
return nullptr;
|
||||
}
|
||||
walletInstance->m_default_address_type = parsed.value();
|
||||
}
|
||||
|
||||
if (!gArgs.GetArg("-changetype", "").empty()) {
|
||||
std::optional<OutputType> parsed = ParseOutputType(gArgs.GetArg("-changetype", ""));
|
||||
if (!args.GetArg("-changetype", "").empty()) {
|
||||
std::optional<OutputType> parsed = ParseOutputType(args.GetArg("-changetype", ""));
|
||||
if (!parsed) {
|
||||
error = strprintf(_("Unknown change type '%s'"), gArgs.GetArg("-changetype", ""));
|
||||
error = strprintf(_("Unknown change type '%s'"), args.GetArg("-changetype", ""));
|
||||
return nullptr;
|
||||
}
|
||||
walletInstance->m_default_change_type = parsed.value();
|
||||
}
|
||||
|
||||
if (gArgs.IsArgSet("-mintxfee")) {
|
||||
std::optional<CAmount> min_tx_fee = ParseMoney(gArgs.GetArg("-mintxfee", ""));
|
||||
if (args.IsArgSet("-mintxfee")) {
|
||||
std::optional<CAmount> min_tx_fee = ParseMoney(args.GetArg("-mintxfee", ""));
|
||||
if (!min_tx_fee || min_tx_fee.value() == 0) {
|
||||
error = AmountErrMsg("mintxfee", gArgs.GetArg("-mintxfee", ""));
|
||||
error = AmountErrMsg("mintxfee", args.GetArg("-mintxfee", ""));
|
||||
return nullptr;
|
||||
} else if (min_tx_fee.value() > HIGH_TX_FEE_PER_KB) {
|
||||
warnings.push_back(AmountHighWarn("-mintxfee") + Untranslated(" ") +
|
||||
|
|
@ -2905,8 +2906,8 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
|
|||
walletInstance->m_min_fee = CFeeRate{min_tx_fee.value()};
|
||||
}
|
||||
|
||||
if (gArgs.IsArgSet("-maxapsfee")) {
|
||||
const std::string max_aps_fee{gArgs.GetArg("-maxapsfee", "")};
|
||||
if (args.IsArgSet("-maxapsfee")) {
|
||||
const std::string max_aps_fee{args.GetArg("-maxapsfee", "")};
|
||||
if (max_aps_fee == "-1") {
|
||||
walletInstance->m_max_aps_fee = -1;
|
||||
} else if (std::optional<CAmount> max_fee = ParseMoney(max_aps_fee)) {
|
||||
|
|
@ -2921,10 +2922,10 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
|
|||
}
|
||||
}
|
||||
|
||||
if (gArgs.IsArgSet("-fallbackfee")) {
|
||||
std::optional<CAmount> fallback_fee = ParseMoney(gArgs.GetArg("-fallbackfee", ""));
|
||||
if (args.IsArgSet("-fallbackfee")) {
|
||||
std::optional<CAmount> fallback_fee = ParseMoney(args.GetArg("-fallbackfee", ""));
|
||||
if (!fallback_fee) {
|
||||
error = strprintf(_("Invalid amount for -fallbackfee=<amount>: '%s'"), gArgs.GetArg("-fallbackfee", ""));
|
||||
error = strprintf(_("Invalid amount for -fallbackfee=<amount>: '%s'"), args.GetArg("-fallbackfee", ""));
|
||||
return nullptr;
|
||||
} else if (fallback_fee.value() > HIGH_TX_FEE_PER_KB) {
|
||||
warnings.push_back(AmountHighWarn("-fallbackfee") + Untranslated(" ") +
|
||||
|
|
@ -2939,10 +2940,10 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
|
|||
// Disable fallback fee in case value was set to 0, enable if non-null value
|
||||
walletInstance->m_allow_fallback_fee = walletInstance->m_fallback_fee.GetFeePerK() != 0;
|
||||
|
||||
if (gArgs.IsArgSet("-discardfee")) {
|
||||
std::optional<CAmount> discard_fee = ParseMoney(gArgs.GetArg("-discardfee", ""));
|
||||
if (args.IsArgSet("-discardfee")) {
|
||||
std::optional<CAmount> discard_fee = ParseMoney(args.GetArg("-discardfee", ""));
|
||||
if (!discard_fee) {
|
||||
error = strprintf(_("Invalid amount for -discardfee=<amount>: '%s'"), gArgs.GetArg("-discardfee", ""));
|
||||
error = strprintf(_("Invalid amount for -discardfee=<amount>: '%s'"), args.GetArg("-discardfee", ""));
|
||||
return nullptr;
|
||||
} else if (discard_fee.value() > HIGH_TX_FEE_PER_KB) {
|
||||
warnings.push_back(AmountHighWarn("-discardfee") + Untranslated(" ") +
|
||||
|
|
@ -2951,10 +2952,10 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
|
|||
walletInstance->m_discard_rate = CFeeRate{discard_fee.value()};
|
||||
}
|
||||
|
||||
if (gArgs.IsArgSet("-paytxfee")) {
|
||||
std::optional<CAmount> pay_tx_fee = ParseMoney(gArgs.GetArg("-paytxfee", ""));
|
||||
if (args.IsArgSet("-paytxfee")) {
|
||||
std::optional<CAmount> pay_tx_fee = ParseMoney(args.GetArg("-paytxfee", ""));
|
||||
if (!pay_tx_fee) {
|
||||
error = AmountErrMsg("paytxfee", gArgs.GetArg("-paytxfee", ""));
|
||||
error = AmountErrMsg("paytxfee", args.GetArg("-paytxfee", ""));
|
||||
return nullptr;
|
||||
} else if (pay_tx_fee.value() > HIGH_TX_FEE_PER_KB) {
|
||||
warnings.push_back(AmountHighWarn("-paytxfee") + Untranslated(" ") +
|
||||
|
|
@ -2965,15 +2966,15 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
|
|||
|
||||
if (chain && walletInstance->m_pay_tx_fee < chain->relayMinFee()) {
|
||||
error = strprintf(_("Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s)"),
|
||||
gArgs.GetArg("-paytxfee", ""), chain->relayMinFee().ToString());
|
||||
args.GetArg("-paytxfee", ""), chain->relayMinFee().ToString());
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
if (gArgs.IsArgSet("-maxtxfee")) {
|
||||
std::optional<CAmount> max_fee = ParseMoney(gArgs.GetArg("-maxtxfee", ""));
|
||||
if (args.IsArgSet("-maxtxfee")) {
|
||||
std::optional<CAmount> max_fee = ParseMoney(args.GetArg("-maxtxfee", ""));
|
||||
if (!max_fee) {
|
||||
error = AmountErrMsg("maxtxfee", gArgs.GetArg("-maxtxfee", ""));
|
||||
error = AmountErrMsg("maxtxfee", args.GetArg("-maxtxfee", ""));
|
||||
return nullptr;
|
||||
} else if (max_fee.value() > HIGH_MAX_TX_FEE) {
|
||||
warnings.push_back(_("-maxtxfee is set very high! Fees this large could be paid on a single transaction."));
|
||||
|
|
@ -2981,7 +2982,7 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
|
|||
|
||||
if (chain && CFeeRate{max_fee.value(), 1000} < chain->relayMinFee()) {
|
||||
error = strprintf(_("Invalid amount for -maxtxfee=<amount>: '%s' (must be at least the minrelay fee of %s to prevent stuck transactions)"),
|
||||
gArgs.GetArg("-maxtxfee", ""), chain->relayMinFee().ToString());
|
||||
args.GetArg("-maxtxfee", ""), chain->relayMinFee().ToString());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
@ -2993,9 +2994,9 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
|
|||
_("The wallet will avoid paying less than the minimum relay fee."));
|
||||
}
|
||||
|
||||
walletInstance->m_confirm_target = gArgs.GetArg("-txconfirmtarget", DEFAULT_TX_CONFIRM_TARGET);
|
||||
walletInstance->m_spend_zero_conf_change = gArgs.GetBoolArg("-spendzeroconfchange", DEFAULT_SPEND_ZEROCONF_CHANGE);
|
||||
walletInstance->m_signal_rbf = gArgs.GetBoolArg("-walletrbf", DEFAULT_WALLET_RBF);
|
||||
walletInstance->m_confirm_target = args.GetArg("-txconfirmtarget", DEFAULT_TX_CONFIRM_TARGET);
|
||||
walletInstance->m_spend_zero_conf_change = args.GetBoolArg("-spendzeroconfchange", DEFAULT_SPEND_ZEROCONF_CHANGE);
|
||||
walletInstance->m_signal_rbf = args.GetBoolArg("-walletrbf", DEFAULT_WALLET_RBF);
|
||||
|
||||
walletInstance->WalletLogPrintf("Wallet completed loading in %15dms\n", GetTimeMillis() - nStart);
|
||||
|
||||
|
|
@ -3015,7 +3016,7 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
|
|||
}
|
||||
}
|
||||
|
||||
walletInstance->SetBroadcastTransactions(gArgs.GetBoolArg("-walletbroadcast", DEFAULT_WALLETBROADCAST));
|
||||
walletInstance->SetBroadcastTransactions(args.GetBoolArg("-walletbroadcast", DEFAULT_WALLETBROADCAST));
|
||||
|
||||
{
|
||||
walletInstance->WalletLogPrintf("setKeyPool.size() = %u\n", walletInstance->GetKeyPoolSize());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue