Browse Source

Remove addScoreTxs()

0.13
Suhas Daftuar 9 years ago
parent
commit
d2e46e1b5c
  1. 60
      src/miner.cpp
  2. 6
      src/miner.h

60
src/miner.cpp

@ -338,66 +338,6 @@ void BlockAssembler::AddToBlock(CTxMemPool::txiter iter)
} }
} }
void BlockAssembler::addScoreTxs()
{
std::priority_queue<CTxMemPool::txiter, std::vector<CTxMemPool::txiter>, ScoreCompare> clearedTxs;
CTxMemPool::setEntries waitSet;
CTxMemPool::indexed_transaction_set::index<mining_score>::type::iterator mi = mempool.mapTx.get<mining_score>().begin();
CTxMemPool::txiter iter;
while (!blockFinished && (mi != mempool.mapTx.get<mining_score>().end() || !clearedTxs.empty()))
{
// If no txs that were previously postponed are available to try
// again, then try the next highest score tx
if (clearedTxs.empty()) {
iter = mempool.mapTx.project<0>(mi);
mi++;
}
// If a previously postponed tx is available to try again, then it
// has higher score than all untried so far txs
else {
iter = clearedTxs.top();
clearedTxs.pop();
}
// If tx already in block, skip (added by addPriorityTxs)
if (inBlock.count(iter)) {
continue;
}
// cannot accept witness transactions into a non-witness block
if (!fIncludeWitness && !iter->GetTx().wit.IsNull())
continue;
// If tx is dependent on other mempool txs which haven't yet been included
// then put it in the waitSet
if (isStillDependent(iter)) {
waitSet.insert(iter);
continue;
}
// If the fee rate is below the min fee rate for mining, then we're done
// adding txs based on score (fee rate)
if (iter->GetModifiedFee() < ::minRelayTxFee.GetFee(iter->GetTxSize()) && nBlockSize >= nBlockMinSize) {
return;
}
// If this tx fits in the block add it, otherwise keep looping
if (TestForBlock(iter)) {
AddToBlock(iter);
// This tx was successfully added, so
// add transactions that depend on this one to the priority queue to try again
BOOST_FOREACH(CTxMemPool::txiter child, mempool.GetMemPoolChildren(iter))
{
if (waitSet.count(child)) {
clearedTxs.push(child);
waitSet.erase(child);
}
}
}
}
}
void BlockAssembler::UpdatePackagesForAdded(const CTxMemPool::setEntries& alreadyAdded, void BlockAssembler::UpdatePackagesForAdded(const CTxMemPool::setEntries& alreadyAdded,
indexed_modified_transaction_set &mapModifiedTx) indexed_modified_transaction_set &mapModifiedTx)
{ {

6
src/miner.h

@ -157,7 +157,7 @@ private:
int64_t nLockTimeCutoff; int64_t nLockTimeCutoff;
const CChainParams& chainparams; const CChainParams& chainparams;
// Variables used for addScoreTxs and addPriorityTxs // Variables used for addPriorityTxs
int lastFewTxs; int lastFewTxs;
bool blockFinished; bool blockFinished;
@ -174,14 +174,12 @@ private:
void AddToBlock(CTxMemPool::txiter iter); void AddToBlock(CTxMemPool::txiter iter);
// Methods for how to add transactions to a block. // Methods for how to add transactions to a block.
/** Add transactions based on modified feerate */
void addScoreTxs();
/** Add transactions based on tx "priority" */ /** Add transactions based on tx "priority" */
void addPriorityTxs(); void addPriorityTxs();
/** Add transactions based on feerate including unconfirmed ancestors */ /** Add transactions based on feerate including unconfirmed ancestors */
void addPackageTxs(); void addPackageTxs();
// helper function for addScoreTxs and addPriorityTxs // helper function for addPriorityTxs
/** Test if tx will still "fit" in the block */ /** Test if tx will still "fit" in the block */
bool TestForBlock(CTxMemPool::txiter iter); bool TestForBlock(CTxMemPool::txiter iter);
/** Test if tx still has unconfirmed parents not yet in block */ /** Test if tx still has unconfirmed parents not yet in block */

Loading…
Cancel
Save