One type for all nIn vars
[novacoin.git] / src / wallet.cpp
index b87b9f8..b160e64 100644 (file)
@@ -1032,38 +1032,41 @@ bool CWallet::IsFromMe(const CTransaction& tx) const
 
 int64_t CWallet::GetDebit(const CTransaction& tx, const isminefilter& filter) const
 {
-    int64_t nDebit = 0;
+    CBigNum nDebit = 0;
     for(const CTxIn& txin :  tx.vin)
     {
-        nDebit += GetDebit(txin, filter);
-        if (!MoneyRange(nDebit))
+        auto nValue = GetDebit(txin, filter);
+        nDebit += nValue;
+        if (!MoneyRange(nValue) || !MoneyRange(nDebit))
             throw runtime_error("CWallet::GetDebit() : value out of range");
     }
-    return nDebit;
+    return nDebit.getint64();
 }
 
 int64_t CWallet::GetCredit(const CTransaction& tx, const isminefilter& filter) const
 {
-    int64_t nCredit = 0;
+    CBigNum nCredit = 0;
     for(const CTxOut& txout :  tx.vout)
     {
-        nCredit += GetCredit(txout, filter);
-        if (!MoneyRange(nCredit))
+        auto nValue = GetCredit(txout, filter);
+        nCredit += nValue;
+        if (!MoneyRange(nValue) || !MoneyRange(nCredit))
             throw runtime_error("CWallet::GetCredit() : value out of range");
     }
-    return nCredit;
+    return nCredit.getint64();
 }
 
 int64_t CWallet::GetChange(const CTransaction& tx) const
 {
-    int64_t nChange = 0;
+    CBigNum nChange = 0;
     for(const CTxOut& txout :  tx.vout)
     {
-        nChange += GetChange(txout);
-        if (!MoneyRange(nChange))
+        int64_t nValue = GetChange(txout);
+        nChange += nValue;
+        if (!MoneyRange(nValue) || !MoneyRange(nChange))
             throw runtime_error("CWallet::GetChange() : value out of range");
     }
-    return nChange;
+    return nChange.getint64();
 }
 
 int64_t CWalletTx::GetTxTime() const
@@ -1254,22 +1257,23 @@ int64_t CWalletTx::GetAvailableCredit(bool fUseCache) const
             return nAvailableCreditCached;
     }
 
-    int64_t nCredit = 0;
-    for (unsigned int i = 0; i < vout.size(); i++)
+    CBigNum nCredit = 0;
+    for (uint32_t i = 0; i < vout.size(); i++)
     {
         if (!IsSpent(i))
         {
             const CTxOut &txout = vout[i];
-            nCredit += pwallet->GetCredit(txout, MINE_SPENDABLE);
-            if (!MoneyRange(nCredit))
+            int64_t nValue = pwallet->GetCredit(txout, MINE_SPENDABLE);
+            nCredit += nValue;
+            if (!MoneyRange(nValue) || !MoneyRange(nCredit))
                 throw runtime_error("CWalletTx::GetAvailableCredit() : value out of range");
         }
     }
 
-    nAvailableCreditCached = nCredit;
+    nAvailableCreditCached = nCredit.getint64();
     fAvailableCreditCached = true;
 
-    return nCredit;
+    return nCredit.getint64();
 }
 
 int64_t CWalletTx::GetAvailableWatchCredit(bool fUseCache) const
@@ -1283,22 +1287,23 @@ int64_t CWalletTx::GetAvailableWatchCredit(bool fUseCache) const
             return nAvailableWatchCreditCached;
     }
 
-    int64_t nCredit = 0;
+    CBigNum nCredit = 0;
     for (unsigned int i = 0; i < vout.size(); i++)
     {
         if (!IsSpent(i))
         {
             const CTxOut &txout = vout[i];
-            nCredit += pwallet->GetCredit(txout, MINE_WATCH_ONLY);
-            if (!MoneyRange(nCredit))
+            int64_t nValue = pwallet->GetCredit(txout, MINE_WATCH_ONLY);
+            nCredit += nValue;
+            if (!MoneyRange(nValue) || !MoneyRange(nCredit))
                 throw runtime_error("CWalletTx::GetAvailableCredit() : value out of range");
         }
     }
 
-    nAvailableWatchCreditCached = nCredit;
+    nAvailableWatchCreditCached = nCredit.getint64();
     fAvailableWatchCreditCached = true;
 
-    return nCredit;
+    return nCredit.getint64();
 }
 
 int64_t CWalletTx::GetChange() const
@@ -2162,7 +2167,7 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, int64_t> >& vecSend,
                     wtxNew.vin.push_back(CTxIn(coin.first->GetHash(),coin.second));
 
                 // Sign
-                int nIn = 0;
+                uint32_t nIn = 0;
                 for(const auto& coin : setCoins)
                     if (!SignSignature(*this, *coin.first, wtxNew, nIn++))
                         return false;
@@ -2322,7 +2327,7 @@ bool CWallet::MergeCoins(const int64_t& nAmount, const int64_t& nMinValue, const
         if (wtxNew.vout[0].nValue <= 0)
             return false;
 
-        for (unsigned int i = 0; i < wtxNew.vin.size(); i++) {
+        for (uint32_t i = 0; i < wtxNew.vin.size(); i++) {
             const CWalletTx *txin = vwtxPrev[i];
 
             // Sign all scripts again
@@ -2499,7 +2504,7 @@ bool CWallet::CreateCoinStake(uint256 &hashTx, uint32_t nOut, uint32_t nGenerati
         }
 
         // Sign
-        int nIn = 0;
+        uint32_t nIn = 0;
         for(const CWalletTx* pcoin :  vwtxPrev)
         {
             if (!SignSignature(*this, *pcoin, txNew, nIn++))
@@ -2507,7 +2512,7 @@ bool CWallet::CreateCoinStake(uint256 &hashTx, uint32_t nOut, uint32_t nGenerati
         }
 
         // Limit size
-        unsigned int nBytes = ::GetSerializeSize(txNew, SER_NETWORK, PROTOCOL_VERSION);
+        auto nBytes = ::GetSerializeSize(txNew, SER_NETWORK, PROTOCOL_VERSION);
         if (nBytes >= MAX_BLOCK_SIZE_GEN/5)
             return error("CreateCoinStake : exceeded coinstake size limit\n");