コード例 #1
0
        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);
        }