|
|
@ -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] |
|
|
|