|
@ -3,14 +3,12 @@ |
|
|
var _ = require('lodash'); |
|
|
var _ = require('lodash'); |
|
|
var util = require('util'); |
|
|
var util = require('util'); |
|
|
var $ = require('preconditions').singleton(); |
|
|
var $ = require('preconditions').singleton(); |
|
|
|
|
|
|
|
|
var Bitcore = require('bitcore'); |
|
|
|
|
|
var BitcoreAddress = Bitcore.Address; |
|
|
|
|
|
var Uuid = require('uuid'); |
|
|
var Uuid = require('uuid'); |
|
|
|
|
|
|
|
|
var Address = require('./address'); |
|
|
var Address = require('./address'); |
|
|
var Copayer = require('./copayer'); |
|
|
var Copayer = require('./copayer'); |
|
|
var AddressManager = require('./addressmanager'); |
|
|
var AddressManager = require('./addressmanager'); |
|
|
|
|
|
var BitcoinUtils = require('../bitcoinutils'); |
|
|
|
|
|
|
|
|
var VERSION = '1.0.0'; |
|
|
var VERSION = '1.0.0'; |
|
|
|
|
|
|
|
@ -28,7 +26,7 @@ function Wallet(opts) { |
|
|
this.addressIndex = 0; |
|
|
this.addressIndex = 0; |
|
|
this.copayers = []; |
|
|
this.copayers = []; |
|
|
this.pubKey = opts.pubKey; |
|
|
this.pubKey = opts.pubKey; |
|
|
this.isTestnet = opts.isTestnet; |
|
|
this.network = opts.network; |
|
|
this.addressManager = new AddressManager(); |
|
|
this.addressManager = new AddressManager(); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
@ -76,7 +74,7 @@ Wallet.fromObj = function(obj) { |
|
|
return Copayer.fromObj(copayer); |
|
|
return Copayer.fromObj(copayer); |
|
|
}); |
|
|
}); |
|
|
x.pubKey = obj.pubKey; |
|
|
x.pubKey = obj.pubKey; |
|
|
x.isTestnet = obj.isTestnet; |
|
|
x.network = obj.network; |
|
|
x.addressManager = AddressManager.fromObj(obj.addressManager); |
|
|
x.addressManager = AddressManager.fromObj(obj.addressManager); |
|
|
|
|
|
|
|
|
return x; |
|
|
return x; |
|
@ -101,13 +99,8 @@ Wallet.prototype.getCopayer = function(copayerId) { |
|
|
}); |
|
|
}); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Wallet.prototype.getNetworkName = function() { |
|
|
Wallet.prototype.getNetworkName = function() { |
|
|
return this.isTestnet ? 'testnet' : 'livenet'; |
|
|
return this.network; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
Wallet.prototype._getBitcoreNetwork = function() { |
|
|
|
|
|
return this.isTestnet ? Bitcore.Networks.testnet : Bitcore.Networks.livenet; |
|
|
|
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -124,19 +117,7 @@ Wallet.prototype.createAddress = function(isChange) { |
|
|
$.checkState(this.isComplete()); |
|
|
$.checkState(this.isComplete()); |
|
|
|
|
|
|
|
|
var path = this.addressManager.getNewAddressPath(isChange); |
|
|
var path = this.addressManager.getNewAddressPath(isChange); |
|
|
|
|
|
return new Address(BitcoinUtils.deriveAddress(this.publicKeyRing, path, this.m, this.network)); |
|
|
var publicKeys = _.map(this.copayers, function(copayer) { |
|
|
|
|
|
var xpub = new Bitcore.HDPublicKey(copayer.xPubKey); |
|
|
|
|
|
return xpub.derive(path).publicKey; |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var bitcoreAddress = BitcoreAddress.createMultisig(publicKeys, this.m, this._getBitcoreNetwork()); |
|
|
|
|
|
|
|
|
|
|
|
return new Address({ |
|
|
|
|
|
address: bitcoreAddress.toString(), |
|
|
|
|
|
path: path, |
|
|
|
|
|
publicKeys: _.invoke(publicKeys, 'toString'), |
|
|
|
|
|
}); |
|
|
|
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|