From dcacd5e11bf27eca1bfa1af644cee1dc5f7991bb Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Thu, 28 Apr 2016 23:21:18 -0700 Subject: [PATCH] more accurate fee calculation. --- lib/bcoin/mtx.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/bcoin/mtx.js b/lib/bcoin/mtx.js index f233ab8f..95affd97 100644 --- a/lib/bcoin/mtx.js +++ b/lib/bcoin/mtx.js @@ -870,7 +870,8 @@ MTX.prototype.isScripted = function isScripted() { */ MTX.prototype.maxSize = function maxSize(options, force) { - var i, j, input, total, size, prev, m, n; + var scale = constants.WITNESS_SCALE_FACTOR; + var i, j, input, total, size, prev, m, n, sz; var witness, hadWitness, redeem, wallet; if (!force && this.isScripted()) @@ -924,8 +925,9 @@ MTX.prototype.maxSize = function maxSize(options, force) { if (redeem) { prev = redeem; - size += utils.sizePush(prev.getSize()); - size += prev.getSize(); + sz = prev.getSize(); + size += utils.sizePush(sz); + size += sz; } } @@ -950,8 +952,9 @@ MTX.prototype.maxSize = function maxSize(options, force) { if (redeem) { prev = redeem; - size += utils.sizePush(prev.getSize()); - size += prev.getSize(); + sz = prev.getSize(); + size += utils.sizeVarint(sz); + size += sz; } } else if (prev.isWitnessPubkeyhash()) { prev = Script.createPubkeyhash(prev.code[1]); @@ -1019,7 +1022,7 @@ MTX.prototype.maxSize = function maxSize(options, force) { if (witness) { // Add one byte back for the 0-byte input script. size += 1 * 4; - size = (size + 3) / 4 | 0; + size = (size + scale - 1) / scale | 0; } total += size;