Merge pull request #159 from williamcotton/master

fixed issues with testnet and createTx
This commit is contained in:
Daniel Cousens 2014-05-06 08:04:02 +10:00
commit d65a3c36e2
2 changed files with 33 additions and 5 deletions

View file

@ -2,6 +2,7 @@ var convert = require('./convert')
var Transaction = require('./transaction').Transaction
var HDNode = require('./hdwallet.js')
var rng = require('secure-random')
var Network = require('./network')
function Wallet(seed, options) {
if (!(this instanceof Wallet)) { return new Wallet(seed, options); }
@ -169,11 +170,11 @@ function Wallet(seed, options) {
})
}
this.createTx = function(to, value, fixedFee) {
this.createTx = function(to, value, fixedFee, changeAddress) {
checkDust(value)
var tx = new Transaction()
tx.addOutput(to, value)
tx.addOutput(to, value, Network[network])
var utxo = getCandidateOutputs(value)
var totalInValue = 0
@ -189,7 +190,7 @@ function Wallet(seed, options) {
var change = totalInValue - value - fee
if(change > 0 && !isDust(change)) {
tx.addOutput(getChangeAddress(), change)
tx.addOutput(changeAddress || getChangeAddress(), change, Network[network])
}
break
}
@ -245,7 +246,7 @@ function Wallet(seed, options) {
function estimateFeePadChangeOutput(tx){
var tmpTx = tx.clone()
tmpTx.addOutput(getChangeAddress(), 0)
tmpTx.addOutput(getChangeAddress(), 0, Network[network])
return tmpTx.estimateFee()
}
@ -265,7 +266,7 @@ function Wallet(seed, options) {
tx.ins.forEach(function(inp,i) {
var output = me.outputs[inp.outpoint.hash + ':' + inp.outpoint.index]
if (output) {
tx.sign(i, me.getPrivateKeyForAddress(output.address))
tx.sign(i, me.getPrivateKeyForAddress(output.address), false, Network[network])
}
})
return tx

View file

@ -458,6 +458,33 @@ describe('Wallet', function() {
})
})
describe('testnet', function(){
it('should create transaction', function(){
var to = 'mt7MyTVVEWnbwpF5hBn6fgnJcv95Syk2ue'
var wallet = new Wallet(seed, {network: 'testnet'})
var tx = wallet.createTx(to, value)
assert.equal(tx.outs.length, 1)
})
})
describe('changeAddress', function(){
it('should allow custom changeAddress', function(){
var wallet = new Wallet(seed, {network: 'testnet'})
var address = wallet.generateAddress()
utxo = {
"hash":"b3c5fde139dc0a3bba2729bfd5b9e16f5894131dc3dc46a91151da3053e7e3a5",
"outputIndex": 0,
"address" : address,
"value": 100000
}
var to = "mt7MyTVVEWnbwpF5hBn6fgnJcv95Syk2ue"
var changeAddress = 'mfrFjnKZUvTcvdAK2fUX5D8v1Epu5H8JCk'
wallet.setUnspentOutputs([utxo])
var tx = wallet.createTx(to, 10000, 1000, changeAddress)
assert.equal(tx.outs.length, 2)
})
})
describe('transaction outputs', function(){
it('includes the specified address and amount', function(){
var tx = wallet.createTx(to, value)