change type for support queue and type stored in block undo for claim insertions

This commit is contained in:
Jimmy Kiselak 2015-12-31 02:51:09 -05:00
parent 4beb23eb2f
commit 1f9a22d62e
4 changed files with 118 additions and 120 deletions

View file

@ -255,17 +255,17 @@ bool CClaimTrie::haveSupport(const std::string& name, const COutPoint& outPoint)
bool CClaimTrie::haveClaimInQueue(const std::string& name, const COutPoint& outPoint, int& nValidAtHeight) const bool CClaimTrie::haveClaimInQueue(const std::string& name, const COutPoint& outPoint, int& nValidAtHeight) const
{ {
validHeightRowType nameRow; outPointHeightRowType nameRow;
if (!getQueueNameRow(name, nameRow)) if (!getQueueNameRow(name, nameRow))
{ {
return false; return false;
} }
validHeightRowType::const_iterator itNameRow; outPointHeightRowType::const_iterator itNameRow;
for (itNameRow = nameRow.begin(); itNameRow != nameRow.end(); ++itNameRow) for (itNameRow = nameRow.begin(); itNameRow != nameRow.end(); ++itNameRow)
{ {
if (itNameRow->outPoint == outPoint) if (itNameRow->outPoint == outPoint)
{ {
nValidAtHeight = itNameRow->nValidAtHeight; nValidAtHeight = itNameRow->nHeight;
break; break;
} }
} }
@ -294,17 +294,17 @@ bool CClaimTrie::haveClaimInQueue(const std::string& name, const COutPoint& outP
bool CClaimTrie::haveSupportInQueue(const std::string& name, const COutPoint& outPoint, int& nValidAtHeight) const bool CClaimTrie::haveSupportInQueue(const std::string& name, const COutPoint& outPoint, int& nValidAtHeight) const
{ {
std::vector<CSupportValue> nameRow; outPointHeightRowType nameRow;
if (!getSupportQueueNameRow(name, nameRow)) if (!getSupportQueueNameRow(name, nameRow))
{ {
return false; return false;
} }
std::vector<CSupportValue>::const_iterator itNameRow; outPointHeightRowType::const_iterator itNameRow;
for (itNameRow = nameRow.begin(); itNameRow != nameRow.end(); ++itNameRow) for (itNameRow = nameRow.begin(); itNameRow != nameRow.end(); ++itNameRow)
{ {
if (itNameRow->outPoint == outPoint) if (itNameRow->outPoint == outPoint)
{ {
nValidAtHeight = itNameRow->nValidAtHeight; nValidAtHeight = itNameRow->nHeight;
break; break;
} }
} }
@ -499,9 +499,9 @@ bool CClaimTrie::getQueueRow(int nHeight, claimQueueRowType& row) const
return db.Read(std::make_pair(CLAIM_QUEUE_ROW, nHeight), row); return db.Read(std::make_pair(CLAIM_QUEUE_ROW, nHeight), row);
} }
bool CClaimTrie::getQueueNameRow(const std::string& name, validHeightRowType& row) const bool CClaimTrie::getQueueNameRow(const std::string& name, outPointHeightRowType& row) const
{ {
claimQueueNamesType::const_iterator itQueueNameRow = dirtyQueueNameRows.find(name); nameOutPointHeightMapType::const_iterator itQueueNameRow = dirtyQueueNameRows.find(name);
if (itQueueNameRow != dirtyQueueNameRows.end()) if (itQueueNameRow != dirtyQueueNameRows.end())
{ {
row = itQueueNameRow->second; row = itQueueNameRow->second;
@ -535,14 +535,14 @@ void CClaimTrie::updateQueueRow(int nHeight, claimQueueRowType& row)
itQueueRow->second.swap(row); itQueueRow->second.swap(row);
} }
void CClaimTrie::updateQueueNameRow(const std::string& name, validHeightRowType& row) void CClaimTrie::updateQueueNameRow(const std::string& name, outPointHeightRowType& row)
{ {
claimQueueNamesType::iterator itQueueRow = dirtyQueueNameRows.find(name); nameOutPointHeightMapType::iterator itQueueRow = dirtyQueueNameRows.find(name);
if (itQueueRow == dirtyQueueNameRows.end()) if (itQueueRow == dirtyQueueNameRows.end())
{ {
validHeightRowType newRow; outPointHeightRowType newRow;
std::pair<claimQueueNamesType::iterator, bool> ret; std::pair<nameOutPointHeightMapType::iterator, bool> ret;
ret = dirtyQueueNameRows.insert(std::pair<std::string, validHeightRowType>(name, newRow)); ret = dirtyQueueNameRows.insert(std::pair<std::string, outPointHeightRowType>(name, newRow));
assert(ret.second); assert(ret.second);
itQueueRow = ret.first; itQueueRow = ret.first;
} }
@ -591,14 +591,14 @@ void CClaimTrie::updateSupportQueue(int nHeight, supportQueueRowType& row)
itQueueRow->second.swap(row); itQueueRow->second.swap(row);
} }
void CClaimTrie::updateSupportNameQueue(const std::string& name, std::vector<CSupportValue>& row) void CClaimTrie::updateSupportNameQueue(const std::string& name, outPointHeightRowType& row)
{ {
supportQueueNamesType::iterator itQueueRow = dirtySupportQueueNameRows.find(name); nameOutPointHeightMapType::iterator itQueueRow = dirtySupportQueueNameRows.find(name);
if (itQueueRow == dirtySupportQueueNameRows.end()) if (itQueueRow == dirtySupportQueueNameRows.end())
{ {
std::vector<CSupportValue> newRow; outPointHeightRowType newRow;
std::pair<supportQueueNamesType::iterator, bool> ret; std::pair<nameOutPointHeightMapType::iterator, bool> ret;
ret = dirtySupportQueueNameRows.insert(std::pair<std::string, std::vector<CSupportValue> >(name, newRow)); ret = dirtySupportQueueNameRows.insert(std::pair<std::string, outPointHeightRowType>(name, newRow));
assert(ret.second); assert(ret.second);
itQueueRow = ret.first; itQueueRow = ret.first;
} }
@ -641,9 +641,9 @@ bool CClaimTrie::getSupportQueueRow(int nHeight, supportQueueRowType& row) const
return db.Read(std::make_pair(SUPPORT_QUEUE_ROW, nHeight), row); return db.Read(std::make_pair(SUPPORT_QUEUE_ROW, nHeight), row);
} }
bool CClaimTrie::getSupportQueueNameRow(const std::string& name, std::vector<CSupportValue>& row) const bool CClaimTrie::getSupportQueueNameRow(const std::string& name, outPointHeightRowType& row) const
{ {
supportQueueNamesType::const_iterator itQueueNameRow = dirtySupportQueueNameRows.find(name); nameOutPointHeightMapType::const_iterator itQueueNameRow = dirtySupportQueueNameRows.find(name);
if (itQueueNameRow != dirtySupportQueueNameRows.end()) if (itQueueNameRow != dirtySupportQueueNameRows.end())
{ {
row = itQueueNameRow->second; row = itQueueNameRow->second;
@ -663,7 +663,7 @@ bool CClaimTrie::getSupportExpirationQueueRow(int nHeight, supportQueueRowType&
return db.Read(std::make_pair(SUPPORT_EXP_QUEUE_ROW, nHeight), row); return db.Read(std::make_pair(SUPPORT_EXP_QUEUE_ROW, nHeight), row);
} }
bool CClaimTrie::update(nodeCacheType& cache, hashMapType& hashes, std::map<std::string, int>& takeoverHeights, const uint256& hashBlockIn, claimQueueType& queueCache, claimQueueNamesType& queueNameCache, claimQueueType& expirationQueueCache, int nNewHeight, supportMapType& supportCache, supportQueueType& supportQueueCache, supportQueueNamesType& supportQueueNameCache, supportQueueType& supportExpirationQueueCache) bool CClaimTrie::update(nodeCacheType& cache, hashMapType& hashes, std::map<std::string, int>& takeoverHeights, const uint256& hashBlockIn, claimQueueType& queueCache, nameOutPointHeightMapType& queueNameCache, claimQueueType& expirationQueueCache, int nNewHeight, supportMapType& supportCache, supportQueueType& supportQueueCache, nameOutPointHeightMapType& supportQueueNameCache, supportQueueType& supportExpirationQueueCache)
{ {
for (nodeCacheType::iterator itcache = cache.begin(); itcache != cache.end(); ++itcache) for (nodeCacheType::iterator itcache = cache.begin(); itcache != cache.end(); ++itcache)
{ {
@ -684,7 +684,7 @@ bool CClaimTrie::update(nodeCacheType& cache, hashMapType& hashes, std::map<std:
{ {
updateQueueRow(itQueueCacheRow->first, itQueueCacheRow->second); updateQueueRow(itQueueCacheRow->first, itQueueCacheRow->second);
} }
for (claimQueueNamesType::iterator itQueueNameCacheRow = queueNameCache.begin(); itQueueNameCacheRow != queueNameCache.end(); ++itQueueNameCacheRow) for (nameOutPointHeightMapType::iterator itQueueNameCacheRow = queueNameCache.begin(); itQueueNameCacheRow != queueNameCache.end(); ++itQueueNameCacheRow)
{ {
updateQueueNameRow(itQueueNameCacheRow->first, itQueueNameCacheRow->second); updateQueueNameRow(itQueueNameCacheRow->first, itQueueNameCacheRow->second);
} }
@ -700,7 +700,7 @@ bool CClaimTrie::update(nodeCacheType& cache, hashMapType& hashes, std::map<std:
{ {
updateSupportQueue(itSupportQueue->first, itSupportQueue->second); updateSupportQueue(itSupportQueue->first, itSupportQueue->second);
} }
for (supportQueueNamesType::iterator itSupportNameQueue = supportQueueNameCache.begin(); itSupportNameQueue != supportQueueNameCache.end(); ++itSupportNameQueue) for (nameOutPointHeightMapType::iterator itSupportNameQueue = supportQueueNameCache.begin(); itSupportNameQueue != supportQueueNameCache.end(); ++itSupportNameQueue)
{ {
updateSupportNameQueue(itSupportNameQueue->first, itSupportNameQueue->second); updateSupportNameQueue(itSupportNameQueue->first, itSupportNameQueue->second);
} }
@ -844,7 +844,7 @@ void CClaimTrie::BatchWriteQueueRows(CLevelDBBatch& batch)
void CClaimTrie::BatchWriteQueueNameRows(CLevelDBBatch& batch) void CClaimTrie::BatchWriteQueueNameRows(CLevelDBBatch& batch)
{ {
for (claimQueueNamesType::iterator itQueue = dirtyQueueNameRows.begin(); itQueue != dirtyQueueNameRows.end(); ++itQueue) for (nameOutPointHeightMapType::iterator itQueue = dirtyQueueNameRows.begin(); itQueue != dirtyQueueNameRows.end(); ++itQueue)
{ {
if (itQueue->second.empty()) if (itQueue->second.empty())
{ {
@ -904,7 +904,7 @@ void CClaimTrie::BatchWriteSupportQueueRows(CLevelDBBatch& batch)
void CClaimTrie::BatchWriteSupportQueueNameRows(CLevelDBBatch& batch) void CClaimTrie::BatchWriteSupportQueueNameRows(CLevelDBBatch& batch)
{ {
for (supportQueueNamesType::iterator itQueue = dirtySupportQueueNameRows.begin(); itQueue != dirtySupportQueueNameRows.end(); ++itQueue) for (nameOutPointHeightMapType::iterator itQueue = dirtySupportQueueNameRows.begin(); itQueue != dirtySupportQueueNameRows.end(); ++itQueue)
{ {
if (itQueue->second.empty()) if (itQueue->second.empty())
{ {
@ -1383,21 +1383,21 @@ claimQueueType::iterator CClaimTrieCache::getQueueCacheRow(int nHeight, bool cre
return itQueueRow; return itQueueRow;
} }
claimQueueNamesType::iterator CClaimTrieCache::getQueueCacheNameRow(const std::string& name, bool createIfNotExists) const nameOutPointHeightMapType::iterator CClaimTrieCache::getQueueCacheNameRow(const std::string& name, bool createIfNotExists) const
{ {
claimQueueNamesType::iterator itQueueNameRow = claimQueueNameCache.find(name); nameOutPointHeightMapType::iterator itQueueNameRow = claimQueueNameCache.find(name);
if (itQueueNameRow == claimQueueNameCache.end()) if (itQueueNameRow == claimQueueNameCache.end())
{ {
// Have to make a new name row and put it in the cache, if createIfNotExists is true // Have to make a new name row and put it in the cache, if createIfNotExists is true
validHeightRowType queueNameRow; outPointHeightRowType queueNameRow;
// If the row exists in the base, copy its claims into the new row. // If the row exists in the base, copy its claims into the new row.
bool exists = base->getQueueNameRow(name, queueNameRow); bool exists = base->getQueueNameRow(name, queueNameRow);
if (!exists) if (!exists)
if (!createIfNotExists) if (!createIfNotExists)
return itQueueNameRow; return itQueueNameRow;
// Stick the new row in the cache // Stick the new row in the cache
std::pair<claimQueueNamesType::iterator, bool> ret; std::pair<nameOutPointHeightMapType::iterator, bool> ret;
ret = claimQueueNameCache.insert(std::pair<std::string, validHeightRowType>(name, queueNameRow)); ret = claimQueueNameCache.insert(std::pair<std::string, outPointHeightRowType>(name, queueNameRow));
assert(ret.second); assert(ret.second);
itQueueNameRow = ret.first; itQueueNameRow = ret.first;
} }
@ -1444,21 +1444,21 @@ bool CClaimTrieCache::addClaimToQueues(const std::string& name, CClaimValue& cla
LogPrintf("%s: nValidAtHeight: %d\n", __func__, claim.nValidAtHeight); LogPrintf("%s: nValidAtHeight: %d\n", __func__, claim.nValidAtHeight);
claimQueueEntryType entry(name, claim); claimQueueEntryType entry(name, claim);
claimQueueType::iterator itQueueRow = getQueueCacheRow(claim.nValidAtHeight, true); claimQueueType::iterator itQueueRow = getQueueCacheRow(claim.nValidAtHeight, true);
claimQueueNamesType::iterator itQueueNameRow = getQueueCacheNameRow(name, true); nameOutPointHeightMapType::iterator itQueueNameRow = getQueueCacheNameRow(name, true);
itQueueRow->second.push_back(entry); itQueueRow->second.push_back(entry);
itQueueNameRow->second.push_back(validHeightType(claim.outPoint, claim.nValidAtHeight)); itQueueNameRow->second.push_back(outPointHeightType(claim.outPoint, claim.nValidAtHeight));
addToExpirationQueue(entry); addToExpirationQueue(entry);
return true; return true;
} }
bool CClaimTrieCache::removeClaimFromQueue(const std::string& name, const COutPoint& outPoint, CClaimValue& claim) const bool CClaimTrieCache::removeClaimFromQueue(const std::string& name, const COutPoint& outPoint, CClaimValue& claim) const
{ {
claimQueueNamesType::iterator itQueueNameRow = getQueueCacheNameRow(name, false); nameOutPointHeightMapType::iterator itQueueNameRow = getQueueCacheNameRow(name, false);
if (itQueueNameRow == claimQueueNameCache.end()) if (itQueueNameRow == claimQueueNameCache.end())
{ {
return false; return false;
} }
validHeightRowType::iterator itQueueName; outPointHeightRowType::iterator itQueueName;
for (itQueueName = itQueueNameRow->second.begin(); itQueueName != itQueueNameRow->second.end(); ++itQueueName) for (itQueueName = itQueueNameRow->second.begin(); itQueueName != itQueueNameRow->second.end(); ++itQueueName)
{ {
if (itQueueName->outPoint == outPoint) if (itQueueName->outPoint == outPoint)
@ -1470,7 +1470,7 @@ bool CClaimTrieCache::removeClaimFromQueue(const std::string& name, const COutPo
{ {
return false; return false;
} }
claimQueueType::iterator itQueueRow = getQueueCacheRow(itQueueName->nValidAtHeight, false); claimQueueType::iterator itQueueRow = getQueueCacheRow(itQueueName->nHeight, false);
if (itQueueRow != claimQueueCache.end()) if (itQueueRow != claimQueueCache.end())
{ {
claimQueueRowType::iterator itQueue; claimQueueRowType::iterator itQueue;
@ -1489,7 +1489,7 @@ bool CClaimTrieCache::removeClaimFromQueue(const std::string& name, const COutPo
return true; return true;
} }
} }
LogPrintf("%s: An inconsistency was found in the claim queue. Please report this to the developers:\nFound in named queue but not in height queue: name: %s, txid: %s, nOut: %d, nValidAtHeight: %d, current height: %d\n", __func__, name, outPoint.hash.GetHex(), outPoint.n, itQueueName->nValidAtHeight, nCurrentHeight); LogPrintf("%s: An inconsistency was found in the claim queue. Please report this to the developers:\nFound in named queue but not in height queue: name: %s, txid: %s, nOut: %d, nValidAtHeight: %d, current height: %d\n", __func__, name, outPoint.hash.GetHex(), outPoint.n, itQueueName->nHeight, nCurrentHeight);
return false; return false;
} }
@ -1728,19 +1728,19 @@ supportQueueType::iterator CClaimTrieCache::getSupportQueueCacheRow(int nHeight,
return itQueueRow; return itQueueRow;
} }
supportQueueNamesType::iterator CClaimTrieCache::getSupportQueueCacheNameRow(const std::string& name, bool createIfNotExists) const nameOutPointHeightMapType::iterator CClaimTrieCache::getSupportQueueCacheNameRow(const std::string& name, bool createIfNotExists) const
{ {
supportQueueNamesType::iterator itQueueNameRow = supportQueueNameCache.find(name); nameOutPointHeightMapType::iterator itQueueNameRow = supportQueueNameCache.find(name);
if (itQueueNameRow == supportQueueNameCache.end()) if (itQueueNameRow == supportQueueNameCache.end())
{ {
std::vector<CSupportValue> queueNameRow; outPointHeightRowType queueNameRow;
bool exists = base->getSupportQueueNameRow(name, queueNameRow); bool exists = base->getSupportQueueNameRow(name, queueNameRow);
if (!exists) if (!exists)
if (!createIfNotExists) if (!createIfNotExists)
return itQueueNameRow; return itQueueNameRow;
// Stick the new row in the name cache // Stick the new row in the name cache
std::pair<supportQueueNamesType::iterator, bool> ret; std::pair<nameOutPointHeightMapType::iterator, bool> ret;
ret = supportQueueNameCache.insert(std::pair<std::string, std::vector<CSupportValue> >(name, queueNameRow)); ret = supportQueueNameCache.insert(std::pair<std::string, outPointHeightRowType>(name, queueNameRow));
assert(ret.second); assert(ret.second);
itQueueNameRow = ret.first; itQueueNameRow = ret.first;
} }
@ -1752,21 +1752,21 @@ bool CClaimTrieCache::addSupportToQueues(const std::string& name, CSupportValue&
LogPrintf("%s: nValidAtHeight: %d\n", __func__, support.nValidAtHeight); LogPrintf("%s: nValidAtHeight: %d\n", __func__, support.nValidAtHeight);
supportQueueEntryType entry(name, support); supportQueueEntryType entry(name, support);
supportQueueType::iterator itQueueRow = getSupportQueueCacheRow(support.nValidAtHeight, true); supportQueueType::iterator itQueueRow = getSupportQueueCacheRow(support.nValidAtHeight, true);
supportQueueNamesType::iterator itQueueNameRow = getSupportQueueCacheNameRow(name, true); nameOutPointHeightMapType::iterator itQueueNameRow = getSupportQueueCacheNameRow(name, true);
itQueueRow->second.push_back(entry); itQueueRow->second.push_back(entry);
itQueueNameRow->second.push_back(support); itQueueNameRow->second.push_back(outPointHeightType(support.outPoint, support.nValidAtHeight));
addSupportToExpirationQueue(entry); addSupportToExpirationQueue(entry);
return true; return true;
} }
bool CClaimTrieCache::removeSupportFromQueue(const std::string& name, const COutPoint& outPoint, CSupportValue& support) const bool CClaimTrieCache::removeSupportFromQueue(const std::string& name, const COutPoint& outPoint, CSupportValue& support) const
{ {
supportQueueNamesType::iterator itQueueNameRow = getSupportQueueCacheNameRow(name, false); nameOutPointHeightMapType::iterator itQueueNameRow = getSupportQueueCacheNameRow(name, false);
if (itQueueNameRow == supportQueueNameCache.end()) if (itQueueNameRow == supportQueueNameCache.end())
{ {
return false; return false;
} }
std::vector<CSupportValue>::iterator itQueueName; outPointHeightRowType::iterator itQueueName;
for (itQueueName = itQueueNameRow->second.begin(); itQueueName != itQueueNameRow->second.end(); ++itQueueName) for (itQueueName = itQueueNameRow->second.begin(); itQueueName != itQueueNameRow->second.end(); ++itQueueName)
{ {
if (itQueueName->outPoint == outPoint) if (itQueueName->outPoint == outPoint)
@ -1778,7 +1778,7 @@ bool CClaimTrieCache::removeSupportFromQueue(const std::string& name, const COut
{ {
return false; return false;
} }
supportQueueType::iterator itQueueRow = getSupportQueueCacheRow(itQueueName->nValidAtHeight, false); supportQueueType::iterator itQueueRow = getSupportQueueCacheRow(itQueueName->nHeight, false);
if (itQueueRow != supportQueueCache.end()) if (itQueueRow != supportQueueCache.end())
{ {
supportQueueRowType::iterator itQueue; supportQueueRowType::iterator itQueue;
@ -1798,7 +1798,7 @@ bool CClaimTrieCache::removeSupportFromQueue(const std::string& name, const COut
return true; return true;
} }
} }
LogPrintf("%s: An inconsistency was found in the claim queue. Please report this to the developers:\nFound in named support queue but not in height support queue: name: %s, txid: %s, nOut: %d, nValidAtHeight: %d, current height: %d\n", __func__, name, outPoint.hash.GetHex(), outPoint.n, itQueueName->nValidAtHeight, nCurrentHeight); LogPrintf("%s: An inconsistency was found in the claim queue. Please report this to the developers:\nFound in named support queue but not in height support queue: name: %s, txid: %s, nOut: %d, nValidAtHeight: %d, current height: %d\n", __func__, name, outPoint.hash.GetHex(), outPoint.n, itQueueName->nHeight, nCurrentHeight);
return false; return false;
} }
@ -1914,7 +1914,7 @@ bool CClaimTrieCache::spendSupport(const std::string& name, const COutPoint& out
return removeSupport(name, outPoint, nHeight, nValidAtHeight, true); return removeSupport(name, outPoint, nHeight, nValidAtHeight, true);
} }
bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQueueRowType& expireUndo, supportQueueRowType& insertSupportUndo, supportQueueRowType& expireSupportUndo, std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const bool CClaimTrieCache::incrementBlock(nameOutPointHeightRowType& insertUndo, claimQueueRowType& expireUndo, nameOutPointHeightRowType& insertSupportUndo, supportQueueRowType& expireSupportUndo, std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const
{ {
LogPrintf("%s: nCurrentHeight (before increment): %d\n", __func__, nCurrentHeight); LogPrintf("%s: nCurrentHeight (before increment): %d\n", __func__, nCurrentHeight);
claimQueueType::iterator itQueueRow = getQueueCacheRow(nCurrentHeight, false); claimQueueType::iterator itQueueRow = getQueueCacheRow(nCurrentHeight, false);
@ -1923,12 +1923,12 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
for (claimQueueRowType::iterator itEntry = itQueueRow->second.begin(); itEntry != itQueueRow->second.end(); ++itEntry) for (claimQueueRowType::iterator itEntry = itQueueRow->second.begin(); itEntry != itQueueRow->second.end(); ++itEntry)
{ {
bool found = false; bool found = false;
claimQueueNamesType::iterator itQueueNameRow = getQueueCacheNameRow(itEntry->first, false); nameOutPointHeightMapType::iterator itQueueNameRow = getQueueCacheNameRow(itEntry->first, false);
if (itQueueNameRow != claimQueueNameCache.end()) if (itQueueNameRow != claimQueueNameCache.end())
{ {
for (validHeightRowType::iterator itQueueName = itQueueNameRow->second.begin(); itQueueName != itQueueNameRow->second.end(); ++itQueueName) for (outPointHeightRowType::iterator itQueueName = itQueueNameRow->second.begin(); itQueueName != itQueueNameRow->second.end(); ++itQueueName)
{ {
if (itQueueName->outPoint == itEntry->second.outPoint && itQueueName->nValidAtHeight == nCurrentHeight) if (itQueueName->outPoint == itEntry->second.outPoint && itQueueName->nHeight == nCurrentHeight)
{ {
found = true; found = true;
itQueueNameRow->second.erase(itQueueName); itQueueNameRow->second.erase(itQueueName);
@ -1942,9 +1942,9 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
if (itQueueNameRow != claimQueueNameCache.end()) if (itQueueNameRow != claimQueueNameCache.end())
{ {
LogPrintf("Claims found for that name:\n"); LogPrintf("Claims found for that name:\n");
for (validHeightRowType::iterator itQueueName = itQueueNameRow->second.begin(); itQueueName != itQueueNameRow->second.end(); ++itQueueName) for (outPointHeightRowType::iterator itQueueName = itQueueNameRow->second.begin(); itQueueName != itQueueNameRow->second.end(); ++itQueueName)
{ {
LogPrintf("\ttxid: %s, nOut: %d, nValidAtHeight: %d\n", itQueueName->outPoint.hash.GetHex(), itQueueName->outPoint.n, itQueueName->nValidAtHeight); LogPrintf("\ttxid: %s, nOut: %d, nValidAtHeight: %d\n", itQueueName->outPoint.hash.GetHex(), itQueueName->outPoint.n, itQueueName->nHeight);
} }
} }
else else
@ -1954,7 +1954,7 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
} }
assert(found); assert(found);
insertClaimIntoTrie(itEntry->first, itEntry->second, true); insertClaimIntoTrie(itEntry->first, itEntry->second, true);
insertUndo.push_back(namedValidHeightType(itEntry->first, itEntry->second.outPoint, itEntry->second.nValidAtHeight)); insertUndo.push_back(nameOutPointHeightType(itEntry->first, itEntry->second.outPoint, itEntry->second.nValidAtHeight));
} }
itQueueRow->second.clear(); itQueueRow->second.clear();
} }
@ -1975,12 +1975,12 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
for (supportQueueRowType::iterator itSupport = itSupportRow->second.begin(); itSupport != itSupportRow->second.end(); ++itSupport) for (supportQueueRowType::iterator itSupport = itSupportRow->second.begin(); itSupport != itSupportRow->second.end(); ++itSupport)
{ {
bool found = false; bool found = false;
supportQueueNamesType::iterator itSupportNameRow = getSupportQueueCacheNameRow(itSupport->first, false); nameOutPointHeightMapType::iterator itSupportNameRow = getSupportQueueCacheNameRow(itSupport->first, false);
if (itSupportNameRow != supportQueueNameCache.end()) if (itSupportNameRow != supportQueueNameCache.end())
{ {
for (std::vector<CSupportValue>::iterator itSupportName = itSupportNameRow->second.begin(); itSupportName != itSupportNameRow->second.end(); ++itSupportName) for (outPointHeightRowType::iterator itSupportName = itSupportNameRow->second.begin(); itSupportName != itSupportNameRow->second.end(); ++itSupportName)
{ {
if (*itSupportName == itSupport->second) if (itSupportName->outPoint == itSupport->second.outPoint && itSupportName->nHeight == itSupport->second.nValidAtHeight)
{ {
found = true; found = true;
itSupportNameRow->second.erase(itSupportName); itSupportNameRow->second.erase(itSupportName);
@ -1994,9 +1994,9 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
if (itSupportNameRow != supportQueueNameCache.end()) if (itSupportNameRow != supportQueueNameCache.end())
{ {
LogPrintf("Supports found for that name:\n"); LogPrintf("Supports found for that name:\n");
for (std::vector<CSupportValue>::iterator itSupportName = itSupportNameRow->second.begin(); itSupportName != itSupportNameRow->second.end(); ++itSupportName) for (outPointHeightRowType::iterator itSupportName = itSupportNameRow->second.begin(); itSupportName != itSupportNameRow->second.end(); ++itSupportName)
{ {
LogPrintf("\ttxid: %s, nOut: %d, nValidAtHeight: %d\n", itSupportName->outPoint.hash.GetHex(), itSupportName->outPoint.n, itSupportName->nValidAtHeight); LogPrintf("\ttxid: %s, nOut: %d, nValidAtHeight: %d\n", itSupportName->outPoint.hash.GetHex(), itSupportName->outPoint.n, itSupportName->nHeight);
} }
} }
else else
@ -2005,7 +2005,7 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
} }
} }
insertSupportIntoMap(itSupport->first, itSupport->second, true); insertSupportIntoMap(itSupport->first, itSupport->second, true);
insertSupportUndo.push_back(*itSupport); insertSupportUndo.push_back(nameOutPointHeightType(itSupport->first, itSupport->second.outPoint, itSupport->second.nValidAtHeight));
} }
itSupportRow->second.clear(); itSupportRow->second.clear();
} }
@ -2073,20 +2073,20 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
if (takeoverHappened) if (takeoverHappened)
{ {
// Get all claims in the queue for that name // Get all claims in the queue for that name
claimQueueNamesType::iterator itQueueNameRow = getQueueCacheNameRow(*itNamesToCheck, false); nameOutPointHeightMapType::iterator itQueueNameRow = getQueueCacheNameRow(*itNamesToCheck, false);
if (itQueueNameRow != claimQueueNameCache.end()) if (itQueueNameRow != claimQueueNameCache.end())
{ {
for (validHeightRowType::iterator itQueueName = itQueueNameRow->second.begin(); itQueueName != itQueueNameRow->second.end(); ++itQueueName) for (outPointHeightRowType::iterator itQueueName = itQueueNameRow->second.begin(); itQueueName != itQueueNameRow->second.end(); ++itQueueName)
{ {
bool found = false; bool found = false;
// Pull those claims out of the height-based queue // Pull those claims out of the height-based queue
claimQueueType::iterator itQueueRow = getQueueCacheRow(itQueueName->nValidAtHeight, false); claimQueueType::iterator itQueueRow = getQueueCacheRow(itQueueName->nHeight, false);
claimQueueRowType::iterator itQueue; claimQueueRowType::iterator itQueue;
if (itQueueRow != claimQueueCache.end()) if (itQueueRow != claimQueueCache.end())
{ {
for (itQueue = itQueueRow->second.begin(); itQueue != itQueueRow->second.end(); ++itQueue) for (itQueue = itQueueRow->second.begin(); itQueue != itQueueRow->second.end(); ++itQueue)
{ {
if (*itNamesToCheck == itQueue->first && itQueue->second.outPoint == itQueueName->outPoint && itQueue->second.nValidAtHeight == itQueueName->nValidAtHeight) if (*itNamesToCheck == itQueue->first && itQueue->second.outPoint == itQueueName->outPoint && itQueue->second.nValidAtHeight == itQueueName->nHeight)
{ {
found = true; found = true;
break; break;
@ -2096,7 +2096,7 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
if (found) if (found)
{ {
// Insert them into the queue undo with their previous nValidAtHeight // Insert them into the queue undo with their previous nValidAtHeight
insertUndo.push_back(namedValidHeightType(itQueue->first, itQueue->second.outPoint, itQueue->second.nValidAtHeight)); insertUndo.push_back(nameOutPointHeightType(itQueue->first, itQueue->second.outPoint, itQueue->second.nValidAtHeight));
// Insert them into the name trie with the new nValidAtHeight // Insert them into the name trie with the new nValidAtHeight
itQueue->second.nValidAtHeight = nCurrentHeight; itQueue->second.nValidAtHeight = nCurrentHeight;
insertClaimIntoTrie(itQueue->first, itQueue->second, false); insertClaimIntoTrie(itQueue->first, itQueue->second, false);
@ -2105,7 +2105,7 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
} }
else else
{ {
LogPrintf("%s(): An inconsistency was found in the claim queue. Please report this to the developers:\nClaim found in name queue but not in height based queue:\nname: %s, txid: %s, nOut: %d, nValidAtHeight in name based queue: %d, current height: %d\n", __func__, *itNamesToCheck, itQueueName->outPoint.hash.GetHex(), itQueueName->outPoint.n, itQueueName->nValidAtHeight, nCurrentHeight); LogPrintf("%s(): An inconsistency was found in the claim queue. Please report this to the developers:\nClaim found in name queue but not in height based queue:\nname: %s, txid: %s, nOut: %d, nValidAtHeight in name based queue: %d, current height: %d\n", __func__, *itNamesToCheck, itQueueName->outPoint.hash.GetHex(), itQueueName->outPoint.n, itQueueName->nHeight, nCurrentHeight);
} }
assert(found); assert(found);
} }
@ -2114,19 +2114,19 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
} }
// //
// Then, get all supports in the queue for that name // Then, get all supports in the queue for that name
supportQueueNamesType::iterator itSupportQueueNameRow = getSupportQueueCacheNameRow(*itNamesToCheck, false); nameOutPointHeightMapType::iterator itSupportQueueNameRow = getSupportQueueCacheNameRow(*itNamesToCheck, false);
if (itSupportQueueNameRow != supportQueueNameCache.end()) if (itSupportQueueNameRow != supportQueueNameCache.end())
{ {
for (std::vector<CSupportValue>::iterator itSupportQueueName = itSupportQueueNameRow->second.begin(); itSupportQueueName != itSupportQueueNameRow->second.end(); ++itSupportQueueName) for (outPointHeightRowType::iterator itSupportQueueName = itSupportQueueNameRow->second.begin(); itSupportQueueName != itSupportQueueNameRow->second.end(); ++itSupportQueueName)
{ {
// Pull those supports out of the height-based queue // Pull those supports out of the height-based queue
supportQueueType::iterator itSupportQueueRow = getSupportQueueCacheRow(itSupportQueueName->nValidAtHeight, false); supportQueueType::iterator itSupportQueueRow = getSupportQueueCacheRow(itSupportQueueName->nHeight, false);
if (itSupportQueueRow != supportQueueCache.end()) if (itSupportQueueRow != supportQueueCache.end())
{ {
supportQueueRowType::iterator itSupportQueue; supportQueueRowType::iterator itSupportQueue;
for (itSupportQueue = itSupportQueueRow->second.begin(); itSupportQueue != itSupportQueueRow->second.end(); ++itSupportQueue) for (itSupportQueue = itSupportQueueRow->second.begin(); itSupportQueue != itSupportQueueRow->second.end(); ++itSupportQueue)
{ {
if (*itNamesToCheck == itSupportQueue->first && itSupportQueue->second == *itSupportQueueName) if (*itNamesToCheck == itSupportQueue->first && itSupportQueue->second.outPoint == itSupportQueueName->outPoint && itSupportQueue->second.nValidAtHeight == itSupportQueueName->nHeight)
{ {
break; break;
} }
@ -2134,7 +2134,7 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
if (itSupportQueue != itSupportQueueRow->second.end()) if (itSupportQueue != itSupportQueueRow->second.end())
{ {
// Insert them into the support queue undo with the previous nValidAtHeight // Insert them into the support queue undo with the previous nValidAtHeight
insertSupportUndo.push_back(*itSupportQueue); insertSupportUndo.push_back(nameOutPointHeightType(itSupportQueue->first, itSupportQueue->second.outPoint, itSupportQueue->second.nValidAtHeight));
// Insert them into the support map with the new nValidAtHeight // Insert them into the support map with the new nValidAtHeight
itSupportQueue->second.nValidAtHeight = nCurrentHeight; itSupportQueue->second.nValidAtHeight = nCurrentHeight;
insertSupportIntoMap(itSupportQueue->first, itSupportQueue->second, false); insertSupportIntoMap(itSupportQueue->first, itSupportQueue->second, false);
@ -2143,7 +2143,7 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
} }
else else
{ {
// here be problems // here be problems TODO: show error, assert false
} }
} }
else else
@ -2174,7 +2174,7 @@ bool CClaimTrieCache::incrementBlock(namedValidHeightRowType& insertUndo, claimQ
return true; return true;
} }
bool CClaimTrieCache::decrementBlock(namedValidHeightRowType& insertUndo, claimQueueRowType& expireUndo, supportQueueRowType& insertSupportUndo, supportQueueRowType& expireSupportUndo, std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const bool CClaimTrieCache::decrementBlock(nameOutPointHeightRowType& insertUndo, claimQueueRowType& expireUndo, nameOutPointHeightRowType& insertSupportUndo, supportQueueRowType& expireSupportUndo, std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const
{ {
LogPrintf("%s: nCurrentHeight (before decrement): %d\n", __func__, nCurrentHeight); LogPrintf("%s: nCurrentHeight (before decrement): %d\n", __func__, nCurrentHeight);
nCurrentHeight--; nCurrentHeight--;
@ -2189,14 +2189,14 @@ bool CClaimTrieCache::decrementBlock(namedValidHeightRowType& insertUndo, claimQ
} }
} }
for (supportQueueRowType::iterator itSupportUndo = insertSupportUndo.begin(); itSupportUndo != insertSupportUndo.end(); ++itSupportUndo) for (nameOutPointHeightRowType::iterator itSupportUndo = insertSupportUndo.begin(); itSupportUndo != insertSupportUndo.end(); ++itSupportUndo)
{ {
supportQueueType::iterator itSupportRow = getSupportQueueCacheRow(itSupportUndo->second.nValidAtHeight, true); supportQueueType::iterator itSupportRow = getSupportQueueCacheRow(itSupportUndo->nHeight, true);
CSupportValue support; CSupportValue support;
assert(removeSupportFromMap(itSupportUndo->first, itSupportUndo->second.outPoint, support, false)); assert(removeSupportFromMap(itSupportUndo->name, itSupportUndo->outPoint, support, false));
supportQueueNamesType::iterator itSupportNameRow = getSupportQueueCacheNameRow(itSupportUndo->first, true); nameOutPointHeightMapType::iterator itSupportNameRow = getSupportQueueCacheNameRow(itSupportUndo->name, true);
itSupportRow->second.push_back(*itSupportUndo); itSupportRow->second.push_back(std::make_pair(itSupportUndo->name, support));
itSupportNameRow->second.push_back(itSupportUndo->second); itSupportNameRow->second.push_back(outPointHeightType(support.outPoint, support.nValidAtHeight));
} }
if (expireUndo.begin() != expireUndo.end()) if (expireUndo.begin() != expireUndo.end())
@ -2209,14 +2209,14 @@ bool CClaimTrieCache::decrementBlock(namedValidHeightRowType& insertUndo, claimQ
} }
} }
for (namedValidHeightRowType::iterator itInsertUndo = insertUndo.begin(); itInsertUndo != insertUndo.end(); ++itInsertUndo) for (nameOutPointHeightRowType::iterator itInsertUndo = insertUndo.begin(); itInsertUndo != insertUndo.end(); ++itInsertUndo)
{ {
claimQueueType::iterator itQueueRow = getQueueCacheRow(itInsertUndo->nValidAtHeight, true); claimQueueType::iterator itQueueRow = getQueueCacheRow(itInsertUndo->nHeight, true);
CClaimValue claim; CClaimValue claim;
assert(removeClaimFromTrie(itInsertUndo->name, itInsertUndo->outPoint, claim, false)); assert(removeClaimFromTrie(itInsertUndo->name, itInsertUndo->outPoint, claim, false));
claimQueueNamesType::iterator itQueueNameRow = getQueueCacheNameRow(itInsertUndo->name, true); nameOutPointHeightMapType::iterator itQueueNameRow = getQueueCacheNameRow(itInsertUndo->name, true);
itQueueRow->second.push_back(std::make_pair(itInsertUndo->name, claim)); itQueueRow->second.push_back(std::make_pair(itInsertUndo->name, claim));
itQueueNameRow->second.push_back(validHeightType(itInsertUndo->outPoint, itInsertUndo->nValidAtHeight)); itQueueNameRow->second.push_back(outPointHeightType(itInsertUndo->outPoint, itInsertUndo->nHeight));
} }
for (std::vector<std::pair<std::string, int> >::iterator itTakeoverHeightUndo = takeoverHeightUndo.begin(); itTakeoverHeightUndo != takeoverHeightUndo.end(); ++itTakeoverHeightUndo) for (std::vector<std::pair<std::string, int> >::iterator itTakeoverHeightUndo = takeoverHeightUndo.begin(); itTakeoverHeightUndo != takeoverHeightUndo.end(); ++itTakeoverHeightUndo)

View file

@ -178,15 +178,15 @@ struct nodenamecompare
} }
}; };
struct validHeightType struct outPointHeightType
{ {
COutPoint outPoint; COutPoint outPoint;
int nValidAtHeight; int nHeight;
validHeightType() {} outPointHeightType() {}
validHeightType(COutPoint outPoint, int nValidAtHeight) outPointHeightType(COutPoint outPoint, int nHeight)
: outPoint(outPoint), nValidAtHeight(nValidAtHeight) {} : outPoint(outPoint), nHeight(nHeight) {}
ADD_SERIALIZE_METHODS; ADD_SERIALIZE_METHODS;
@ -194,22 +194,21 @@ struct validHeightType
inline void SerializationOp(Stream& s, Operation ser_action, int nType, int nVersion) inline void SerializationOp(Stream& s, Operation ser_action, int nType, int nVersion)
{ {
READWRITE(outPoint); READWRITE(outPoint);
READWRITE(nValidAtHeight); READWRITE(nHeight);
} }
}; };
struct namedValidHeightType struct nameOutPointHeightType
{ {
std::string name; std::string name;
COutPoint outPoint; COutPoint outPoint;
int nValidAtHeight; int nHeight;
namedValidHeightType() {} nameOutPointHeightType() {}
namedValidHeightType(std::string name, COutPoint outPoint, nameOutPointHeightType(std::string name, COutPoint outPoint, int nHeight)
int nValidAtHeight) : name(name), outPoint(outPoint), nHeight(nHeight) {}
: name(name), outPoint(outPoint), nValidAtHeight(nValidAtHeight) {}
ADD_SERIALIZE_METHODS; ADD_SERIALIZE_METHODS;
@ -218,7 +217,7 @@ struct namedValidHeightType
{ {
READWRITE(name); READWRITE(name);
READWRITE(outPoint); READWRITE(outPoint);
READWRITE(nValidAtHeight); READWRITE(nHeight);
} }
}; };
@ -228,17 +227,16 @@ typedef std::pair<std::string, CSupportValue> supportQueueEntryType;
typedef std::map<std::string, supportMapEntryType> supportMapType; typedef std::map<std::string, supportMapEntryType> supportMapType;
typedef std::vector<validHeightType> validHeightRowType; typedef std::vector<outPointHeightType> outPointHeightRowType;
typedef std::vector<namedValidHeightType> namedValidHeightRowType; typedef std::vector<nameOutPointHeightType> nameOutPointHeightRowType;
typedef std::map<std::string, outPointHeightRowType > nameOutPointHeightMapType;
typedef std::vector<claimQueueEntryType> claimQueueRowType; typedef std::vector<claimQueueEntryType> claimQueueRowType;
typedef std::map<int, claimQueueRowType> claimQueueType; typedef std::map<int, claimQueueRowType> claimQueueType;
typedef std::map<std::string, validHeightRowType > claimQueueNamesType;
typedef std::vector<supportQueueEntryType> supportQueueRowType; typedef std::vector<supportQueueEntryType> supportQueueRowType;
typedef std::map<int, supportQueueRowType> supportQueueType; typedef std::map<int, supportQueueRowType> supportQueueType;
typedef std::map<std::string, std::vector<CSupportValue> > supportQueueNamesType;
typedef std::map<std::string, CClaimTrieNode*, nodenamecompare> nodeCacheType; typedef std::map<std::string, CClaimTrieNode*, nodenamecompare> nodeCacheType;
@ -279,11 +277,11 @@ public:
void setExpirationTime(int t); void setExpirationTime(int t);
bool getQueueRow(int nHeight, claimQueueRowType& row) const; bool getQueueRow(int nHeight, claimQueueRowType& row) const;
bool getQueueNameRow(const std::string& name, validHeightRowType& row) const; bool getQueueNameRow(const std::string& name, outPointHeightRowType& row) const;
bool getExpirationQueueRow(int nHeight, claimQueueRowType& row) const; bool getExpirationQueueRow(int nHeight, claimQueueRowType& row) const;
bool getSupportNode(std::string name, supportMapEntryType& node) const; bool getSupportNode(std::string name, supportMapEntryType& node) const;
bool getSupportQueueRow(int nHeight, supportQueueRowType& row) const; bool getSupportQueueRow(int nHeight, supportQueueRowType& row) const;
bool getSupportQueueNameRow(const std::string& name, std::vector<CSupportValue>& row) const; bool getSupportQueueNameRow(const std::string& name, outPointHeightRowType& row) const;
bool getSupportExpirationQueueRow(int nHeight, supportQueueRowType& row) const; bool getSupportExpirationQueueRow(int nHeight, supportQueueRowType& row) const;
bool haveClaim(const std::string& name, const COutPoint& outPoint) const; bool haveClaim(const std::string& name, const COutPoint& outPoint) const;
@ -312,11 +310,11 @@ private:
bool update(nodeCacheType& cache, hashMapType& hashes, bool update(nodeCacheType& cache, hashMapType& hashes,
std::map<std::string, int>& takeoverHeights, std::map<std::string, int>& takeoverHeights,
const uint256& hashBlock, claimQueueType& queueCache, const uint256& hashBlock, claimQueueType& queueCache,
claimQueueNamesType& queueNameCache, nameOutPointHeightMapType& queueNameCache,
claimQueueType& expirationQueueCache, int nNewHeight, claimQueueType& expirationQueueCache, int nNewHeight,
supportMapType& supportCache, supportMapType& supportCache,
supportQueueType& supportQueueCache, supportQueueType& supportQueueCache,
supportQueueNamesType& supportQueueNameCache, nameOutPointHeightMapType& supportQueueNameCache,
supportQueueType& supportExpirationQueueCache); supportQueueType& supportExpirationQueueCache);
bool updateName(const std::string& name, CClaimTrieNode* updatedNode); bool updateName(const std::string& name, CClaimTrieNode* updatedNode);
bool updateHash(const std::string& name, uint256& hash); bool updateHash(const std::string& name, uint256& hash);
@ -338,12 +336,12 @@ private:
void markNodeDirty(const std::string& name, CClaimTrieNode* node); void markNodeDirty(const std::string& name, CClaimTrieNode* node);
void updateQueueRow(int nHeight, claimQueueRowType& row); void updateQueueRow(int nHeight, claimQueueRowType& row);
void updateQueueNameRow(const std::string& name, void updateQueueNameRow(const std::string& name,
validHeightRowType& row); outPointHeightRowType& row);
void updateExpirationRow(int nHeight, claimQueueRowType& row); void updateExpirationRow(int nHeight, claimQueueRowType& row);
void updateSupportMap(const std::string& name, supportMapEntryType& node); void updateSupportMap(const std::string& name, supportMapEntryType& node);
void updateSupportQueue(int nHeight, supportQueueRowType& row); void updateSupportQueue(int nHeight, supportQueueRowType& row);
void updateSupportNameQueue(const std::string& name, void updateSupportNameQueue(const std::string& name,
std::vector<CSupportValue>& row); outPointHeightRowType& row);
void updateSupportExpirationQueue(int nHeight, supportQueueRowType& row); void updateSupportExpirationQueue(int nHeight, supportQueueRowType& row);
void BatchWriteNode(CLevelDBBatch& batch, const std::string& name, void BatchWriteNode(CLevelDBBatch& batch, const std::string& name,
@ -362,11 +360,11 @@ private:
uint256 hashBlock; uint256 hashBlock;
claimQueueType dirtyQueueRows; claimQueueType dirtyQueueRows;
claimQueueNamesType dirtyQueueNameRows; nameOutPointHeightMapType dirtyQueueNameRows;
claimQueueType dirtyExpirationQueueRows; claimQueueType dirtyExpirationQueueRows;
supportQueueType dirtySupportQueueRows; supportQueueType dirtySupportQueueRows;
supportQueueNamesType dirtySupportQueueNameRows; nameOutPointHeightMapType dirtySupportQueueNameRows;
supportQueueType dirtySupportExpirationQueueRows; supportQueueType dirtySupportExpirationQueueRows;
nodeCacheType dirtyNodes; nodeCacheType dirtyNodes;
@ -414,14 +412,14 @@ public:
uint256 getBestBlock(); uint256 getBestBlock();
void setBestBlock(const uint256& hashBlock); void setBestBlock(const uint256& hashBlock);
bool incrementBlock(namedValidHeightRowType& insertUndo, bool incrementBlock(nameOutPointHeightRowType& insertUndo,
claimQueueRowType& expireUndo, claimQueueRowType& expireUndo,
supportQueueRowType& insertSupportUndo, nameOutPointHeightRowType& insertSupportUndo,
supportQueueRowType& expireSupportUndo, supportQueueRowType& expireSupportUndo,
std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const; std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const;
bool decrementBlock(namedValidHeightRowType& insertUndo, bool decrementBlock(nameOutPointHeightRowType& insertUndo,
claimQueueRowType& expireUndo, claimQueueRowType& expireUndo,
supportQueueRowType& insertSupportUndo, nameOutPointHeightRowType& insertSupportUndo,
supportQueueRowType& expireSupportUndo, supportQueueRowType& expireSupportUndo,
std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const; std::vector<std::pair<std::string, int> >& takeoverHeightUndo) const;
@ -441,11 +439,11 @@ private:
mutable std::set<std::string> dirtyHashes; mutable std::set<std::string> dirtyHashes;
mutable hashMapType cacheHashes; mutable hashMapType cacheHashes;
mutable claimQueueType claimQueueCache; mutable claimQueueType claimQueueCache;
mutable claimQueueNamesType claimQueueNameCache; mutable nameOutPointHeightMapType claimQueueNameCache;
mutable claimQueueType expirationQueueCache; mutable claimQueueType expirationQueueCache;
mutable supportMapType supportCache; mutable supportMapType supportCache;
mutable supportQueueType supportQueueCache; mutable supportQueueType supportQueueCache;
mutable supportQueueNamesType supportQueueNameCache; mutable nameOutPointHeightMapType supportQueueNameCache;
mutable supportQueueType supportExpirationQueueCache; mutable supportQueueType supportExpirationQueueCache;
mutable std::set<std::string> namesToCheckForTakeover; mutable std::set<std::string> namesToCheckForTakeover;
mutable std::map<std::string, int> cacheTakeoverHeights; mutable std::map<std::string, int> cacheTakeoverHeights;
@ -477,7 +475,7 @@ private:
claimQueueType::iterator getQueueCacheRow(int nHeight, claimQueueType::iterator getQueueCacheRow(int nHeight,
bool createIfNotExists) const; bool createIfNotExists) const;
claimQueueNamesType::iterator getQueueCacheNameRow(const std::string& name, nameOutPointHeightMapType::iterator getQueueCacheNameRow(const std::string& name,
bool createIfNotExists) const; bool createIfNotExists) const;
claimQueueType::iterator getExpirationQueueCacheRow(int nHeight, claimQueueType::iterator getExpirationQueueCacheRow(int nHeight,
bool createIfNotExists) const; bool createIfNotExists) const;
@ -495,7 +493,7 @@ private:
supportQueueType::iterator getSupportQueueCacheRow(int nHeight, supportQueueType::iterator getSupportQueueCacheRow(int nHeight,
bool createIfNotExists) const; bool createIfNotExists) const;
supportQueueNamesType::iterator getSupportQueueCacheNameRow(const std::string& name, nameOutPointHeightMapType::iterator getSupportQueueCacheNameRow(const std::string& name,
bool createIfNotExists) const; bool createIfNotExists) const;
supportQueueType::iterator getSupportExpirationQueueCacheRow(int nHeight, supportQueueType::iterator getSupportExpirationQueueCacheRow(int nHeight,
bool createIfNotExists) const; bool createIfNotExists) const;

View file

@ -464,9 +464,9 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn)
pblock->nBits = GetNextWorkRequired(pindexPrev, pblock, Params().GetConsensus()); pblock->nBits = GetNextWorkRequired(pindexPrev, pblock, Params().GetConsensus());
pblock->nNonce = 0; pblock->nNonce = 0;
pblocktemplate->vTxSigOps[0] = GetLegacySigOpCount(pblock->vtx[0]); pblocktemplate->vTxSigOps[0] = GetLegacySigOpCount(pblock->vtx[0]);
namedValidHeightRowType dummyInsertUndo; nameOutPointHeightRowType dummyInsertUndo;
claimQueueRowType dummyExpireUndo; claimQueueRowType dummyExpireUndo;
supportQueueRowType dummyInsertSupportUndo; nameOutPointHeightRowType dummyInsertSupportUndo;
supportQueueRowType dummyExpireSupportUndo; supportQueueRowType dummyExpireSupportUndo;
std::vector<std::pair<std::string, int> > dummyTakeoverHeightUndo; std::vector<std::pair<std::string, int> > dummyTakeoverHeightUndo;
trieCache.incrementBlock(dummyInsertUndo, dummyExpireUndo, dummyInsertSupportUndo, dummyExpireSupportUndo, dummyTakeoverHeightUndo); trieCache.incrementBlock(dummyInsertUndo, dummyExpireUndo, dummyInsertSupportUndo, dummyExpireSupportUndo, dummyTakeoverHeightUndo);

View file

@ -84,9 +84,9 @@ class CBlockUndo
{ {
public: public:
std::vector<CTxUndo> vtxundo; // for all but the coinbase std::vector<CTxUndo> vtxundo; // for all but the coinbase
namedValidHeightRowType insertUndo; // any claims that went from the queue to the trie nameOutPointHeightRowType insertUndo; // any claims that went from the queue to the trie
claimQueueRowType expireUndo; // any claims that expired claimQueueRowType expireUndo; // any claims that expired
supportQueueRowType insertSupportUndo; // any supports that went from the support queue to the support map nameOutPointHeightRowType insertSupportUndo; // any supports that went from the support queue to the support map
supportQueueRowType expireSupportUndo; // any supports that expired supportQueueRowType expireSupportUndo; // any supports that expired
std::vector<std::pair<std::string, int> > takeoverHeightUndo; // for any name that was taken over, the previous time that name was taken over std::vector<std::pair<std::string, int> > takeoverHeightUndo; // for any name that was taken over, the previous time that name was taken over