@@ -55,7 +55,7 @@ class TxConfirmStats
55
55
56
56
// Sum the total feerate of all tx's in each bucket
57
57
// Track the historical moving average of this total over blocks
58
- std::vector<double > avg ;
58
+ std::vector<double > m_feerate_avg ;
59
59
60
60
// Combine the conf counts with tx counts to calculate the confirmation % for each Y,X
61
61
// Combine the total value with the tx counts to calculate the avg feerate per bucket
@@ -137,11 +137,9 @@ class TxConfirmStats
137
137
TxConfirmStats::TxConfirmStats (const std::vector<double >& defaultBuckets,
138
138
const std::map<double , unsigned int >& defaultBucketMap,
139
139
unsigned int maxPeriods, double _decay, unsigned int _scale)
140
- : buckets(defaultBuckets), bucketMap(defaultBucketMap)
140
+ : buckets(defaultBuckets), bucketMap(defaultBucketMap), decay(_decay), scale(_scale)
141
141
{
142
- decay = _decay;
143
142
assert (_scale != 0 && " _scale must be non-zero" );
144
- scale = _scale;
145
143
confAvg.resize (maxPeriods);
146
144
for (unsigned int i = 0 ; i < maxPeriods; i++) {
147
145
confAvg[i].resize (buckets.size ());
@@ -152,7 +150,7 @@ TxConfirmStats::TxConfirmStats(const std::vector<double>& defaultBuckets,
152
150
}
153
151
154
152
txCtAvg.resize (buckets.size ());
155
- avg .resize (buckets.size ());
153
+ m_feerate_avg .resize (buckets.size ());
156
154
157
155
resizeInMemoryCounters (buckets.size ());
158
156
}
@@ -170,24 +168,24 @@ void TxConfirmStats::resizeInMemoryCounters(size_t newbuckets) {
170
168
void TxConfirmStats::ClearCurrent (unsigned int nBlockHeight)
171
169
{
172
170
for (unsigned int j = 0 ; j < buckets.size (); j++) {
173
- oldUnconfTxs[j] += unconfTxs[nBlockHeight% unconfTxs.size ()][j];
171
+ oldUnconfTxs[j] += unconfTxs[nBlockHeight % unconfTxs.size ()][j];
174
172
unconfTxs[nBlockHeight%unconfTxs.size ()][j] = 0 ;
175
173
}
176
174
}
177
175
178
176
179
- void TxConfirmStats::Record (int blocksToConfirm, double val )
177
+ void TxConfirmStats::Record (int blocksToConfirm, double feerate )
180
178
{
181
179
// blocksToConfirm is 1-based
182
180
if (blocksToConfirm < 1 )
183
181
return ;
184
- int periodsToConfirm = (blocksToConfirm + scale - 1 )/ scale;
185
- unsigned int bucketindex = bucketMap.lower_bound (val )->second ;
182
+ int periodsToConfirm = (blocksToConfirm + scale - 1 ) / scale;
183
+ unsigned int bucketindex = bucketMap.lower_bound (feerate )->second ;
186
184
for (size_t i = periodsToConfirm; i <= confAvg.size (); i++) {
187
185
confAvg[i - 1 ][bucketindex]++;
188
186
}
189
187
txCtAvg[bucketindex]++;
190
- avg [bucketindex] += val ;
188
+ m_feerate_avg [bucketindex] += feerate ;
191
189
}
192
190
193
191
void TxConfirmStats::UpdateMovingAverages ()
@@ -197,8 +195,8 @@ void TxConfirmStats::UpdateMovingAverages()
197
195
confAvg[i][j] = confAvg[i][j] * decay;
198
196
for (unsigned int i = 0 ; i < failAvg.size (); i++)
199
197
failAvg[i][j] = failAvg[i][j] * decay;
200
- avg [j] = avg[j] * decay;
201
- txCtAvg[j] = txCtAvg[j] * decay;
198
+ m_feerate_avg [j] *= decay;
199
+ txCtAvg[j] *= decay;
202
200
}
203
201
}
204
202
@@ -212,8 +210,8 @@ double TxConfirmStats::EstimateMedianVal(int confTarget, double sufficientTxVal,
212
210
double totalNum = 0 ; // Total number of tx's that were ever confirmed
213
211
int extraNum = 0 ; // Number of tx's still in mempool for confTarget or longer
214
212
double failNum = 0 ; // Number of tx's that were never confirmed but removed from the mempool after confTarget
215
- int periodTarget = (confTarget + scale - 1 )/ scale;
216
- int maxbucketindex = buckets.size () - 1 ;
213
+ const int periodTarget = (confTarget + scale - 1 ) / scale;
214
+ const int maxbucketindex = buckets.size () - 1 ;
217
215
218
216
// We'll combine buckets until we have enough samples.
219
217
// The near and far variables will define the range we've combined
@@ -243,7 +241,7 @@ double TxConfirmStats::EstimateMedianVal(int confTarget, double sufficientTxVal,
243
241
totalNum += txCtAvg[bucket];
244
242
failNum += failAvg[periodTarget - 1 ][bucket];
245
243
for (unsigned int confct = confTarget; confct < GetMaxConfirms (); confct++)
246
- extraNum += unconfTxs[(nBlockHeight - confct)% bins][bucket];
244
+ extraNum += unconfTxs[(nBlockHeight - confct) % bins][bucket];
247
245
extraNum += oldUnconfTxs[bucket];
248
246
// If we have enough transaction data points in this range of buckets,
249
247
// we can test for success
@@ -307,7 +305,7 @@ double TxConfirmStats::EstimateMedianVal(int confTarget, double sufficientTxVal,
307
305
if (txCtAvg[j] < txSum)
308
306
txSum -= txCtAvg[j];
309
307
else { // we're in the right bucket
310
- median = avg [j] / txCtAvg[j];
308
+ median = m_feerate_avg [j] / txCtAvg[j];
311
309
break ;
312
310
}
313
311
}
@@ -351,7 +349,7 @@ void TxConfirmStats::Write(CAutoFile& fileout) const
351
349
{
352
350
fileout << decay;
353
351
fileout << scale;
354
- fileout << avg ;
352
+ fileout << m_feerate_avg ;
355
353
fileout << txCtAvg;
356
354
fileout << confAvg;
357
355
fileout << failAvg;
@@ -374,8 +372,8 @@ void TxConfirmStats::Read(CAutoFile& filein, int nFileVersion, size_t numBuckets
374
372
throw std::runtime_error (" Corrupt estimates file. Scale must be non-zero" );
375
373
}
376
374
377
- filein >> avg ;
378
- if (avg .size () != numBuckets) {
375
+ filein >> m_feerate_avg ;
376
+ if (m_feerate_avg .size () != numBuckets) {
379
377
throw std::runtime_error (" Corrupt estimates file. Mismatch in feerate average bucket count" );
380
378
}
381
379
filein >> txCtAvg;
0 commit comments