rpc: Improve scantxoutset response and help message

This commit is contained in:
João Barbosa 2019-06-25 17:02:59 +01:00
parent 332c6134bb
commit fc0c410d6e

View file

@ -2199,17 +2199,21 @@ UniValue scantxoutset(const JSONRPCRequest& request)
}, },
RPCResult{ RPCResult{
"{\n" "{\n"
" \"success\": true|false, (boolean) Whether the scan was completed\n"
" \"txouts\": n, (numeric) The number of unspent transaction outputs scanned\n"
" \"height\": n, (numeric) The current block height (index)\n"
" \"bestblock\": \"hex\", (string) The hash of the block at the tip of the chain\n"
" \"unspents\": [\n" " \"unspents\": [\n"
" {\n" " {\n"
" \"txid\" : \"transactionid\", (string) The transaction id\n" " \"txid\": \"hash\", (string) The transaction id\n"
" \"vout\": n, (numeric) the vout value\n" " \"vout\": n, (numeric) The vout value\n"
" \"scriptPubKey\" : \"script\", (string) the script key\n" " \"scriptPubKey\": \"script\", (string) The script key\n"
" \"desc\" : \"descriptor\", (string) A specialized descriptor for the matched scriptPubKey\n" " \"desc\": \"descriptor\", (string) A specialized descriptor for the matched scriptPubKey\n"
" \"amount\" : x.xxx, (numeric) The total amount in " + CURRENCY_UNIT + " of the unspent output\n" " \"amount\": x.xxx, (numeric) The total amount in " + CURRENCY_UNIT + " of the unspent output\n"
" \"height\" : n, (numeric) Height of the unspent transaction output\n" " \"height\": n, (numeric) Height of the unspent transaction output\n"
" }\n" " }\n"
" ,...], \n" " ,...],\n"
" \"total_amount\" : x.xxx, (numeric) The total amount of all found unspent outputs in " + CURRENCY_UNIT + "\n" " \"total_amount\": x.xxx, (numeric) The total amount of all found unspent outputs in " + CURRENCY_UNIT + "\n"
"]\n" "]\n"
}, },
RPCExamples{""}, RPCExamples{""},
@ -2293,15 +2297,20 @@ UniValue scantxoutset(const JSONRPCRequest& request)
g_scan_progress = 0; g_scan_progress = 0;
int64_t count = 0; int64_t count = 0;
std::unique_ptr<CCoinsViewCursor> pcursor; std::unique_ptr<CCoinsViewCursor> pcursor;
CBlockIndex* tip;
{ {
LOCK(cs_main); LOCK(cs_main);
::ChainstateActive().ForceFlushStateToDisk(); ::ChainstateActive().ForceFlushStateToDisk();
pcursor = std::unique_ptr<CCoinsViewCursor>(pcoinsdbview->Cursor()); pcursor = std::unique_ptr<CCoinsViewCursor>(pcoinsdbview->Cursor());
assert(pcursor); assert(pcursor);
tip = ::ChainActive().Tip();
assert(tip);
} }
bool res = FindScriptPubKey(g_scan_progress, g_should_abort_scan, count, pcursor.get(), needles, coins); bool res = FindScriptPubKey(g_scan_progress, g_should_abort_scan, count, pcursor.get(), needles, coins);
result.pushKV("success", res); result.pushKV("success", res);
result.pushKV("searched_items", count); result.pushKV("txouts", count);
result.pushKV("height", tip->nHeight);
result.pushKV("bestblock", tip->GetBlockHash().GetHex());
for (const auto& it : coins) { for (const auto& it : coins) {
const COutPoint& outpoint = it.first; const COutPoint& outpoint = it.first;