diff --git a/TransactionBuilder.js b/TransactionBuilder.js index 28a13c32e..14e84e511 100644 --- a/TransactionBuilder.js +++ b/TransactionBuilder.js @@ -769,7 +769,8 @@ TransactionBuilder.fromObj = function(data) { return b; }; -TransactionBuilder.merge = function(b) { + +TransactionBuilder._checkMergeability = function(b) { // Builder should have the same params ['valueInSat', 'valueOutSat', 'feeSat', 'remainderSat', 'signhash', 'spendUnconfirmed'] .forEach(function (k) { @@ -820,14 +821,103 @@ TransactionBuilder.merge = function(b) { if (err) throw new Error('mismatch at TransactionBuilder inputMap #' + i-1 + ' Key:' + err); +}; + + +// this assumes that the same signature can not be v0 / v1 (which shouldnt be!) +TransactionBuilder.prototype._mergeInputSig = function(s0buf, s1buf) { + if (buffertools.compare(s0buf,s1buf) === 0) { + console.log('BUFFERS .s MATCH'); //TODO + return s0buf; + } + // Is multisig? + var s0 = new Script(s0buf); + var s1 = new Script(s1buf); + var l0 = s0.chunks.length; + var l1 = s1.chunks.length; + var s0map = {}; + + if (l0 && l1 && l0 !== l1) + throw new Error('TX sig types mismatch in merge'); + + if (l0) { + // Look for differences. + for (var i=0; i