|
|
|
@ -1093,14 +1093,14 @@ static RPCHelpMan gettxoutsetinfo()
|
|
|
|
|
{
|
|
|
|
|
UniValue ret(UniValue::VOBJ);
|
|
|
|
|
|
|
|
|
|
CCoinsStats stats;
|
|
|
|
|
const CoinStatsHashType hash_type{request.params[0].isNull() ? CoinStatsHashType::HASH_SERIALIZED : ParseHashType(request.params[0].get_str())};
|
|
|
|
|
CCoinsStats stats{hash_type};
|
|
|
|
|
|
|
|
|
|
NodeContext& node = EnsureAnyNodeContext(request.context);
|
|
|
|
|
ChainstateManager& chainman = EnsureChainman(node);
|
|
|
|
|
CChainState& active_chainstate = chainman.ActiveChainstate();
|
|
|
|
|
active_chainstate.ForceFlushStateToDisk();
|
|
|
|
|
|
|
|
|
|
const CoinStatsHashType hash_type{request.params[0].isNull() ? CoinStatsHashType::HASH_SERIALIZED : ParseHashType(request.params[0].get_str())};
|
|
|
|
|
|
|
|
|
|
CCoinsView* coins_view;
|
|
|
|
|
BlockManager* blockman;
|
|
|
|
|
{
|
|
|
|
@ -1108,7 +1108,8 @@ static RPCHelpMan gettxoutsetinfo()
|
|
|
|
|
coins_view = &active_chainstate.CoinsDB();
|
|
|
|
|
blockman = &active_chainstate.m_blockman;
|
|
|
|
|
}
|
|
|
|
|
if (GetUTXOStats(coins_view, *blockman, stats, hash_type, node.rpc_interruption_point)) {
|
|
|
|
|
|
|
|
|
|
if (GetUTXOStats(coins_view, *blockman, stats, node.rpc_interruption_point)) {
|
|
|
|
|
ret.pushKV("height", (int64_t)stats.nHeight);
|
|
|
|
|
ret.pushKV("bestblock", stats.hashBlock.GetHex());
|
|
|
|
|
ret.pushKV("transactions", (int64_t)stats.nTransactions);
|
|
|
|
@ -2491,7 +2492,7 @@ static RPCHelpMan dumptxoutset()
|
|
|
|
|
UniValue CreateUTXOSnapshot(NodeContext& node, CChainState& chainstate, CAutoFile& afile)
|
|
|
|
|
{
|
|
|
|
|
std::unique_ptr<CCoinsViewCursor> pcursor;
|
|
|
|
|
CCoinsStats stats;
|
|
|
|
|
CCoinsStats stats{CoinStatsHashType::NONE};
|
|
|
|
|
CBlockIndex* tip;
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
@ -2511,7 +2512,7 @@ UniValue CreateUTXOSnapshot(NodeContext& node, CChainState& chainstate, CAutoFil
|
|
|
|
|
|
|
|
|
|
chainstate.ForceFlushStateToDisk();
|
|
|
|
|
|
|
|
|
|
if (!GetUTXOStats(&chainstate.CoinsDB(), chainstate.m_blockman, stats, CoinStatsHashType::NONE, node.rpc_interruption_point)) {
|
|
|
|
|
if (!GetUTXOStats(&chainstate.CoinsDB(), chainstate.m_blockman, stats, node.rpc_interruption_point)) {
|
|
|
|
|
throw JSONRPCError(RPC_INTERNAL_ERROR, "Unable to read UTXO set");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|