Merge pull request #233 from weilu/pending-spending-utxo
wallet: reintroduce output.to to track pending spent utxo
This commit is contained in:
commit
ab20febbdc
2 changed files with 15 additions and 6 deletions
|
@ -65,7 +65,7 @@ function Wallet(seed, network) {
|
|||
|
||||
for(var key in this.outputs){
|
||||
var output = this.outputs[key]
|
||||
utxo.push(outputToUnspentOutput(output))
|
||||
if(!output.to) utxo.push(outputToUnspentOutput(output))
|
||||
}
|
||||
|
||||
return utxo
|
||||
|
@ -167,7 +167,7 @@ function Wallet(seed, network) {
|
|||
}
|
||||
})
|
||||
|
||||
tx.ins.forEach(function(txIn) {
|
||||
tx.ins.forEach(function(txIn, i) {
|
||||
// copy and convert to big-endian hex
|
||||
var txinId = new Buffer(txIn.hash)
|
||||
Array.prototype.reverse.call(txinId)
|
||||
|
@ -178,10 +178,11 @@ function Wallet(seed, network) {
|
|||
if (!(output in me.outputs)) return
|
||||
|
||||
if (isPending) {
|
||||
return me.outputs[output].pending = true
|
||||
}
|
||||
|
||||
me.outputs[output].to = txid + ':' + i
|
||||
me.outputs[output].pending = true
|
||||
} else {
|
||||
delete me.outputs[output]
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -215,6 +215,13 @@ describe('Wallet', function() {
|
|||
it('parses wallet outputs to the expect format', function(){
|
||||
assert.deepEqual(wallet.getUnspentOutputs(), [expectedUtxo])
|
||||
})
|
||||
|
||||
it("ignores pending spending outputs (outputs with 'to' property)", function(){
|
||||
var output = wallet.outputs[expectedOutputKey]
|
||||
output.to = fakeTxId(0) + ':' + 0
|
||||
output.pending = true
|
||||
assert.deepEqual(wallet.getUnspentOutputs(), [])
|
||||
})
|
||||
})
|
||||
|
||||
describe('setUnspentOutputs', function(){
|
||||
|
@ -280,7 +287,7 @@ describe('Wallet', function() {
|
|||
spendTx = Transaction.fromHex(fixtureTx2Hex)
|
||||
})
|
||||
|
||||
it("outgoing: sets the pending flag on output instead of deleting it", function(){
|
||||
it("outgoing: sets the pending flag and 'to' on output", function(){
|
||||
var txIn = spendTx.ins[0]
|
||||
var txInId = new Buffer(txIn.hash)
|
||||
Array.prototype.reverse.call(txInId)
|
||||
|
@ -291,6 +298,7 @@ describe('Wallet', function() {
|
|||
|
||||
wallet.processPendingTx(spendTx)
|
||||
assert(wallet.outputs[key].pending)
|
||||
assert.equal(wallet.outputs[key].to, spendTx.getId() + ':' + 0)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue