From f17a4d1c4ddce6935a353004898fb4e8618a213e Mon Sep 17 00:00:00 2001 From: Fabian Jahr Date: Tue, 2 Jun 2020 23:56:28 +0200 Subject: rpc: Add hash_type NONE to gettxoutsetinfo --- src/node/coinstats.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/node/coinstats.cpp') diff --git a/src/node/coinstats.cpp b/src/node/coinstats.cpp index cc5e3cb62..fb46ea173 100644 --- a/src/node/coinstats.cpp +++ b/src/node/coinstats.cpp @@ -41,6 +41,17 @@ static void ApplyStats(CCoinsStats& stats, CHashWriter& ss, const uint256& hash, ss << VARINT(0u); } +static void ApplyStats(CCoinsStats& stats, std::nullptr_t, const uint256& hash, const std::map& outputs) +{ + assert(!outputs.empty()); + stats.nTransactions++; + for (const auto& output : outputs) { + stats.nTransactionOutputs++; + stats.nTotalAmount += output.second.out.nValue; + stats.nBogoSize += GetBogoSize(output.second.out.scriptPubKey); + } +} + //! Calculate statistics about the unspent transaction output set template static bool GetUTXOStats(CCoinsView* view, CCoinsStats& stats, T hash_obj, const std::function& interruption_point) @@ -93,6 +104,9 @@ bool GetUTXOStats(CCoinsView* view, CCoinsStats& stats, CoinStatsHashType hash_t CHashWriter ss(SER_GETHASH, PROTOCOL_VERSION); return GetUTXOStats(view, stats, ss, interruption_point); } + case(CoinStatsHashType::NONE): { + return GetUTXOStats(view, stats, nullptr, interruption_point); + } } // no default case, so the compiler can warn about missing cases assert(false); } @@ -102,8 +116,10 @@ static void PrepareHash(CHashWriter& ss, CCoinsStats& stats) { ss << stats.hashBlock; } +static void PrepareHash(std::nullptr_t, CCoinsStats& stats) {} static void FinalizeHash(CHashWriter& ss, CCoinsStats& stats) { stats.hashSerialized = ss.GetHash(); } +static void FinalizeHash(std::nullptr_t, CCoinsStats& stats) {} -- cgit v1.2.3