private Transaction CombineSignaturesCore(Transaction signed1, Transaction signed2) { if (signed1 == null) { return(signed2); } if (signed2 == null) { return(signed1); } var tx = signed1.Clone(); for (int i = 0; i < tx.Inputs.Count; i++) { if (i >= signed2.Inputs.Count) { break; } var txIn = tx.Inputs[i]; var coin = FindCoin(txIn.PrevOut); var scriptPubKey = coin == null ? (DeduceScriptPubKey(txIn.ScriptSig) ?? DeduceScriptPubKey(signed2.Inputs[i].ScriptSig)) : coin.ScriptPubKey; tx.Inputs[i].ScriptSig = Script.CombineSignatures( scriptPubKey, tx, i, signed1.Inputs[i].ScriptSig, signed2.Inputs[i].ScriptSig); } return(tx); }