|
|
@ -351,13 +351,13 @@ WalletService.prototype._getBlockExplorer = function(provider, network) { |
|
|
|
return this.blockExplorer; |
|
|
|
|
|
|
|
switch (provider) { |
|
|
|
default: |
|
|
|
default:; |
|
|
|
case 'insight': |
|
|
|
switch (network) { |
|
|
|
default: |
|
|
|
case 'livenet': |
|
|
|
case 'livenet': |
|
|
|
url = 'https://insight.bitpay.com:443'; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 'testnet': |
|
|
|
url = 'https://test-insight.bitpay.com:443' |
|
|
|
break; |
|
|
@ -535,14 +535,14 @@ WalletService.prototype._selectTxInputs = function(txp, cb) { |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a new transaction proposal. |
|
|
|
* @param {Object} opts |
|
|
|
* @param {string} opts.toAddress - Destination address. |
|
|
|
* @param {number} opts.amount - Amount to transfer in satoshi. |
|
|
|
* @param {string} opts.message - A message to attach to this transaction. |
|
|
|
* @param {string} opts.proposalSignature - S(toAddress|amount|message). Used by other copayers to verify the proposal. |
|
|
|
* @param {string} opts.proposalSignature - S(toAddress|amount|message|payProUrl). Used by other copayers to verify the proposal. |
|
|
|
* @param {string} opts.payProUrl - Options: Paypro URL for peers to verify TX |
|
|
|
* @returns {TxProposal} Transaction proposal. |
|
|
|
*/ |
|
|
|
WalletService.prototype.createTx = function(opts, cb) { |
|
|
@ -557,7 +557,7 @@ WalletService.prototype.createTx = function(opts, cb) { |
|
|
|
if (!wallet.isComplete()) return cb(new ClientError('Wallet is not complete')); |
|
|
|
|
|
|
|
var copayer = wallet.getCopayer(self.copayerId); |
|
|
|
var hash = WalletUtils.getProposalHash(opts.toAddress, opts.amount, opts.message); |
|
|
|
var hash = WalletUtils.getProposalHash(opts.toAddress, opts.amount, opts.message, opts.payProUrl); |
|
|
|
if (!self._verifySignature(hash, opts.proposalSignature, copayer.requestPubKey)) |
|
|
|
return cb(new ClientError('Invalid proposal signature')); |
|
|
|
|
|
|
@ -585,6 +585,7 @@ WalletService.prototype.createTx = function(opts, cb) { |
|
|
|
amount: opts.amount, |
|
|
|
message: opts.message, |
|
|
|
proposalSignature: opts.proposalSignature, |
|
|
|
payProUrl: opts.payProUrl, |
|
|
|
changeAddress: changeAddress, |
|
|
|
requiredSignatures: wallet.m, |
|
|
|
requiredRejections: Math.min(wallet.m, wallet.n - wallet.m + 1), |
|
|
|