mv Utils.deriveAddress -> Address.derive

This commit is contained in:
Ivan Socolsky 2015-11-03 12:21:31 -03:00
parent 795097bf04
commit 2bec543c6f
4 changed files with 44 additions and 43 deletions

View File

@ -126,32 +126,6 @@ Utils.buildTx = function(txp) {
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) {
var UNITS = {
btc: {

View File

@ -1,5 +1,8 @@
'use strict';
var $ = require('preconditions').singleton();
var _ = require('lodash');
var Bitcore = require('bitcore-lib');
var Constants = require('../common/constants');
@ -39,4 +42,40 @@ Address.fromObj = function(obj) {
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;

View File

@ -10,7 +10,7 @@ var Address = require('./address');
var AddressManager = require('./addressmanager');
var Bitcore = require('bitcore-lib');
var Common = require('../common');
var Constants = require('../common/constants');
function Copayer() {};
@ -41,7 +41,7 @@ Copayer.create = function(opts) {
signature: opts.signature,
}];
var derivationStrategy = opts.derivationStrategy || Common.Constants.DERIVATION_STRATEGIES.BIP45;
var derivationStrategy = opts.derivationStrategy || Constants.DERIVATION_STRATEGIES.BIP45;
if (AddressManager.supportsCopayerBranches(derivationStrategy)) {
x.addressManager = AddressManager.create({
derivationStrategy: derivationStrategy,
@ -87,13 +87,7 @@ Copayer.prototype.createAddress = function(wallet, isChange) {
$.checkState(wallet.isComplete());
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.create(_.extend(raw, {
walletId: wallet.id,
type: wallet.addressType,
}));
address.isChange = isChange;
var address = Address.derive(wallet.id, wallet.addressType, wallet.publicKeyRing, path, wallet.m, wallet.network, isChange);
return address;
};

View File

@ -9,8 +9,7 @@ var Address = require('./address');
var Copayer = require('./copayer');
var AddressManager = require('./addressmanager');
var Common = require('../common');
var Constants = Common.Constants;
var Constants = require('../common/constants');
function Wallet() {};
@ -155,12 +154,7 @@ Wallet.prototype.createAddress = function(isChange) {
var self = this;
var path = this.addressManager.getNewAddressPath(isChange);
var raw = Common.Utils.deriveAddress(this.addressType, this.publicKeyRing, path, this.m, this.network);
var address = Address.create(_.extend(raw, {
walletId: self.id,
type: self.addressType,
}));
address.isChange = isChange;
var address = Address.derive(self.id, this.addressType, this.publicKeyRing, path, this.m, this.network, isChange);
return address;
};