wallet allows setting unspent outputs
This commit is contained in:
parent
16dc68cbaa
commit
26afbccc98
2 changed files with 56 additions and 0 deletions
|
@ -80,6 +80,23 @@ var Wallet = function (seed, options) {
|
|||
return utxo
|
||||
}
|
||||
|
||||
this.setUnspentOutputs = function(utxo) {
|
||||
var outputs = {}
|
||||
|
||||
utxo.forEach(function(o){
|
||||
var hash = o.hash || convert.reverseEndian(o.hashLittleEndian)
|
||||
var key = hash + ":" + o.outputIndex
|
||||
outputs[key] = {
|
||||
output: key,
|
||||
scriptPubKey: o.scriptPubKey,
|
||||
address: o.address,
|
||||
value: o.value
|
||||
}
|
||||
})
|
||||
|
||||
this.outputs = outputs
|
||||
}
|
||||
|
||||
// Processes a transaction object
|
||||
// If "verified" is true, then we trust the transaction as "final"
|
||||
this.processTx = function(tx, verified) {
|
||||
|
|
|
@ -172,6 +172,40 @@ describe('Wallet', function() {
|
|||
assert.deepEqual(wallet.getUnspentOutputs(), expectedUtxo)
|
||||
})
|
||||
})
|
||||
|
||||
describe('setUnspentOutputs', function(){
|
||||
var utxo;
|
||||
beforeEach(function(){
|
||||
utxo = cloneObject(expectedUtxo)
|
||||
})
|
||||
|
||||
it('uses hashLittleEndian when hash is not present', function(){
|
||||
delete utxo[0]['hash']
|
||||
|
||||
wallet.setUnspentOutputs(utxo)
|
||||
verifyOutputs()
|
||||
})
|
||||
|
||||
it('uses hash when hashLittleEndian is not present', function(){
|
||||
delete utxo[0]['hashLittleEndian']
|
||||
|
||||
wallet.setUnspentOutputs(utxo)
|
||||
verifyOutputs()
|
||||
})
|
||||
|
||||
it('uses hash when both hash and hashLittleEndian are present', function(){
|
||||
wallet.setUnspentOutputs(utxo)
|
||||
verifyOutputs()
|
||||
})
|
||||
|
||||
function verifyOutputs() {
|
||||
var output = wallet.outputs[expectedOutputKey]
|
||||
assert(output)
|
||||
assert.equal(output.value, utxo[0].value)
|
||||
assert.equal(output.address, utxo[0].address)
|
||||
assert.equal(output.scriptPubKey, utxo[0].scriptPubKey)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
function assertEqual(obj1, obj2){
|
||||
|
@ -181,4 +215,9 @@ describe('Wallet', function() {
|
|||
function assertNotEqual(obj1, obj2){
|
||||
assert.notEqual(obj1.toString(), obj2.toString())
|
||||
}
|
||||
|
||||
// quick and dirty: does not deal with functions on object
|
||||
function cloneObject(obj){
|
||||
return JSON.parse(JSON.stringify(obj))
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue