From 399052d95a702a499ec108f5bff9ad4f09f0e127 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Thu, 31 Mar 2016 04:47:41 -0700 Subject: [PATCH] fee calculation. --- lib/bcoin/mtx.js | 7 +++---- lib/bcoin/tx.js | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/bcoin/mtx.js b/lib/bcoin/mtx.js index f97c8948..47add704 100644 --- a/lib/bcoin/mtx.js +++ b/lib/bcoin/mtx.js @@ -875,16 +875,15 @@ MTX.prototype.selectCoins = function selectCoins(coins, options) { size = tx.maxSize(options.m, options.n); if (options.free) { - if (newkb == null && tx.isFree(null, size)) { + if (tx.isFree(null, size)) { fee = new bn(0); break; } + options.free = false; } if (options.accurate) { - newkb = size / 1024; - fee = new bn(newkb * minFee | 0); - totalkb = newkb; + fee = tx.getMinFee(size); } else { newkb = Math.ceil(size / 1024) - totalkb; fee.iaddn(newkb * minFee); diff --git a/lib/bcoin/tx.js b/lib/bcoin/tx.js index 696d6da6..3e5bedb7 100644 --- a/lib/bcoin/tx.js +++ b/lib/bcoin/tx.js @@ -1066,6 +1066,20 @@ TX.prototype.getMinFee = function getMinFee(size) { return fee; }; +TX.prototype.getMaxFee = function getMaxFee(size) { + var fee; + + if (size == null) + size = this.maxSize(); + + fee = new bn(constants.tx.minFee).muln(Math.ceil(size / 1000)); + + if (fee.cmpn(0) === 0 && constants.tx.minFee > 0) + fee = new bn(constants.tx.minFee); + + return fee; +}; + TX.prototype.getConfirmations = function getConfirmations(height) { if (height == null) height = network.height;