aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Morcos <morcos@chaincode.com>2017-03-07 15:01:50 -0500
committerAlex Morcos <morcos@chaincode.com>2017-05-10 11:47:44 -0400
commit10f7cbd2471ae289d2846e09c4b088fdc0330c8f (patch)
tree09377865a8899abf9bdc028cf6652c1e7a2b1c57
parent3810e976d6a3956dff9e66077415cf04c1fe1f90 (diff)
downloadbitcoin-10f7cbd2471ae289d2846e09c4b088fdc0330c8f.tar.xz
Track first recorded height
Track the first time we seen txs in a block that we have been tracking in our mempool. Used to evaluate validity of fee estimates for different targets.
-rw-r--r--src/policy/fees.cpp7
-rw-r--r--src/policy/fees.h4
2 files changed, 10 insertions, 1 deletions
diff --git a/src/policy/fees.cpp b/src/policy/fees.cpp
index 2b22d59ffb..cba063aea9 100644
--- a/src/policy/fees.cpp
+++ b/src/policy/fees.cpp
@@ -477,7 +477,7 @@ bool CBlockPolicyEstimator::removeTx(uint256 hash, bool inBlock)
}
CBlockPolicyEstimator::CBlockPolicyEstimator()
- : nBestSeenHeight(0), trackedTxs(0), untrackedTxs(0)
+ : nBestSeenHeight(0), firstRecordedHeight(0), trackedTxs(0), untrackedTxs(0)
{
static_assert(MIN_BUCKET_FEERATE > 0, "Min feerate must be nonzero");
minTrackedFee = CFeeRate(MIN_BUCKET_FEERATE);
@@ -603,6 +603,11 @@ void CBlockPolicyEstimator::processBlock(unsigned int nBlockHeight,
countedTxs++;
}
+ if (firstRecordedHeight == 0 && countedTxs > 0) {
+ firstRecordedHeight = nBestSeenHeight;
+ LogPrint(BCLog::ESTIMATEFEE, "Blockpolicy first recorded height %u\n", firstRecordedHeight);
+ }
+
LogPrint(BCLog::ESTIMATEFEE, "Blockpolicy after updating estimates for %u of %u txs in block, since last block %u of %u tracked, new mempool map size %u\n",
countedTxs, entries.size(), trackedTxs, trackedTxs + untrackedTxs, mapMemPoolTxs.size());
diff --git a/src/policy/fees.h b/src/policy/fees.h
index 7064ad15c1..3184aa08ab 100644
--- a/src/policy/fees.h
+++ b/src/policy/fees.h
@@ -173,6 +173,10 @@ public:
private:
CFeeRate minTrackedFee; //!< Passed to constructor to avoid dependency on main
unsigned int nBestSeenHeight;
+ unsigned int firstRecordedHeight;
+ unsigned int historicalFirst;
+ unsigned int historicalBest;
+
struct TxStatsInfo
{
unsigned int blockHeight;