mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 12:02:48 +01:00
Merge #16285: rpc: Improve scantxoutset response and help message
bdd6a4fd5da44c2575be9195ecb4213a13e74511 qa: Check scantxoutset result against gettxoutsetinfo (João Barbosa) fc0c410d6e19dd8e3abbc9b0fc13c836e6678750 rpc: Improve scantxoutset response and help message (João Barbosa) Pull request description: The new response keys `height` and `bestblock` allow the client to know at what point the scan took place. The help message now has all the response keys (`result` and `txouts` were missing) and it's improved a bit. Note that `searched_items` key is renamed to `txouts`, considering `scantxoutset` is marked experimental. ACKs for top commit: laanwj: ACK bdd6a4fd5da44c2575be9195ecb4213a13e74511 Tree-SHA512: 6bb7c3464b19857b756b8bc491ab7c58b0d948aad8c005b26ed27c55a1278f5639217e11a315bb505b4f44ebe86f413068c1e539c8a5f7a4007735586cc6443c
This commit is contained in:
parent
c1c1b83fd9
commit
c80e6c1ce2
@ -2496,11 +2496,15 @@ UniValue scantxoutset(const JSONRPCRequest& request)
|
||||
},
|
||||
RPCResult{
|
||||
"{\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"
|
||||
" {\n"
|
||||
" \"txid\" : \"transactionid\", (string) The transaction id\n"
|
||||
" \"vout\": n, (numeric) the vout value\n"
|
||||
" \"scriptPubKey\" : \"script\", (string) the script key\n"
|
||||
" \"txid\": \"hash\", (string) The transaction id\n"
|
||||
" \"vout\": n, (numeric) The vout value\n"
|
||||
" \"scriptPubKey\": \"script\", (string) The script key\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"
|
||||
" \"height\": n, (numeric) Height of the unspent transaction output\n"
|
||||
@ -2590,15 +2594,20 @@ UniValue scantxoutset(const JSONRPCRequest& request)
|
||||
g_scan_progress = 0;
|
||||
int64_t count = 0;
|
||||
std::unique_ptr<CCoinsViewCursor> pcursor;
|
||||
CBlockIndex* tip;
|
||||
{
|
||||
LOCK(cs_main);
|
||||
::ChainstateActive().ForceFlushStateToDisk();
|
||||
pcursor = std::unique_ptr<CCoinsViewCursor>(::ChainstateActive().CoinsDB().Cursor());
|
||||
assert(pcursor);
|
||||
tip = ::ChainActive().Tip();
|
||||
assert(tip);
|
||||
}
|
||||
bool res = FindScriptPubKey(g_scan_progress, g_should_abort_scan, count, pcursor.get(), needles, coins);
|
||||
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) {
|
||||
const COutPoint& outpoint = it.first;
|
||||
|
@ -57,6 +57,13 @@ class ScantxoutsetTest(BitcoinTestFramework):
|
||||
self.start_node(0)
|
||||
self.nodes[0].generate(110)
|
||||
|
||||
scan = self.nodes[0].scantxoutset("start", [])
|
||||
info = self.nodes[0].gettxoutsetinfo()
|
||||
assert_equal(scan['success'], True)
|
||||
assert_equal(scan['height'], info['height'])
|
||||
assert_equal(scan['txouts'], info['txouts'])
|
||||
assert_equal(scan['bestblock'], info['bestblock'])
|
||||
|
||||
self.restart_node(0, ['-nowallet'])
|
||||
self.log.info("Test if we have found the non HD unspent outputs.")
|
||||
assert_equal(self.nodes[0].scantxoutset("start", [ "pkh(" + pubk1 + ")", "pkh(" + pubk2 + ")", "pkh(" + pubk3 + ")"])['total_amount'], Decimal("0.007"))
|
||||
|
Loading…
Reference in New Issue
Block a user