diff options
author | Alex Morcos <morcos@chaincode.com> | 2016-11-11 14:16:42 -0500 |
---|---|---|
committer | Alex Morcos <morcos@chaincode.com> | 2017-01-04 12:09:34 -0500 |
commit | ebafdcabb10a89b491cdb8430bc43b0220d436df (patch) | |
tree | 9202ddfb803496ab2de305dc29a4a866cb49747a | |
parent | d825838e6472f73c491f93506cb003472f071602 (diff) |
Pass pointers to existing CTxMemPoolEntries to fee estimation
-rw-r--r-- | src/policy/fees.cpp | 10 | ||||
-rw-r--r-- | src/policy/fees.h | 4 | ||||
-rw-r--r-- | src/txmempool.cpp | 4 |
3 files changed, 9 insertions, 9 deletions
diff --git a/src/policy/fees.cpp b/src/policy/fees.cpp index eb9fdc77d3..cb83bcf716 100644 --- a/src/policy/fees.cpp +++ b/src/policy/fees.cpp @@ -334,9 +334,9 @@ void CBlockPolicyEstimator::processTransaction(const CTxMemPoolEntry& entry, boo mapMemPoolTxs[hash].bucketIndex = feeStats.NewTx(txHeight, (double)feeRate.GetFeePerK()); } -void CBlockPolicyEstimator::processBlockTx(unsigned int nBlockHeight, const CTxMemPoolEntry& entry) +void CBlockPolicyEstimator::processBlockTx(unsigned int nBlockHeight, const CTxMemPoolEntry* entry) { - if (!removeTx(entry.GetTx().GetHash())) { + if (!removeTx(entry->GetTx().GetHash())) { // This transaction wasn't being tracked for fee estimation return; } @@ -344,7 +344,7 @@ void CBlockPolicyEstimator::processBlockTx(unsigned int nBlockHeight, const CTxM // How many blocks did it take for miners to include this transaction? // blocksToConfirm is 1-based, so a transaction included in the earliest // possible block has confirmation count of 1 - int blocksToConfirm = nBlockHeight - entry.GetHeight(); + int blocksToConfirm = nBlockHeight - entry->GetHeight(); if (blocksToConfirm <= 0) { // This can't happen because we don't process transactions from a block with a height // lower than our greatest seen height @@ -353,13 +353,13 @@ void CBlockPolicyEstimator::processBlockTx(unsigned int nBlockHeight, const CTxM } // Feerates are stored and reported as BTC-per-kb: - CFeeRate feeRate(entry.GetFee(), entry.GetTxSize()); + CFeeRate feeRate(entry->GetFee(), entry->GetTxSize()); feeStats.Record(blocksToConfirm, (double)feeRate.GetFeePerK()); } void CBlockPolicyEstimator::processBlock(unsigned int nBlockHeight, - std::vector<CTxMemPoolEntry>& entries) + std::vector<const CTxMemPoolEntry*>& entries) { if (nBlockHeight <= nBestSeenHeight) { // Ignore side chains and re-orgs; assuming they are random diff --git a/src/policy/fees.h b/src/policy/fees.h index a61ae18130..e1684ebcb9 100644 --- a/src/policy/fees.h +++ b/src/policy/fees.h @@ -203,10 +203,10 @@ public: /** Process all the transactions that have been included in a block */ void processBlock(unsigned int nBlockHeight, - std::vector<CTxMemPoolEntry>& entries); + std::vector<const CTxMemPoolEntry*>& entries); /** Process a transaction confirmed in a block*/ - void processBlockTx(unsigned int nBlockHeight, const CTxMemPoolEntry& entry); + void processBlockTx(unsigned int nBlockHeight, const CTxMemPoolEntry* entry); /** Process a transaction accepted to the mempool*/ void processTransaction(const CTxMemPoolEntry& entry, bool validFeeEstimate); diff --git a/src/txmempool.cpp b/src/txmempool.cpp index e97099eb28..4f4540a1fc 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -594,14 +594,14 @@ void CTxMemPool::removeConflicts(const CTransaction &tx) void CTxMemPool::removeForBlock(const std::vector<CTransactionRef>& vtx, unsigned int nBlockHeight) { LOCK(cs); - std::vector<CTxMemPoolEntry> entries; + std::vector<const CTxMemPoolEntry*> entries; for (const auto& tx : vtx) { uint256 hash = tx->GetHash(); indexed_transaction_set::iterator i = mapTx.find(hash); if (i != mapTx.end()) - entries.push_back(*i); + entries.push_back(&*i); } // Before the txs in the new block have been removed from the mempool, update policy estimates minerPolicyEstimator->processBlock(nBlockHeight, entries); |