|
|
|
@ -2350,9 +2350,9 @@ UniValue listunspent(const JSONRPCRequest& request)
|
|
|
|
|
if (!EnsureWalletIsAvailable(request.fHelp))
|
|
|
|
|
return NullUniValue;
|
|
|
|
|
|
|
|
|
|
if (request.fHelp || request.params.size() > 3)
|
|
|
|
|
if (request.fHelp || request.params.size() > 4)
|
|
|
|
|
throw runtime_error(
|
|
|
|
|
"listunspent ( minconf maxconf [\"addresses\",...] )\n"
|
|
|
|
|
"listunspent ( minconf maxconf [\"addresses\",...] [include_unsafe] )\n"
|
|
|
|
|
"\nReturns array of unspent transaction outputs\n"
|
|
|
|
|
"with between minconf and maxconf (inclusive) confirmations.\n"
|
|
|
|
|
"Optionally filter to only include txouts paid to specified addresses.\n"
|
|
|
|
@ -2364,6 +2364,10 @@ UniValue listunspent(const JSONRPCRequest& request)
|
|
|
|
|
" \"address\" (string) bitcoin address\n"
|
|
|
|
|
" ,...\n"
|
|
|
|
|
" ]\n"
|
|
|
|
|
"4. include_unsafe (bool, optional, default=true) Include outputs that are not safe to spend\n"
|
|
|
|
|
" because they come from unconfirmed untrusted transactions or unconfirmed\n"
|
|
|
|
|
" replacement transactions (cases where we are less sure that a conflicting\n"
|
|
|
|
|
" transaction won't be mined).\n"
|
|
|
|
|
"\nResult\n"
|
|
|
|
|
"[ (array of json object)\n"
|
|
|
|
|
" {\n"
|
|
|
|
@ -2387,18 +2391,21 @@ UniValue listunspent(const JSONRPCRequest& request)
|
|
|
|
|
+ HelpExampleRpc("listunspent", "6, 9999999 \"[\\\"1PGFqEzfmQch1gKD3ra4k18PNj3tTUUSqg\\\",\\\"1LtvqCaApEdUGFkpKMM4MstjcaL4dKg8SP\\\"]\"")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
RPCTypeCheck(request.params, boost::assign::list_of(UniValue::VNUM)(UniValue::VNUM)(UniValue::VARR));
|
|
|
|
|
|
|
|
|
|
int nMinDepth = 1;
|
|
|
|
|
if (request.params.size() > 0)
|
|
|
|
|
if (request.params.size() > 0 && !request.params[0].isNull()) {
|
|
|
|
|
RPCTypeCheckArgument(request.params[0], UniValue::VNUM);
|
|
|
|
|
nMinDepth = request.params[0].get_int();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int nMaxDepth = 9999999;
|
|
|
|
|
if (request.params.size() > 1)
|
|
|
|
|
if (request.params.size() > 1 && !request.params[1].isNull()) {
|
|
|
|
|
RPCTypeCheckArgument(request.params[1], UniValue::VNUM);
|
|
|
|
|
nMaxDepth = request.params[1].get_int();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set<CBitcoinAddress> setAddress;
|
|
|
|
|
if (request.params.size() > 2) {
|
|
|
|
|
if (request.params.size() > 2 && !request.params[2].isNull()) {
|
|
|
|
|
RPCTypeCheckArgument(request.params[2], UniValue::VARR);
|
|
|
|
|
UniValue inputs = request.params[2].get_array();
|
|
|
|
|
for (unsigned int idx = 0; idx < inputs.size(); idx++) {
|
|
|
|
|
const UniValue& input = inputs[idx];
|
|
|
|
@ -2411,11 +2418,17 @@ UniValue listunspent(const JSONRPCRequest& request)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool include_unsafe = true;
|
|
|
|
|
if (request.params.size() > 3 && !request.params[3].isNull()) {
|
|
|
|
|
RPCTypeCheckArgument(request.params[3], UniValue::VBOOL);
|
|
|
|
|
include_unsafe = request.params[3].get_bool();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UniValue results(UniValue::VARR);
|
|
|
|
|
vector<COutput> vecOutputs;
|
|
|
|
|
assert(pwalletMain != NULL);
|
|
|
|
|
LOCK2(cs_main, pwalletMain->cs_wallet);
|
|
|
|
|
pwalletMain->AvailableCoins(vecOutputs, false, NULL, true);
|
|
|
|
|
pwalletMain->AvailableCoins(vecOutputs, !include_unsafe, NULL, true);
|
|
|
|
|
BOOST_FOREACH(const COutput& out, vecOutputs) {
|
|
|
|
|
if (out.nDepth < nMinDepth || out.nDepth > nMaxDepth)
|
|
|
|
|
continue;
|
|
|
|
@ -2629,7 +2642,7 @@ static const CRPCCommand commands[] =
|
|
|
|
|
{ "wallet", "listreceivedbyaddress", &listreceivedbyaddress, false, {"minconf","include_empty","include_watchonly"} },
|
|
|
|
|
{ "wallet", "listsinceblock", &listsinceblock, false, {"blockhash","target_confirmations","include_watchonly"} },
|
|
|
|
|
{ "wallet", "listtransactions", &listtransactions, false, {"account","count","skip","include_watchonly"} },
|
|
|
|
|
{ "wallet", "listunspent", &listunspent, false, {"minconf","maxconf","addresses"} },
|
|
|
|
|
{ "wallet", "listunspent", &listunspent, false, {"minconf","maxconf","addresses","include_unsafe"} },
|
|
|
|
|
{ "wallet", "lockunspent", &lockunspent, true, {"unlock","transactions"} },
|
|
|
|
|
{ "wallet", "move", &movecmd, false, {"fromaccount","toaccount","amount","minconf","comment"} },
|
|
|
|
|
{ "wallet", "sendfrom", &sendfrom, false, {"fromaccount","toaddress","amount","minconf","comment","comment_to"} },
|
|
|
|
|