mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 20:03:34 -03:00
refactor: Combine GetWalletForJSONRPCRequest and EnsureWalletIsAvailable functions
This simplifies control flow and also helps get rid of the ::vpwallets variable, because EnsureWalletIsAvailable doesn't have access to the request context.
This commit is contained in:
parent
0fc6ea216c
commit
f42f5e58f5
3 changed files with 58 additions and 212 deletions
|
@ -93,10 +93,8 @@ static void RescanWallet(CWallet& wallet, const WalletRescanReserver& reserver,
|
|||
UniValue importprivkey(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"importprivkey",
|
||||
"\nAdds a private key (as returned by dumpprivkey) to your wallet. Requires a new wallet backup.\n"
|
||||
|
@ -196,10 +194,8 @@ UniValue importprivkey(const JSONRPCRequest& request)
|
|||
UniValue abortrescan(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"abortrescan",
|
||||
"\nStops current wallet rescan triggered by an RPC call, e.g. by an importprivkey call.\n"
|
||||
|
@ -224,10 +220,8 @@ UniValue abortrescan(const JSONRPCRequest& request)
|
|||
UniValue importaddress(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"importaddress",
|
||||
"\nAdds an address or script (in hex) that can be watched as if it were in your wallet but cannot be used to spend. Requires a new wallet backup.\n"
|
||||
|
@ -326,10 +320,8 @@ UniValue importaddress(const JSONRPCRequest& request)
|
|||
UniValue importprunedfunds(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"importprunedfunds",
|
||||
"\nImports funds without rescan. Corresponding address or script must previously be included in wallet. Aimed towards pruned wallets. The end-user is responsible to import additional transactions that subsequently spend the imported outputs or rescan after the point in the blockchain the transaction is included.\n",
|
||||
|
@ -384,10 +376,8 @@ UniValue importprunedfunds(const JSONRPCRequest& request)
|
|||
UniValue removeprunedfunds(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"removeprunedfunds",
|
||||
"\nDeletes the specified transaction from the wallet. Meant for use with pruned wallets and as a companion to importprunedfunds. This will affect wallet balances.\n",
|
||||
|
@ -423,10 +413,8 @@ UniValue removeprunedfunds(const JSONRPCRequest& request)
|
|||
UniValue importpubkey(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"importpubkey",
|
||||
"\nAdds a public key (in hex) that can be watched as if it were in your wallet but cannot be used to spend. Requires a new wallet backup.\n"
|
||||
|
@ -510,10 +498,8 @@ UniValue importpubkey(const JSONRPCRequest& request)
|
|||
UniValue importwallet(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"importwallet",
|
||||
"\nImports keys from a wallet dump file (see dumpwallet). Requires a new wallet backup to include imported keys.\n"
|
||||
|
@ -668,10 +654,8 @@ UniValue importwallet(const JSONRPCRequest& request)
|
|||
UniValue dumpprivkey(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"dumpprivkey",
|
||||
"\nReveals the private key corresponding to 'address'.\n"
|
||||
|
@ -715,9 +699,7 @@ UniValue dumpprivkey(const JSONRPCRequest& request)
|
|||
UniValue dumpwallet(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!EnsureWalletIsAvailable(pwallet.get(), request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
if (!pwallet) return NullUniValue;
|
||||
|
||||
RPCHelpMan{"dumpwallet",
|
||||
"\nDumps all wallet keys in a human-readable format to a server-side file. This does not allow overwriting existing files.\n"
|
||||
|
@ -1260,10 +1242,8 @@ static int64_t GetImportTimestamp(const UniValue& data, int64_t now)
|
|||
UniValue importmulti(const JSONRPCRequest& mainRequest)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(mainRequest);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
if (!EnsureWalletIsAvailable(pwallet, mainRequest.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"importmulti",
|
||||
"\nImport addresses/scripts (with private or public keys, redeem script (P2SH)), optionally rescanning the blockchain from the earliest creation time of the imported scripts. Requires a new wallet backup.\n"
|
||||
|
@ -1588,10 +1568,8 @@ static UniValue ProcessDescriptorImport(CWallet * const pwallet, const UniValue&
|
|||
UniValue importdescriptors(const JSONRPCRequest& main_request) {
|
||||
// Acquire the wallet
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(main_request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
if (!EnsureWalletIsAvailable(pwallet, main_request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"importdescriptors",
|
||||
"\nImport descriptors. This will trigger a rescan of the blockchain based on the earliest timestamp of all descriptors being imported. Requires a new wallet backup.\n"
|
||||
|
|
|
@ -101,13 +101,12 @@ std::shared_ptr<CWallet> GetWalletForJSONRPCRequest(const JSONRPCRequest& reques
|
|||
}
|
||||
|
||||
std::vector<std::shared_ptr<CWallet>> wallets = GetWallets();
|
||||
return wallets.size() == 1 || (request.fHelp && wallets.size() > 0) ? wallets[0] : nullptr;
|
||||
}
|
||||
if (wallets.size() == 1 || (request.fHelp && wallets.size() > 0)) {
|
||||
return wallets[0];
|
||||
}
|
||||
|
||||
if (request.fHelp) return nullptr;
|
||||
|
||||
bool EnsureWalletIsAvailable(const CWallet* pwallet, bool avoidException)
|
||||
{
|
||||
if (pwallet) return true;
|
||||
if (avoidException) return false;
|
||||
if (!HasWallets()) {
|
||||
throw JSONRPCError(
|
||||
RPC_METHOD_NOT_FOUND, "Method not found (wallet method is disabled because no wallet is loaded)");
|
||||
|
@ -196,12 +195,9 @@ static std::string LabelFromValue(const UniValue& value)
|
|||
static UniValue getnewaddress(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"getnewaddress",
|
||||
"\nReturns a new Bitcoin address for receiving payments.\n"
|
||||
"If 'label' is specified, it is added to the address book \n"
|
||||
|
@ -249,12 +245,9 @@ static UniValue getnewaddress(const JSONRPCRequest& request)
|
|||
static UniValue getrawchangeaddress(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"getrawchangeaddress",
|
||||
"\nReturns a new Bitcoin address, for receiving change.\n"
|
||||
"This is for use with raw transactions, NOT normal use.\n",
|
||||
|
@ -295,12 +288,9 @@ static UniValue getrawchangeaddress(const JSONRPCRequest& request)
|
|||
static UniValue setlabel(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"setlabel",
|
||||
"\nSets the label associated with the given address.\n",
|
||||
{
|
||||
|
@ -367,12 +357,9 @@ static CTransactionRef SendMoney(CWallet* const pwallet, const CTxDestination& a
|
|||
static UniValue sendtoaddress(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"sendtoaddress",
|
||||
"\nSend an amount to a given address." +
|
||||
HELP_REQUIRING_PASSPHRASE,
|
||||
|
@ -462,12 +449,9 @@ static UniValue sendtoaddress(const JSONRPCRequest& request)
|
|||
static UniValue listaddressgroupings(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"listaddressgroupings",
|
||||
"\nLists groups of addresses which have had their common ownership\n"
|
||||
"made public by common use as inputs or as the resulting change\n"
|
||||
|
@ -524,12 +508,9 @@ static UniValue listaddressgroupings(const JSONRPCRequest& request)
|
|||
static UniValue signmessage(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"signmessage",
|
||||
"\nSign a message with the private key of an address" +
|
||||
HELP_REQUIRING_PASSPHRASE,
|
||||
|
@ -629,12 +610,9 @@ static CAmount GetReceived(const CWallet& wallet, const UniValue& params, bool b
|
|||
static UniValue getreceivedbyaddress(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"getreceivedbyaddress",
|
||||
"\nReturns the total amount received by the given address in transactions with at least minconf confirmations.\n",
|
||||
{
|
||||
|
@ -669,12 +647,9 @@ static UniValue getreceivedbyaddress(const JSONRPCRequest& request)
|
|||
static UniValue getreceivedbylabel(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"getreceivedbylabel",
|
||||
"\nReturns the total amount received by addresses with <label> in transactions with at least [minconf] confirmations.\n",
|
||||
{
|
||||
|
@ -709,12 +684,9 @@ static UniValue getreceivedbylabel(const JSONRPCRequest& request)
|
|||
static UniValue getbalance(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"getbalance",
|
||||
"\nReturns the total available balance.\n"
|
||||
"The available balance is what the wallet considers currently spendable, and is\n"
|
||||
|
@ -766,12 +738,9 @@ static UniValue getbalance(const JSONRPCRequest& request)
|
|||
static UniValue getunconfirmedbalance(const JSONRPCRequest &request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"getunconfirmedbalance",
|
||||
"DEPRECATED\nIdentical to getbalances().mine.untrusted_pending\n",
|
||||
{},
|
||||
|
@ -792,12 +761,9 @@ static UniValue getunconfirmedbalance(const JSONRPCRequest &request)
|
|||
static UniValue sendmany(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"sendmany",
|
||||
"\nSend multiple times. Amounts are double-precision floating point numbers." +
|
||||
HELP_REQUIRING_PASSPHRASE,
|
||||
|
@ -926,12 +892,9 @@ static UniValue sendmany(const JSONRPCRequest& request)
|
|||
static UniValue addmultisigaddress(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"addmultisigaddress",
|
||||
"\nAdd an nrequired-to-sign multisignature address to the wallet. Requires a new wallet backup.\n"
|
||||
"Each key is a Bitcoin address or hex-encoded public key.\n"
|
||||
|
@ -1168,12 +1131,9 @@ static UniValue ListReceived(const CWallet* const pwallet, const UniValue& param
|
|||
static UniValue listreceivedbyaddress(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"listreceivedbyaddress",
|
||||
"\nList balances by receiving address.\n",
|
||||
{
|
||||
|
@ -1219,12 +1179,9 @@ static UniValue listreceivedbyaddress(const JSONRPCRequest& request)
|
|||
static UniValue listreceivedbylabel(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"listreceivedbylabel",
|
||||
"\nList received transactions by label.\n",
|
||||
{
|
||||
|
@ -1380,12 +1337,9 @@ static const std::vector<RPCResult> TransactionDescriptionString()
|
|||
UniValue listtransactions(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"listtransactions",
|
||||
"\nIf a label name is provided, this will return only incoming transactions paying to addresses with the specified label.\n"
|
||||
"\nReturns up to 'count' most recent transactions skipping the first 'from' transactions.\n",
|
||||
|
@ -1493,10 +1447,7 @@ UniValue listtransactions(const JSONRPCRequest& request)
|
|||
static UniValue listsinceblock(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet.get(), request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
if (!pwallet) return NullUniValue;
|
||||
|
||||
RPCHelpMan{"listsinceblock",
|
||||
"\nGet all transactions in blocks since block [blockhash], or all transactions if omitted.\n"
|
||||
|
@ -1634,12 +1585,9 @@ static UniValue listsinceblock(const JSONRPCRequest& request)
|
|||
static UniValue gettransaction(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"gettransaction",
|
||||
"\nGet detailed information about in-wallet transaction <txid>\n",
|
||||
{
|
||||
|
@ -1747,12 +1695,9 @@ static UniValue gettransaction(const JSONRPCRequest& request)
|
|||
static UniValue abandontransaction(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"abandontransaction",
|
||||
"\nMark in-wallet transaction <txid> as abandoned\n"
|
||||
"This will mark this transaction and all its in-wallet descendants as abandoned which will allow\n"
|
||||
|
@ -1791,12 +1736,9 @@ static UniValue abandontransaction(const JSONRPCRequest& request)
|
|||
static UniValue backupwallet(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"backupwallet",
|
||||
"\nSafely copies current wallet file to destination, which can be a directory or a path with filename.\n",
|
||||
{
|
||||
|
@ -1827,12 +1769,9 @@ static UniValue backupwallet(const JSONRPCRequest& request)
|
|||
static UniValue keypoolrefill(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"keypoolrefill",
|
||||
"\nFills the keypool."+
|
||||
HELP_REQUIRING_PASSPHRASE,
|
||||
|
@ -1874,12 +1813,9 @@ static UniValue keypoolrefill(const JSONRPCRequest& request)
|
|||
static UniValue walletpassphrase(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"walletpassphrase",
|
||||
"\nStores the wallet decryption key in memory for 'timeout' seconds.\n"
|
||||
"This is needed prior to performing transactions related to private keys such as sending bitcoins\n"
|
||||
|
@ -1971,12 +1907,9 @@ static UniValue walletpassphrase(const JSONRPCRequest& request)
|
|||
static UniValue walletpassphrasechange(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"walletpassphrasechange",
|
||||
"\nChanges the wallet passphrase from 'oldpassphrase' to 'newpassphrase'.\n",
|
||||
{
|
||||
|
@ -2021,12 +1954,9 @@ static UniValue walletpassphrasechange(const JSONRPCRequest& request)
|
|||
static UniValue walletlock(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"walletlock",
|
||||
"\nRemoves the wallet encryption key from memory, locking the wallet.\n"
|
||||
"After calling this method, you will need to call walletpassphrase again\n"
|
||||
|
@ -2061,12 +1991,9 @@ static UniValue walletlock(const JSONRPCRequest& request)
|
|||
static UniValue encryptwallet(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"encryptwallet",
|
||||
"\nEncrypts the wallet with 'passphrase'. This is for first time encryption.\n"
|
||||
"After this, any calls that interact with private keys such as sending or signing \n"
|
||||
|
@ -2121,12 +2048,9 @@ static UniValue encryptwallet(const JSONRPCRequest& request)
|
|||
static UniValue lockunspent(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"lockunspent",
|
||||
"\nUpdates list of temporarily unspendable outputs.\n"
|
||||
"Temporarily lock (unlock=false) or unlock (unlock=true) specified transaction outputs.\n"
|
||||
|
@ -2247,12 +2171,9 @@ static UniValue lockunspent(const JSONRPCRequest& request)
|
|||
static UniValue listlockunspent(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"listlockunspent",
|
||||
"\nReturns list of temporarily unspendable outputs.\n"
|
||||
"See the lockunspent call to lock and unlock transactions for spending.\n",
|
||||
|
@ -2302,12 +2223,9 @@ static UniValue listlockunspent(const JSONRPCRequest& request)
|
|||
static UniValue settxfee(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"settxfee",
|
||||
"\nSet the transaction fee per kB for this wallet. Overrides the global -paytxfee command line parameter.\n"
|
||||
"Can be deactivated by passing 0 as the fee. In that case automatic fee selection will be used by default.\n",
|
||||
|
@ -2345,9 +2263,7 @@ static UniValue settxfee(const JSONRPCRequest& request)
|
|||
static UniValue getbalances(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const rpc_wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!EnsureWalletIsAvailable(rpc_wallet.get(), request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
if (!rpc_wallet) return NullUniValue;
|
||||
CWallet& wallet = *rpc_wallet;
|
||||
|
||||
RPCHelpMan{
|
||||
|
@ -2412,12 +2328,9 @@ static UniValue getbalances(const JSONRPCRequest& request)
|
|||
static UniValue getwalletinfo(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"getwalletinfo",
|
||||
"Returns an object containing various wallet state info.\n",
|
||||
{},
|
||||
|
@ -2560,12 +2473,7 @@ static UniValue listwallets(const JSONRPCRequest& request)
|
|||
UniValue obj(UniValue::VARR);
|
||||
|
||||
for (const std::shared_ptr<CWallet>& wallet : GetWallets()) {
|
||||
if (!EnsureWalletIsAvailable(wallet.get(), request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
LOCK(wallet->cs_wallet);
|
||||
|
||||
obj.push_back(wallet->GetName());
|
||||
}
|
||||
|
||||
|
@ -2622,12 +2530,9 @@ static UniValue loadwallet(const JSONRPCRequest& request)
|
|||
static UniValue setwalletflag(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
std::string flags = "";
|
||||
for (auto& it : WALLET_FLAG_MAP)
|
||||
if (it.second & MUTABLE_WALLET_FLAGS)
|
||||
|
@ -2805,12 +2710,9 @@ static UniValue unloadwallet(const JSONRPCRequest& request)
|
|||
static UniValue listunspent(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{
|
||||
"listunspent",
|
||||
"\nReturns array of unspent transaction outputs\n"
|
||||
|
@ -3138,12 +3040,9 @@ void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& f
|
|||
static UniValue fundrawtransaction(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"fundrawtransaction",
|
||||
"\nAdd inputs to a transaction until it has enough in value to meet its out value.\n"
|
||||
"This will not modify existing inputs, and will add at most one change output to the outputs.\n"
|
||||
|
@ -3238,12 +3137,9 @@ static UniValue fundrawtransaction(const JSONRPCRequest& request)
|
|||
UniValue signrawtransactionwithwallet(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"signrawtransactionwithwallet",
|
||||
"\nSign inputs for raw transaction (serialized, hex-encoded).\n"
|
||||
"The second optional argument (may be null) is an array of previous transaction outputs that\n"
|
||||
|
@ -3332,12 +3228,9 @@ UniValue signrawtransactionwithwallet(const JSONRPCRequest& request)
|
|||
static UniValue bumpfee(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp))
|
||||
return NullUniValue;
|
||||
|
||||
RPCHelpMan{"bumpfee",
|
||||
"\nBumps the fee of an opt-in-RBF transaction T, replacing it with a new transaction B.\n"
|
||||
"An opt-in RBF transaction with the given txid must be in the wallet.\n"
|
||||
|
@ -3504,12 +3397,9 @@ static UniValue bumpfee(const JSONRPCRequest& request)
|
|||
UniValue rescanblockchain(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"rescanblockchain",
|
||||
"\nRescan the local blockchain for wallet related transactions.\n"
|
||||
"Note: Use \"getwalletinfo\" to query the scanning progress.\n",
|
||||
|
@ -3703,12 +3593,9 @@ static UniValue AddressBookDataToJSON(const CAddressBookData& data, const bool v
|
|||
UniValue getaddressinfo(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"getaddressinfo",
|
||||
"\nReturn information about the given bitcoin address.\n"
|
||||
"Some of the information will only be present if the address is in the active wallet.\n",
|
||||
|
@ -3846,12 +3733,9 @@ UniValue getaddressinfo(const JSONRPCRequest& request)
|
|||
static UniValue getaddressesbylabel(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"getaddressesbylabel",
|
||||
"\nReturns the list of addresses assigned the specified label.\n",
|
||||
{
|
||||
|
@ -3906,12 +3790,9 @@ static UniValue getaddressesbylabel(const JSONRPCRequest& request)
|
|||
static UniValue listlabels(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"listlabels",
|
||||
"\nReturns the list of all labels, or labels that are assigned to addresses with a specific purpose.\n",
|
||||
{
|
||||
|
@ -3962,12 +3843,9 @@ static UniValue listlabels(const JSONRPCRequest& request)
|
|||
UniValue sethdseed(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"sethdseed",
|
||||
"\nSet or generate a new HD wallet seed. Non-HD wallets will not be upgraded to being a HD wallet. Wallets that are already\n"
|
||||
"HD will have a new HD seed set so that new keys added to the keypool will be derived from this new seed.\n"
|
||||
|
@ -4035,12 +3913,9 @@ UniValue sethdseed(const JSONRPCRequest& request)
|
|||
UniValue walletprocesspsbt(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
const CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"walletprocesspsbt",
|
||||
"\nUpdate a PSBT with input information from our wallet and then sign inputs\n"
|
||||
"that we can sign for." +
|
||||
|
@ -4102,12 +3977,9 @@ UniValue walletprocesspsbt(const JSONRPCRequest& request)
|
|||
UniValue walletcreatefundedpsbt(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"walletcreatefundedpsbt",
|
||||
"\nCreates and funds a transaction in the Partially Signed Transaction format. Inputs will be added if supplied inputs are not enough\n"
|
||||
"Implements the Creator and Updater roles.\n",
|
||||
|
@ -4227,12 +4099,9 @@ UniValue walletcreatefundedpsbt(const JSONRPCRequest& request)
|
|||
static UniValue upgradewallet(const JSONRPCRequest& request)
|
||||
{
|
||||
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
|
||||
if (!wallet) return NullUniValue;
|
||||
CWallet* const pwallet = wallet.get();
|
||||
|
||||
if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
RPCHelpMan{"upgradewallet",
|
||||
"\nUpgrade the wallet. Upgrades to the latest version if no version number is specified\n"
|
||||
"New keys may be generated and a new wallet backup will need to be made.",
|
||||
|
|
|
@ -31,7 +31,6 @@ Span<const CRPCCommand> GetWalletRPCCommands();
|
|||
std::shared_ptr<CWallet> GetWalletForJSONRPCRequest(const JSONRPCRequest& request);
|
||||
|
||||
void EnsureWalletIsUnlocked(const CWallet*);
|
||||
bool EnsureWalletIsAvailable(const CWallet*, bool avoidException);
|
||||
WalletContext& EnsureWalletContext(const util::Ref& context);
|
||||
LegacyScriptPubKeyMan& EnsureLegacyScriptPubKeyMan(CWallet& wallet, bool also_create = false);
|
||||
|
||||
|
|
Loading…
Reference in a new issue