From ae4dbe22bbe32f6a8d1f71db7ac2efa47badec67 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 12 Jul 2018 00:58:25 -1100 Subject: [PATCH] tx.GetJoinSplitValueOut() --- src/komodo_bitcoind.h | 2 +- src/primitives/transaction.cpp | 17 ++++++++++++++++- src/primitives/transaction.h | 2 ++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index e9bde8595..0293c0dd5 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -1539,7 +1539,7 @@ int64_t komodo_newcoins(int64_t *zfundsp,int32_t nHeight,CBlock *pblock) for (i=0; ivtx[i]; - zfunds += (tx.GetJoinSplitValueOut() - tx.GetJoinSplitValueIn()); + zfunds += (tx.GetJoinSplitValueIn() - tx.GetJoinSplitValueOut()); if ( (m= tx.vin.size()) > 0 ) { for (j=0; jvpub_new; - + if (!MoneyRange(it->vpub_new) || !MoneyRange(nValue)) throw std::runtime_error("CTransaction::GetJoinSplitValueIn(): value out of range"); } + + return nValue; +} +CAmount CTransaction::GetJoinSplitValueOut() const +{ + CAmount nValue = 0; + for (std::vector::const_iterator it(vjoinsplit.begin()); it != vjoinsplit.end(); ++it) + { + // NB: vpub_new "gives" money to the value pool just as inputs do + nValue += it->vpub_old; + + if (!MoneyRange(it->vpub_old) || !MoneyRange(nValue)) + throw std::runtime_error("CTransaction::GetJoinSplitValueOut(): value out of range"); + } + return nValue; } diff --git a/src/primitives/transaction.h b/src/primitives/transaction.h index 88ee9a312..e3615c120 100644 --- a/src/primitives/transaction.h +++ b/src/primitives/transaction.h @@ -445,6 +445,8 @@ public: // Return sum of JoinSplit vpub_new CAmount GetJoinSplitValueIn() const; + // Return sum of JoinSplit vpub_old + CAmount GetJoinSplitValueOut() const; // Compute priority, given priority of inputs and (optionally) tx size double ComputePriority(double dPriorityInputs, unsigned int nTxSize=0) const;