fees refactor.

This commit is contained in:
Christopher Jeffrey 2016-06-11 23:14:55 -07:00
parent 927fb9c555
commit 84a04b33e5
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -433,7 +433,7 @@ PolicyEstimator.prototype.processTX = function processTX(entry, current) {
blockHeight: height,
bucketIndex: this.feeStats.addTX(height, rate)
};
bcoin.debug('estimatefee: Rate: %d.', this.estimateFee(1, true));
bcoin.debug('estimatefee: Rate: %d.', this.estimateFee());
} else {
bcoin.debug('estimatefee: Not adding ts %s.', hash);
}
@ -477,7 +477,7 @@ PolicyEstimator.prototype.processBlockTX = function processBlockTX(height, entry
*/
PolicyEstimator.prototype.processBlock = function processBlock(height, entries, current) {
var i, median;
var i;
// Ignore reorgs.
if (height <= this.bestHeight)
@ -494,6 +494,20 @@ PolicyEstimator.prototype.processBlock = function processBlock(height, entries,
bcoin.debug('estimatefee: Recalculating dynamic cutoffs.');
this.feeLikely = this.feeStats.estimateMedian(
2, SUFFICIENT_FEETXS, MIN_SUCCESS_PCT,
true, height);
if (this.feeLikely === -1)
this.feeLikely = INF_FEERATE;
this.feeUnlikely = this.feeStats.estimateMedian(
10, SUFFICIENT_FEETXS, UNLIKELY_PCT,
false, height);
if (this.feeUnlikely === -1)
this.feeUnlikely = 0;
this.priLikely = this.priStats.estimateMedian(
2, SUFFICIENT_PRITXS, MIN_SUCCESS_PCT,
true, height);
@ -501,12 +515,6 @@ PolicyEstimator.prototype.processBlock = function processBlock(height, entries,
if (this.priLikely === -1)
this.priLikely = INF_PRIORITY;
median = this.feeStats.estimateMedian(
2, SUFFICIENT_FEETXS, MIN_SUCCESS_PCT,
true, height);
this.feeLikely = median === -1 ? INF_FEERATE : median;
this.priUnlikely = this.priStats.estimateMedian(
10, SUFFICIENT_PRITXS, UNLIKELY_PCT,
false, height);
@ -514,12 +522,6 @@ PolicyEstimator.prototype.processBlock = function processBlock(height, entries,
if (this.priUnlikely === -1)
this.priUnlikely = 0;
median = this.feeStats.estimateMedian(
10, SUFFICIENT_FEETXS, UNLIKELY_PCT,
false, height);
this.feeUnlikely = median === -1 ? 0 : median;
this.feeStats.clearCurrent(height);
this.priStats.clearCurrent(height);
@ -537,14 +539,20 @@ PolicyEstimator.prototype.processBlock = function processBlock(height, entries,
/**
* Estimate a fee rate.
* @param {Number} target - Confirmation target.
* @param {Boolean?} smart - Smart estimation.
* @param {Boolean} [smart=true] - Smart estimation.
* @returns {Rate}
*/
PolicyEstimator.prototype.estimateFee = function estimateFee(target, smart) {
var rate, minPoolFee;
if (target <= 0 || target > this.feeStats.maxConfirms)
if (!target)
target = 1;
if (smart == null)
smart = true;
if (!(target > 0) || target > this.feeStats.maxConfirms)
return 0;
if (!smart) {
@ -580,15 +588,21 @@ PolicyEstimator.prototype.estimateFee = function estimateFee(target, smart) {
/**
* Estimate a priority.
* @param {Number} target - Confirmation target.
* @param {Boolean?} smart - Smart estimation.
* @param {Boolean} [smart=true] - Smart estimation.
* @returns {Number}
*/
PolicyEstimator.prototype.estimatePriority = function estimatePriority(target, smart) {
var minPoolFee, priority;
if (target <= 0 || target > this.priStats.maxConfirms)
return -1;
if (!target)
target = 1;
if (smart == null)
smart = true;
if (!(target > 0) || target > this.priStats.maxConfirms)
return 0;
if (!smart) {
priority = this.priStats.estimateMedian(
@ -610,6 +624,9 @@ PolicyEstimator.prototype.estimatePriority = function estimatePriority(target, s
target -= 1;
if (priority < 0)
return 0;
return priority;
};