always assume change output exists when estimating fee

This commit is contained in:
Wei Lu 2014-03-24 01:01:50 +08:00
parent 2dc0f69d00
commit 8f0413da98

View file

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