From e31ddaa61aa8e1db16de3193444d455bdf8dffbf Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Mon, 27 Feb 2017 16:50:44 -0800 Subject: [PATCH] mining: remove mod size from priority. better free calculation. --- lib/mempool/mempool.js | 2 +- lib/mempool/mempoolentry.js | 3 +-- lib/mining/miner.js | 7 +++++++ lib/mining/minerblock.js | 5 +++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/mempool/mempool.js b/lib/mempool/mempool.js index c157fd13..2978edb7 100644 --- a/lib/mempool/mempool.js +++ b/lib/mempool/mempool.js @@ -823,7 +823,7 @@ Mempool.prototype.verify = co(function* verify(entry, view) { } // Make sure this guy gave a decent fee. - minFee = tx.getMinFee(entry.size, this.options.minRelay); + minFee = policy.getMinFee(entry.size, this.options.minRelay); if (this.options.relayPriority && entry.fee < minFee) { if (!entry.isFree(height)) { diff --git a/lib/mempool/mempoolentry.js b/lib/mempool/mempoolentry.js index 66596dc0..98347c75 100644 --- a/lib/mempool/mempoolentry.js +++ b/lib/mempool/mempoolentry.js @@ -139,8 +139,7 @@ MempoolEntry.fromTX = function fromTX(tx, view, height) { MempoolEntry.prototype.getPriority = function getPriority(height) { var heightDelta = height - this.height; - var modSize = this.tx.getModifiedSize(this.size); - var deltaPriority = (heightDelta * this.value) / modSize; + var deltaPriority = (heightDelta * this.value) / this.size; var result = this.priority + Math.floor(deltaPriority); if (result < 0) result = 0; diff --git a/lib/mining/miner.js b/lib/mining/miner.js index f9add2a8..bb5db248 100644 --- a/lib/mining/miner.js +++ b/lib/mining/miner.js @@ -630,6 +630,8 @@ MinerOptions.fromOptions = function fromOptions(options) { */ function cmpPriority(a, b) { + if (a.priority === b.priority) + return cmpRate(a, b); return b.priority - a.priority; } @@ -643,6 +645,11 @@ function cmpRate(a, b) { if (b.descRate > b.rate) y = b.descRate; + if (x === y) { + x = a.priority; + y = b.priority; + } + return y - x; } diff --git a/lib/mining/minerblock.js b/lib/mining/minerblock.js index ca91566c..a577857a 100644 --- a/lib/mining/minerblock.js +++ b/lib/mining/minerblock.js @@ -21,6 +21,7 @@ var Output = require('../primitives/output'); var mine = require('./mine'); var workerPool = require('../workers/workerpool').pool; var consensus = require('../protocol/consensus'); +var policy = require('../protocol/policy'); var encoding = require('../utils/encoding'); /** @@ -584,8 +585,8 @@ function BlockEntry(tx) { this.priority = 0; this.free = false; this.sigops = 0; - this.depCount = 0; this.descRate = 0; + this.depCount = 0; } /** @@ -619,7 +620,7 @@ BlockEntry.fromEntry = function fromEntry(entry, attempt) { item.fee = entry.getFee(); item.rate = entry.getRate(); item.priority = entry.getPriority(attempt.height); - item.free = entry.isFree(attempt.height); + item.free = item.fee < policy.getMinFee(entry.size); item.sigops = entry.sigops; item.descRate = entry.getDescRate(); return item;