|
|
|
@ -249,9 +249,8 @@ static RPCHelpMan getnewaddress()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -299,9 +298,8 @@ static RPCHelpMan getrawchangeaddress()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -342,9 +340,8 @@ static RPCHelpMan setlabel()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -480,9 +477,8 @@ static RPCHelpMan sendtoaddress()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -507,13 +503,13 @@ static RPCHelpMan sendtoaddress()
|
|
|
|
|
coin_control.m_signal_bip125_rbf = request.params[5].get_bool();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
coin_control.m_avoid_address_reuse = GetAvoidReuseFlag(pwallet, request.params[8]);
|
|
|
|
|
coin_control.m_avoid_address_reuse = GetAvoidReuseFlag(pwallet.get(), request.params[8]);
|
|
|
|
|
// We also enable partial spend avoidance if reuse avoidance is set.
|
|
|
|
|
coin_control.m_avoid_partial_spends |= coin_control.m_avoid_address_reuse;
|
|
|
|
|
|
|
|
|
|
SetFeeEstimateMode(*pwallet, coin_control, /* conf_target */ request.params[6], /* estimate_mode */ request.params[7], /* fee_rate */ request.params[9], /* override_min_fee */ false);
|
|
|
|
|
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet);
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet.get());
|
|
|
|
|
|
|
|
|
|
UniValue address_amounts(UniValue::VOBJ);
|
|
|
|
|
const std::string address = request.params[0].get_str();
|
|
|
|
@ -527,7 +523,7 @@ static RPCHelpMan sendtoaddress()
|
|
|
|
|
ParseRecipients(address_amounts, subtractFeeFromAmount, recipients);
|
|
|
|
|
const bool verbose{request.params[10].isNull() ? false : request.params[10].get_bool()};
|
|
|
|
|
|
|
|
|
|
return SendMoney(pwallet, coin_control, recipients, mapValue, verbose);
|
|
|
|
|
return SendMoney(pwallet.get(), coin_control, recipients, mapValue, verbose);
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
@ -559,9 +555,8 @@ static RPCHelpMan listaddressgroupings()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -617,13 +612,12 @@ static RPCHelpMan signmessage()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet);
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet.get());
|
|
|
|
|
|
|
|
|
|
std::string strAddress = request.params[0].get_str();
|
|
|
|
|
std::string strMessage = request.params[1].get_str();
|
|
|
|
@ -720,9 +714,8 @@ static RPCHelpMan getreceivedbyaddress()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -759,9 +752,8 @@ static RPCHelpMan getreceivedbylabel()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -800,9 +792,8 @@ static RPCHelpMan getbalance()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -822,7 +813,7 @@ static RPCHelpMan getbalance()
|
|
|
|
|
|
|
|
|
|
bool include_watchonly = ParseIncludeWatchonly(request.params[2], *pwallet);
|
|
|
|
|
|
|
|
|
|
bool avoid_reuse = GetAvoidReuseFlag(pwallet, request.params[3]);
|
|
|
|
|
bool avoid_reuse = GetAvoidReuseFlag(pwallet.get(), request.params[3]);
|
|
|
|
|
|
|
|
|
|
const auto bal = pwallet->GetBalance(min_depth, avoid_reuse);
|
|
|
|
|
|
|
|
|
@ -840,9 +831,8 @@ static RPCHelpMan getunconfirmedbalance()
|
|
|
|
|
RPCExamples{""},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -911,9 +901,8 @@ static RPCHelpMan sendmany()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -945,7 +934,7 @@ static RPCHelpMan sendmany()
|
|
|
|
|
ParseRecipients(sendTo, subtractFeeFromAmount, recipients);
|
|
|
|
|
const bool verbose{request.params[9].isNull() ? false : request.params[9].get_bool()};
|
|
|
|
|
|
|
|
|
|
return SendMoney(pwallet, coin_control, recipients, std::move(mapValue), verbose);
|
|
|
|
|
return SendMoney(pwallet.get(), coin_control, recipients, std::move(mapValue), verbose);
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
@ -985,9 +974,8 @@ static RPCHelpMan addmultisigaddress()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LegacyScriptPubKeyMan& spk_man = EnsureLegacyScriptPubKeyMan(*pwallet);
|
|
|
|
|
|
|
|
|
@ -1227,9 +1215,8 @@ static RPCHelpMan listreceivedbyaddress()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -1237,7 +1224,7 @@ static RPCHelpMan listreceivedbyaddress()
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
|
return ListReceived(pwallet, request.params, false);
|
|
|
|
|
return ListReceived(pwallet.get(), request.params, false);
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
@ -1270,9 +1257,8 @@ static RPCHelpMan listreceivedbylabel()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -1280,7 +1266,7 @@ static RPCHelpMan listreceivedbylabel()
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
|
return ListReceived(pwallet, request.params, true);
|
|
|
|
|
return ListReceived(pwallet.get(), request.params, true);
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
@ -1451,9 +1437,8 @@ static RPCHelpMan listtransactions()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -1494,7 +1479,7 @@ static RPCHelpMan listtransactions()
|
|
|
|
|
for (CWallet::TxItems::const_reverse_iterator it = txOrdered.rbegin(); it != txOrdered.rend(); ++it)
|
|
|
|
|
{
|
|
|
|
|
CWalletTx *const pwtx = (*it).second;
|
|
|
|
|
ListTransactions(pwallet, *pwtx, 0, true, ret, filter, filter_label);
|
|
|
|
|
ListTransactions(pwallet.get(), *pwtx, 0, true, ret, filter, filter_label);
|
|
|
|
|
if ((int)ret.size() >= (nCount+nFrom)) break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1710,9 +1695,8 @@ static RPCHelpMan gettransaction()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -1749,7 +1733,7 @@ static RPCHelpMan gettransaction()
|
|
|
|
|
WalletTxToJSON(pwallet->chain(), wtx, entry);
|
|
|
|
|
|
|
|
|
|
UniValue details(UniValue::VARR);
|
|
|
|
|
ListTransactions(pwallet, wtx, 0, false, details, filter, nullptr /* filter_label */);
|
|
|
|
|
ListTransactions(pwallet.get(), wtx, 0, false, details, filter, nullptr /* filter_label */);
|
|
|
|
|
entry.pushKV("details", details);
|
|
|
|
|
|
|
|
|
|
std::string strHex = EncodeHexTx(*wtx.tx, pwallet->chain().rpcSerializationFlags());
|
|
|
|
@ -1784,9 +1768,8 @@ static RPCHelpMan abandontransaction()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -1823,9 +1806,8 @@ static RPCHelpMan backupwallet()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -1859,9 +1841,8 @@ static RPCHelpMan keypoolrefill()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
if (pwallet->IsLegacy() && pwallet->IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS)) {
|
|
|
|
|
throw JSONRPCError(RPC_WALLET_ERROR, "Error: Private keys are disabled for this wallet");
|
|
|
|
@ -1877,7 +1858,7 @@ static RPCHelpMan keypoolrefill()
|
|
|
|
|
kpSize = (unsigned int)request.params[0].get_int();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet);
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet.get());
|
|
|
|
|
pwallet->TopUpKeyPool(kpSize);
|
|
|
|
|
|
|
|
|
|
if (pwallet->GetKeyPoolSize() < kpSize) {
|
|
|
|
@ -2001,9 +1982,8 @@ static RPCHelpMan walletpassphrasechange()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -2055,9 +2035,8 @@ static RPCHelpMan walletlock()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -2100,9 +2079,8 @@ static RPCHelpMan encryptwallet()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -2174,9 +2152,8 @@ static RPCHelpMan lockunspent()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -2289,9 +2266,8 @@ static RPCHelpMan listlockunspent()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -2330,9 +2306,8 @@ static RPCHelpMan settxfee()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -2460,9 +2435,8 @@ static RPCHelpMan getwalletinfo()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
// Make sure the results are valid at least up to the most recent block
|
|
|
|
|
// the user could have gotten from another RPC command prior to now
|
|
|
|
@ -2672,9 +2646,8 @@ static RPCHelpMan setwalletflag()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
std::string flag_str = request.params[0].get_str();
|
|
|
|
|
bool value = request.params[1].isNull() || request.params[1].get_bool();
|
|
|
|
@ -2916,9 +2889,8 @@ static RPCHelpMan listunspent()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
int nMinDepth = 1;
|
|
|
|
|
if (!request.params[0].isNull()) {
|
|
|
|
@ -3283,9 +3255,8 @@ static RPCHelpMan fundrawtransaction()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
RPCTypeCheck(request.params, {UniValue::VSTR, UniValueType(), UniValue::VBOOL});
|
|
|
|
|
|
|
|
|
@ -3302,7 +3273,7 @@ static RPCHelpMan fundrawtransaction()
|
|
|
|
|
CCoinControl coin_control;
|
|
|
|
|
// Automatically select (additional) coins. Can be overridden by options.add_inputs.
|
|
|
|
|
coin_control.m_add_inputs = true;
|
|
|
|
|
FundTransaction(pwallet, tx, fee, change_position, request.params[1], coin_control, /* override_min_fee */ true);
|
|
|
|
|
FundTransaction(pwallet.get(), tx, fee, change_position, request.params[1], coin_control, /* override_min_fee */ true);
|
|
|
|
|
|
|
|
|
|
UniValue result(UniValue::VOBJ);
|
|
|
|
|
result.pushKV("hex", EncodeHexTx(CTransaction(tx)));
|
|
|
|
@ -3369,9 +3340,8 @@ RPCHelpMan signrawtransactionwithwallet()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
RPCTypeCheck(request.params, {UniValue::VSTR, UniValue::VARR, UniValue::VSTR}, true);
|
|
|
|
|
|
|
|
|
@ -3382,7 +3352,7 @@ RPCHelpMan signrawtransactionwithwallet()
|
|
|
|
|
|
|
|
|
|
// Sign the transaction
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet);
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet.get());
|
|
|
|
|
|
|
|
|
|
// Fetch previous transactions (inputs):
|
|
|
|
|
std::map<COutPoint, Coin> coins;
|
|
|
|
@ -3469,9 +3439,8 @@ static RPCHelpMan bumpfee_helper(std::string method_name)
|
|
|
|
|
},
|
|
|
|
|
[want_psbt](const RPCHelpMan& self, const JSONRPCRequest& request) mutable -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
if (pwallet->IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS) && !want_psbt) {
|
|
|
|
|
throw JSONRPCError(RPC_WALLET_ERROR, "bumpfee is not available with wallets that have private keys disabled. Use psbtbumpfee instead.");
|
|
|
|
@ -3514,7 +3483,7 @@ static RPCHelpMan bumpfee_helper(std::string method_name)
|
|
|
|
|
pwallet->BlockUntilSyncedToCurrentChain();
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet);
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet.get());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::vector<bilingual_str> errors;
|
|
|
|
@ -3608,9 +3577,8 @@ static RPCHelpMan rescanblockchain()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
WalletRescanReserver reserver(*pwallet);
|
|
|
|
|
if (!reserver.reserve()) {
|
|
|
|
@ -3840,9 +3808,8 @@ RPCHelpMan getaddressinfo()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -3887,7 +3854,7 @@ RPCHelpMan getaddressinfo()
|
|
|
|
|
|
|
|
|
|
ret.pushKV("iswatchonly", bool(mine & ISMINE_WATCH_ONLY));
|
|
|
|
|
|
|
|
|
|
UniValue detail = DescribeWalletAddress(pwallet, dest);
|
|
|
|
|
UniValue detail = DescribeWalletAddress(pwallet.get(), dest);
|
|
|
|
|
ret.pushKVs(detail);
|
|
|
|
|
|
|
|
|
|
ret.pushKV("ischange", pwallet->IsChange(scriptPubKey));
|
|
|
|
@ -3943,9 +3910,8 @@ static RPCHelpMan getaddressesbylabel()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -4005,9 +3971,8 @@ static RPCHelpMan listlabels()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LOCK(pwallet->cs_wallet);
|
|
|
|
|
|
|
|
|
@ -4130,9 +4095,8 @@ static RPCHelpMan send()
|
|
|
|
|
}, true
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
UniValue options{request.params[4].isNull() ? UniValue::VOBJ : request.params[4]};
|
|
|
|
|
if (options.exists("conf_target") || options.exists("estimate_mode")) {
|
|
|
|
@ -4185,7 +4149,7 @@ static RPCHelpMan send()
|
|
|
|
|
// Automatically select coins, unless at least one is manually selected. Can
|
|
|
|
|
// be overridden by options.add_inputs.
|
|
|
|
|
coin_control.m_add_inputs = rawTx.vin.size() == 0;
|
|
|
|
|
FundTransaction(pwallet, rawTx, fee, change_position, options, coin_control, /* override_min_fee */ false);
|
|
|
|
|
FundTransaction(pwallet.get(), rawTx, fee, change_position, options, coin_control, /* override_min_fee */ false);
|
|
|
|
|
|
|
|
|
|
bool add_to_wallet = true;
|
|
|
|
|
if (options.exists("add_to_wallet")) {
|
|
|
|
@ -4258,9 +4222,8 @@ static RPCHelpMan sethdseed()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
LegacyScriptPubKeyMan& spk_man = EnsureLegacyScriptPubKeyMan(*pwallet, true);
|
|
|
|
|
|
|
|
|
@ -4275,7 +4238,7 @@ static RPCHelpMan sethdseed()
|
|
|
|
|
throw JSONRPCError(RPC_WALLET_ERROR, "Cannot set an HD seed on a non-HD wallet. Use the upgradewallet RPC in order to upgrade a non-HD wallet to HD");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet);
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet.get());
|
|
|
|
|
|
|
|
|
|
bool flush_key_pool = true;
|
|
|
|
|
if (!request.params[0].isNull()) {
|
|
|
|
@ -4336,9 +4299,8 @@ static RPCHelpMan walletprocesspsbt()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
const CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
RPCTypeCheck(request.params, {UniValue::VSTR, UniValue::VBOOL, UniValue::VSTR});
|
|
|
|
|
|
|
|
|
@ -4448,9 +4410,8 @@ static RPCHelpMan walletcreatefundedpsbt()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
RPCTypeCheck(request.params, {
|
|
|
|
|
UniValue::VARR,
|
|
|
|
@ -4474,7 +4435,7 @@ static RPCHelpMan walletcreatefundedpsbt()
|
|
|
|
|
// Automatically select coins, unless at least one is manually selected. Can
|
|
|
|
|
// be overridden by options.add_inputs.
|
|
|
|
|
coin_control.m_add_inputs = rawTx.vin.size() == 0;
|
|
|
|
|
FundTransaction(pwallet, rawTx, fee, change_position, request.params[3], coin_control, /* override_min_fee */ true);
|
|
|
|
|
FundTransaction(pwallet.get(), rawTx, fee, change_position, request.params[3], coin_control, /* override_min_fee */ true);
|
|
|
|
|
|
|
|
|
|
// Make a blank psbt
|
|
|
|
|
PartiallySignedTransaction psbtx(rawTx);
|
|
|
|
@ -4524,13 +4485,12 @@ static RPCHelpMan upgradewallet()
|
|
|
|
|
},
|
|
|
|
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!wallet) return NullUniValue;
|
|
|
|
|
CWallet* const pwallet = wallet.get();
|
|
|
|
|
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
|
|
|
|
if (!pwallet) return NullUniValue;
|
|
|
|
|
|
|
|
|
|
RPCTypeCheck(request.params, {UniValue::VNUM}, true);
|
|
|
|
|
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet);
|
|
|
|
|
EnsureWalletIsUnlocked(pwallet.get());
|
|
|
|
|
|
|
|
|
|
int version = 0;
|
|
|
|
|
if (!request.params[0].isNull()) {
|
|
|
|
|