]> Git Repo - VerusCoin.git/blobdiff - src/txmempool.h
Testnet fixes
[VerusCoin.git] / src / txmempool.h
index 23f864adc8b68641880941f0ce66000b489b3da2..7eb3ef57bae004b25b766349959a4ea321ad1276 100644 (file)
@@ -8,6 +8,8 @@
 
 #include <list>
 
+#include "addressindex.h"
+#include "spentindex.h"
 #include "amount.h"
 #include "coins.h"
 #include "primitives/transaction.h"
@@ -19,6 +21,8 @@
 #include "boost/multi_index_container.hpp"
 #include "boost/multi_index/ordered_index.hpp"
 
+#include "pbaas/reserves.h"
+
 class CAutoFile;
 
 inline double AllowFreeThreshold()
@@ -43,22 +47,23 @@ class CTxMemPoolEntry
 {
 private:
     CTransaction tx;
-    CAmount nFee;              //!< Cached to avoid expensive parent-transaction lookups
-    size_t nTxSize;            //!< ... and avoid recomputing tx size
-    size_t nModSize;           //!< ... and modified size for priority
-    size_t nUsageSize;         //!< ... and total memory usage
-    CFeeRate feeRate;          //!< ... and fee per kB
-    int64_t nTime;             //!< Local time when entering the mempool
-    double dPriority;          //!< Priority when entering the mempool
-    unsigned int nHeight;      //!< Chain height when entering the mempool
-    bool hadNoDependencies;    //!< Not dependent on any other txs when it entered the mempool
-    bool spendsCoinbase;       //!< keep track of transactions that spend a coinbase
-    uint32_t nBranchId;        //!< Branch ID this transaction is known to commit to, cached for efficiency
+    CAmount nFee; //! Cached to avoid expensive parent-transaction lookups
+    size_t nTxSize; //! ... and avoid recomputing tx size
+    size_t nModSize; //! ... and modified size for priority
+    size_t nUsageSize; //! ... and total memory usage
+    CFeeRate feeRate; //! ... and fee per kB
+    int64_t nTime; //! Local time when entering the mempool
+    double dPriority; //! Priority when entering the mempool
+    unsigned int nHeight; //! Chain height when entering the mempool
+    bool hadNoDependencies; //! Not dependent on any other txs when it entered the mempool
+    bool spendsCoinbase; //! keep track of transactions that spend a coinbase
+    bool hasReserve; //! keep track of transactions that hold reserve currency
+    uint32_t nBranchId; //! Branch ID this transaction is known to commit to, cached for efficiency
 
 public:
     CTxMemPoolEntry(const CTransaction& _tx, const CAmount& _nFee,
                     int64_t _nTime, double _dPriority, unsigned int _nHeight,
-                    bool poolHasNoInputsOf, bool spendsCoinbase, uint32_t nBranchId);
+                    bool poolHasNoInputsOf, bool spendsCoinbase, uint32_t nBranchId, bool hasreserve=false);
     CTxMemPoolEntry();
     CTxMemPoolEntry(const CTxMemPoolEntry& other);
 
@@ -140,6 +145,9 @@ private:
     std::map<uint256, const CTransaction*> mapSproutNullifiers;
     std::map<uint256, const CTransaction*> mapSaplingNullifiers;
 
+    std::map<uint256, std::pair<double, CAmount> > mapDeltas;
+    std::map<uint256, CReserveTransactionDescriptor> mapReserveTransactions;    // all reserve transactions in the mempool go here
+
     void checkNullifiers(ShieldedType type) const;
     
 public:
@@ -160,7 +168,6 @@ public:
     indexed_transaction_set mapTx;
 
 private:
-    // insightexplorer
     std::map<CMempoolAddressDeltaKey, CMempoolAddressDelta, CMempoolAddressDeltaKeyCompare> mapAddress;
     std::map<uint256, std::vector<CMempoolAddressDeltaKey> > mapAddressInserted;
     std::map<CSpentIndexKey, CSpentIndexValue, CSpentIndexKeyCompare> mapSpent;
@@ -168,7 +175,6 @@ private:
 
 public:
     std::map<COutPoint, CInPoint> mapNextTx;
-    std::map<uint256, std::pair<double, CAmount> > mapDeltas;
 
     CTxMemPool(const CFeeRate& _minRelayFee);
     ~CTxMemPool();
@@ -183,21 +189,17 @@ public:
     void setSanityCheck(double dFrequency = 1.0) { nCheckFrequency = static_cast<uint32_t>(dFrequency * 4294967295.0); }
 
     bool addUnchecked(const uint256& hash, const CTxMemPoolEntry &entry, bool fCurrentEstimate = true);
-
-    // START insightexplorer
     void addAddressIndex(const CTxMemPoolEntry &entry, const CCoinsViewCache &view);
-    void getAddressIndex(const std::vector<std::pair<uint160, int>>& addresses,
-                         std::vector<std::pair<CMempoolAddressDeltaKey, CMempoolAddressDelta>>& results);
-    void removeAddressIndex(const uint256& txhash);
+    bool getAddressIndex(const std::vector<std::pair<uint160, int> > &addresses, std::vector<std::pair<CMempoolAddressDeltaKey, CMempoolAddressDelta> > &results);
+    bool removeAddressIndex(const uint256 txhash);
 
     void addSpentIndex(const CTxMemPoolEntry &entry, const CCoinsViewCache &view);
     bool getSpentIndex(const CSpentIndexKey &key, CSpentIndexValue &value);
-    void removeSpentIndex(const uint256 txhash);
-    // END insightexplorer
-
+    bool removeSpentIndex(const uint256 txhash);
     void remove(const CTransaction &tx, std::list<CTransaction>& removed, bool fRecursive = false);
     void removeWithAnchor(const uint256 &invalidRoot, ShieldedType type);
     void removeForReorg(const CCoinsViewCache *pcoins, unsigned int nMemPoolHeight, int flags);
+    bool checkNameConflicts(const CTransaction &tx, std::list<CTransaction> &conflicting);
     void removeConflicts(const CTransaction &tx, std::list<CTransaction>& removed);
     void removeExpired(unsigned int nBlockHeight);
     void removeForBlock(const std::vector<CTransaction>& vtx, unsigned int nBlockHeight,
@@ -215,7 +217,9 @@ public:
     bool HasNoInputsOf(const CTransaction& tx) const;
 
     /** Affect CreateNewBlock prioritisation of transactions */
-    void PrioritiseTransaction(const uint256 hash, const std::string strHash, double dPriorityDelta, const CAmount& nFeeDelta);
+    void PrioritiseTransaction(const uint256 &hash, const std::string strHash, double dPriorityDelta, const CAmount& nFeeDelta);
+    bool PrioritiseReserveTransaction(const CReserveTransactionDescriptor &txDesc, const CCurrencyState &currencyState);
+    bool IsKnownReserveTransaction(const uint256 &hash, CReserveTransactionDescriptor &txDesc);  // know to be reserve transaction, get descriptor, update mempool
     void ApplyDeltas(const uint256 hash, double &dPriorityDelta, CAmount &nFeeDelta);
     void ClearPrioritisation(const uint256 hash);
 
This page took 0.026181 seconds and 4 git commands to generate.