diff --git a/src/wallet.js b/src/wallet.js index 5c153cc..e3180cc 100644 --- a/src/wallet.js +++ b/src/wallet.js @@ -191,14 +191,12 @@ var Wallet = function (seed, options) { totalInValue += output.value if(totalInValue < value) continue; - var fee = fixedFee || tx.estimateFee() + var fee = fixedFee || estimateFeePadChangeOutput(tx) if(totalInValue < value + fee) continue; var change = totalInValue - value - fee - var changeAddress = getChangeAddress() if(change > 0) { - tx.addOutput(changeAddress, change) - // TODO: recalculate fee + tx.addOutput(getChangeAddress(), change) } break; } @@ -207,6 +205,12 @@ var Wallet = function (seed, options) { return tx } + function estimateFeePadChangeOutput(tx){ + var tmpTx = tx.clone() + tmpTx.addOutput(getChangeAddress(), 0) + return tmpTx.estimateFee() + } + function getChangeAddress() { if(me.changeAddresses.length === 0) me.generateChangeAddress() return me.changeAddresses[me.changeAddresses.length - 1]