Example #1
0
        private IDisposable StartTxValidator(ChainedHeader chainedHeader)
        {
            return(this.txValidator.Start(loadedTxes.GetConsumingEnumerable(),
                                          loadedTx =>
            {
                if (!this.rules.IgnoreScripts)
                {
                    var transaction = loadedTx.Transaction;
                    var txIndex = loadedTx.TxIndex;
                    var prevTxOutputs = loadedTx.PrevTxOutputs;

                    if (txIndex > 0)
                    {
                        for (var inputIndex = 0; inputIndex < transaction.Inputs.Length; inputIndex++)
                        {
                            var txInput = transaction.Inputs[inputIndex];
                            var prevTxOutput = prevTxOutputs[inputIndex];

                            var txInputWithPrevOutput = new TxInputWithPrevOutput(chainedHeader, transaction, txIndex, txInput, inputIndex, prevTxOutput);
                            loadedTxInputs.Add(txInputWithPrevOutput);
                        }
                    }
                }

                ValidateTransaction(loadedTx);
            },
                                          () => loadedTxInputs.CompleteAdding()));
        }
Example #2
0
 private void ValidateTxInput(TxInputWithPrevOutput loadedTxInput)
 {
     try
     {
         this.rules.ValidationTransactionScript(loadedTxInput.ChainedHeader, loadedTxInput.Transaction, loadedTxInput.TxIndex, loadedTxInput.TxInput, loadedTxInput.InputIndex, loadedTxInput.PrevTxOutput);
     }
     catch (Exception e)
     {
         this.scriptValidatorExceptions.Add(e);
     }
 }