mv Utils.deriveAddress -> Address.derive
This commit is contained in:
parent
795097bf04
commit
2bec543c6f
|
@ -126,32 +126,6 @@ Utils.buildTx = function(txp) {
|
||||||
return t;
|
return t;
|
||||||
};
|
};
|
||||||
|
|
||||||
Utils.deriveAddress = function(scriptType, publicKeyRing, path, m, network) {
|
|
||||||
$.checkArgument(_.contains(_.values(Constants.SCRIPT_TYPES), scriptType));
|
|
||||||
|
|
||||||
var publicKeys = _.map(publicKeyRing, function(item) {
|
|
||||||
var xpub = new Bitcore.HDPublicKey(item.xPubKey);
|
|
||||||
return xpub.derive(path).publicKey;
|
|
||||||
});
|
|
||||||
|
|
||||||
var bitcoreAddress;
|
|
||||||
switch (scriptType) {
|
|
||||||
case Constants.SCRIPT_TYPES.P2SH:
|
|
||||||
bitcoreAddress = Address.createMultisig(publicKeys, m, network);
|
|
||||||
break;
|
|
||||||
case Constants.SCRIPT_TYPES.P2PKH:
|
|
||||||
$.checkState(_.isArray(publicKeys) && publicKeys.length == 1);
|
|
||||||
bitcoreAddress = Address.fromPublicKey(publicKeys[0], network);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
address: bitcoreAddress.toString(),
|
|
||||||
path: path,
|
|
||||||
publicKeys: _.invoke(publicKeys, 'toString'),
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
Utils.formatAmount = function(satoshis, unit, opts) {
|
Utils.formatAmount = function(satoshis, unit, opts) {
|
||||||
var UNITS = {
|
var UNITS = {
|
||||||
btc: {
|
btc: {
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
var $ = require('preconditions').singleton();
|
||||||
|
var _ = require('lodash');
|
||||||
|
|
||||||
var Bitcore = require('bitcore-lib');
|
var Bitcore = require('bitcore-lib');
|
||||||
var Constants = require('../common/constants');
|
var Constants = require('../common/constants');
|
||||||
|
|
||||||
|
@ -39,4 +42,40 @@ Address.fromObj = function(obj) {
|
||||||
return x;
|
return x;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Address._deriveAddress = function(scriptType, publicKeyRing, path, m, network) {
|
||||||
|
$.checkArgument(_.contains(_.values(Constants.SCRIPT_TYPES), scriptType));
|
||||||
|
|
||||||
|
var publicKeys = _.map(publicKeyRing, function(item) {
|
||||||
|
var xpub = new Bitcore.HDPublicKey(item.xPubKey);
|
||||||
|
return xpub.derive(path).publicKey;
|
||||||
|
});
|
||||||
|
|
||||||
|
var bitcoreAddress;
|
||||||
|
switch (scriptType) {
|
||||||
|
case Constants.SCRIPT_TYPES.P2SH:
|
||||||
|
bitcoreAddress = Bitcore.Address.createMultisig(publicKeys, m, network);
|
||||||
|
break;
|
||||||
|
case Constants.SCRIPT_TYPES.P2PKH:
|
||||||
|
$.checkState(_.isArray(publicKeys) && publicKeys.length == 1);
|
||||||
|
bitcoreAddress = Bitcore.Address.fromPublicKey(publicKeys[0], network);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
address: bitcoreAddress.toString(),
|
||||||
|
path: path,
|
||||||
|
publicKeys: _.invoke(publicKeys, 'toString'),
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Address.derive = function(walletId, scriptType, publicKeyRing, path, m, network, isChange) {
|
||||||
|
var raw = Address._deriveAddress(scriptType, publicKeyRing, path, m, network);
|
||||||
|
return Address.create(_.extend(raw, {
|
||||||
|
walletId: walletId,
|
||||||
|
type: scriptType,
|
||||||
|
isChange: isChange,
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
module.exports = Address;
|
module.exports = Address;
|
||||||
|
|
|
@ -10,7 +10,7 @@ var Address = require('./address');
|
||||||
var AddressManager = require('./addressmanager');
|
var AddressManager = require('./addressmanager');
|
||||||
var Bitcore = require('bitcore-lib');
|
var Bitcore = require('bitcore-lib');
|
||||||
|
|
||||||
var Common = require('../common');
|
var Constants = require('../common/constants');
|
||||||
|
|
||||||
function Copayer() {};
|
function Copayer() {};
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ Copayer.create = function(opts) {
|
||||||
signature: opts.signature,
|
signature: opts.signature,
|
||||||
}];
|
}];
|
||||||
|
|
||||||
var derivationStrategy = opts.derivationStrategy || Common.Constants.DERIVATION_STRATEGIES.BIP45;
|
var derivationStrategy = opts.derivationStrategy || Constants.DERIVATION_STRATEGIES.BIP45;
|
||||||
if (AddressManager.supportsCopayerBranches(derivationStrategy)) {
|
if (AddressManager.supportsCopayerBranches(derivationStrategy)) {
|
||||||
x.addressManager = AddressManager.create({
|
x.addressManager = AddressManager.create({
|
||||||
derivationStrategy: derivationStrategy,
|
derivationStrategy: derivationStrategy,
|
||||||
|
@ -87,13 +87,7 @@ Copayer.prototype.createAddress = function(wallet, isChange) {
|
||||||
$.checkState(wallet.isComplete());
|
$.checkState(wallet.isComplete());
|
||||||
|
|
||||||
var path = this.addressManager.getNewAddressPath(isChange);
|
var path = this.addressManager.getNewAddressPath(isChange);
|
||||||
var raw = Address.create(Common.Utils.deriveAddress(wallet.addressType, wallet.publicKeyRing, path, wallet.m, wallet.network));
|
var address = Address.derive(wallet.id, wallet.addressType, wallet.publicKeyRing, path, wallet.m, wallet.network, isChange);
|
||||||
var address = Address.create(_.extend(raw, {
|
|
||||||
walletId: wallet.id,
|
|
||||||
type: wallet.addressType,
|
|
||||||
}));
|
|
||||||
|
|
||||||
address.isChange = isChange;
|
|
||||||
return address;
|
return address;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,7 @@ var Address = require('./address');
|
||||||
var Copayer = require('./copayer');
|
var Copayer = require('./copayer');
|
||||||
var AddressManager = require('./addressmanager');
|
var AddressManager = require('./addressmanager');
|
||||||
|
|
||||||
var Common = require('../common');
|
var Constants = require('../common/constants');
|
||||||
var Constants = Common.Constants;
|
|
||||||
|
|
||||||
function Wallet() {};
|
function Wallet() {};
|
||||||
|
|
||||||
|
@ -155,12 +154,7 @@ Wallet.prototype.createAddress = function(isChange) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
var path = this.addressManager.getNewAddressPath(isChange);
|
var path = this.addressManager.getNewAddressPath(isChange);
|
||||||
var raw = Common.Utils.deriveAddress(this.addressType, this.publicKeyRing, path, this.m, this.network);
|
var address = Address.derive(self.id, this.addressType, this.publicKeyRing, path, this.m, this.network, isChange);
|
||||||
var address = Address.create(_.extend(raw, {
|
|
||||||
walletId: self.id,
|
|
||||||
type: self.addressType,
|
|
||||||
}));
|
|
||||||
address.isChange = isChange;
|
|
||||||
return address;
|
return address;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue