bool IsBlockValueValid(const CBlock& block, CAmount nExpectedValue, CAmount nMinted) { CBlockIndex* pindexPrev = chainActive.Tip(); if (pindexPrev == NULL) return true; int nHeight = 0; if (pindexPrev->GetBlockHash() == block.hashPrevBlock) { nHeight = pindexPrev->nHeight + 1; } else { //out of order BlockMap::iterator mi = mapBlockIndex.find(block.hashPrevBlock); if (mi != mapBlockIndex.end() && (*mi).second) nHeight = (*mi).second->nHeight + 1; } if (nHeight == 0) { LogPrint("masternode","IsBlockValueValid() : WARNING: Couldn't find previous block\n"); } //LogPrintf("XX69----------> IsBlockValueValid(): nMinted: %d, nExpectedValue: %d\n", FormatMoney(nMinted), FormatMoney(nExpectedValue)); if (!masternodeSync.IsSynced()) { //there is no budget data to use to check anything //super blocks will always be on these blocks, max 100 per budgeting if (nHeight % GetBudgetPaymentCycleBlocks() < 100) { return true; } else { if (nMinted > nExpectedValue) { return false; } } } else { // we're synced and have data so check the budget schedule //are these blocks even enabled if (!IsSporkActive(SPORK_13_ENABLE_SUPERBLOCKS)) { return nMinted <= nExpectedValue; } if (budget.IsBudgetPaymentBlock(nHeight)) { //the value of the block is evaluated in CheckBlock return true; } else { if (nMinted > nExpectedValue) { return false; } } } return true; }
bool IsBlockValueValid(const CBlock& block, CAmount nExpectedValue){ CBlockIndex* pindexPrev = pindexBest; if(pindexPrev == NULL) return true; int nHeight = 0; if(pindexPrev->GetBlockHash() == block.hashPrevBlock) { nHeight = pindexPrev->nHeight+1; } //TODO (Amir): Put back... conversion from 'std::map<uint256, CBlockIndex*>::iterator error. // else { //out of order // BlockMap::iterator mi = mapBlockIndex.find(block.hashPrevBlock); // if (mi != mapBlockIndex.end() && (*mi).second) // nHeight = (*mi).second->nHeight+1; //} if(nHeight == 0){ LogPrintf("IsBlockValueValid() : WARNING: Couldn't find previous block"); } if(!stormnodeSync.IsSynced()) { //there is no budget data to use to check anything //super blocks will always be on these blocks, max 100 per budgeting if(nHeight % GetBudgetPaymentCycleBlocks() < 100){ return true; } else { if(block.vtx[0].GetValueOut() > nExpectedValue) return false; } } else { // we're synced and have data so check the budget schedule //are these blocks even enabled if(!IsSporkActive(SPORK_13_ENABLE_SUPERBLOCKS)){ return block.vtx[0].GetValueOut() <= nExpectedValue; } if(budget.IsBudgetPaymentBlock(nHeight)){ //the value of the block is evaluated in CheckBlock return true; } else { if(block.vtx[0].GetValueOut() > nExpectedValue) return false; } } return true; }