select appropriate Bitcore when building/signing tx proposal

This commit is contained in:
Ivan Socolsky 2017-08-25 16:23:27 -03:00
parent 06b63e0311
commit 58cb560b79
No known key found for this signature in database
GPG Key ID: FAECE6A05FAA4F56
3 changed files with 16 additions and 6 deletions

View File

@ -7,7 +7,10 @@ var log = require('npmlog');
log.debug = log.verbose; log.debug = log.verbose;
log.disableColor(); log.disableColor();
var Bitcore = require('bitcore-lib'); var Bitcore = {
'btc': require('bitcore-lib'),
'bch': require('bitcore-lib-cash'),
};
var Common = require('../common'); var Common = require('../common');
var Constants = Common.Constants, var Constants = Common.Constants,
@ -139,7 +142,7 @@ TxProposal.prototype._updateStatus = function() {
TxProposal.prototype._buildTx = function() { TxProposal.prototype._buildTx = function() {
var self = this; var self = this;
var t = new Bitcore.Transaction(); var t = new Bitcore[self.coin].Transaction();
$.checkState(Utils.checkValueInCollection(self.addressType, Constants.SCRIPT_TYPES)); $.checkState(Utils.checkValueInCollection(self.addressType, Constants.SCRIPT_TYPES));
@ -158,7 +161,7 @@ TxProposal.prototype._buildTx = function() {
_.each(self.outputs, function(o) { _.each(self.outputs, function(o) {
$.checkState(o.script || o.toAddress, 'Output should have either toAddress or script specified'); $.checkState(o.script || o.toAddress, 'Output should have either toAddress or script specified');
if (o.script) { if (o.script) {
t.addOutput(new Bitcore.Transaction.Output({ t.addOutput(new Bitcore[self.coin].Transaction.Output({
script: o.script, script: o.script,
satoshis: o.amount satoshis: o.amount
})); }));
@ -322,21 +325,23 @@ TxProposal.prototype.addAction = function(copayerId, type, comment, signatures,
TxProposal.prototype._addSignaturesToBitcoreTx = function(tx, signatures, xpub) { TxProposal.prototype._addSignaturesToBitcoreTx = function(tx, signatures, xpub) {
var self = this; var self = this;
var bitcore = Bitcore[self.coin];
if (signatures.length != this.inputs.length) if (signatures.length != this.inputs.length)
throw new Error('Number of signatures does not match number of inputs'); throw new Error('Number of signatures does not match number of inputs');
var i = 0, var i = 0,
x = new Bitcore.HDPublicKey(xpub); x = new bitcore.HDPublicKey(xpub);
_.each(signatures, function(signatureHex) { _.each(signatures, function(signatureHex) {
var input = self.inputs[i]; var input = self.inputs[i];
try { try {
var signature = Bitcore.crypto.Signature.fromString(signatureHex); var signature = bitcore.crypto.Signature.fromString(signatureHex);
var pub = x.deriveChild(self.inputPaths[i]).publicKey; var pub = x.deriveChild(self.inputPaths[i]).publicKey;
var s = { var s = {
inputIndex: i, inputIndex: i,
signature: signature, signature: signature,
sigtype: Bitcore.crypto.Signature.SIGHASH_ALL, sigtype: bitcore.crypto.Signature.SIGHASH_ALL,
publicKey: pub, publicKey: pub,
}; };
tx.inputs[i].addSignature(tx, s); tx.inputs[i].addSignature(tx, s);

View File

@ -54,6 +54,7 @@ TxProposal.fromObj = function(obj) {
return TxProposalAction.fromObj(action); return TxProposalAction.fromObj(action);
}); });
x.outputOrder = obj.outputOrder; x.outputOrder = obj.outputOrder;
x.coin = obj.coin || Defaults.COIN;
x.network = obj.network; x.network = obj.network;
x.fee = obj.fee; x.fee = obj.fee;
x.feePerKb = obj.feePerKb; x.feePerKb = obj.feePerKb;

View File

@ -13,6 +13,10 @@ var tingodb = require('tingodb')({
}); });
var Bitcore = require('bitcore-lib'); var Bitcore = require('bitcore-lib');
var Bitcore_ = {
btc: Bitcore,
bch: require('bitcore-lib-cash')
};
var Common = require('../../lib/common'); var Common = require('../../lib/common');
var Utils = Common.Utils; var Utils = Common.Utils;