2015-02-16 14:54:38 -08:00
|
|
|
var _ = require('lodash');
|
|
|
|
|
|
|
|
var Bitcore = require('bitcore');
|
|
|
|
var BitcoreAddress = Bitcore.Address;
|
|
|
|
|
2015-02-17 08:11:14 -08:00
|
|
|
function WalletUtils() {};
|
2015-02-16 14:54:38 -08:00
|
|
|
|
2015-02-17 08:11:14 -08:00
|
|
|
WalletUtils.deriveAddress = function(publicKeyRing, path, m, network) {
|
2015-02-16 14:54:38 -08:00
|
|
|
|
|
|
|
var publicKeys = _.map(publicKeyRing, function(xPubKey) {
|
|
|
|
var xpub = new Bitcore.HDPublicKey(xPubKey);
|
|
|
|
return xpub.derive(path).publicKey;
|
|
|
|
});
|
|
|
|
|
|
|
|
var bitcoreAddress = BitcoreAddress.createMultisig(publicKeys, m, network);
|
|
|
|
|
|
|
|
return {
|
|
|
|
address: bitcoreAddress.toString(),
|
|
|
|
path: path,
|
|
|
|
publicKeys: _.invoke(publicKeys, 'toString'),
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2015-02-17 08:11:14 -08:00
|
|
|
WalletUtils.getProposalHash = function(toAddress, amount, message) {
|
|
|
|
return toAddress + '|' + amount + '|' + (message || '');
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = WalletUtils;
|