Пример #1
0
 public ContractTransactionProcessor(
     IWeb3 web3,
     IVmStackErrorChecker vmStackErrorChecker,
     IContractHandler contractHandler,
     ITransactionHandler transactionHandler,
     ITransactionVMStackHandler transactionVmStackHandler)
 {
     _web3 = web3;
     _vmStackErrorChecker       = vmStackErrorChecker;
     _contractHandler           = contractHandler;
     _transactionHandler        = transactionHandler;
     _transactionVmStackHandler = transactionVmStackHandler;
 }
Пример #2
0
 public ContractTransactionProcessor(
     IGetTransactionVMStack vmStackProxy,
     IVmStackErrorChecker vmStackErrorChecker,
     IContractHandler contractHandler,
     ITransactionHandler transactionHandler,
     ITransactionVMStackHandler transactionVmStackHandler)
 {
     _vmStackProxy              = vmStackProxy;
     _vmStackErrorChecker       = vmStackErrorChecker;
     _contractHandler           = contractHandler;
     _transactionHandler        = transactionHandler;
     _transactionVmStackHandler = transactionVmStackHandler;
 }
Пример #3
0
        public static IBlockProcessor Create(
            IBlockchainProxyService web3, IVmStackErrorChecker vmStackErrorChecker,
            HandlerContainer handlers, FilterContainer filters = null, bool postVm = false, bool processTransactionsInParallel = true)
        {
            var transactionLogProcessor = new TransactionLogProcessor(
                filters?.TransactionLogFilters,
                handlers.TransactionLogHandler);

            var contractTransactionProcessor = new ContractTransactionProcessor(
                web3, vmStackErrorChecker, handlers.ContractHandler,
                handlers.TransactionHandler, handlers.TransactionVmStackHandler);

            var contractCreationTransactionProcessor = new ContractCreationTransactionProcessor(
                web3, handlers.ContractHandler,
                handlers.TransactionHandler);

            var valueTransactionProcessor = new ValueTransactionProcessor(
                handlers.TransactionHandler);

            var transactionProcessor = new TransactionProcessor(
                web3,
                contractTransactionProcessor,
                valueTransactionProcessor,
                contractCreationTransactionProcessor,
                transactionLogProcessor,
                filters?.TransactionFilters,
                filters?.TransactionReceiptFilters,
                filters?.TransactionAndReceiptFilters);

            if (postVm)
            {
                return new BlockVmPostProcessor(
                    web3, handlers.BlockHandler, transactionProcessor)
                       {
                           ProcessTransactionsInParallel = processTransactionsInParallel
                       }
            }
            ;

            transactionProcessor.ContractTransactionProcessor.EnabledVmProcessing = false;
            return(new BlockProcessor(
                       web3, handlers.BlockHandler, transactionProcessor, filters?.BlockFilters)
            {
                ProcessTransactionsInParallel = processTransactionsInParallel
            });
        }
    }
        public IBlockProcessor Create(
            IWeb3Wrapper web3, IVmStackErrorChecker vmStackErrorChecker,
            IBlockchainProcessingStrategy strategy, bool postVm = false, bool processTransactionsInParallel = true)
        {
            var transactionLogProcessor = new TransactionLogProcessor(
                strategy.Filters?.TransactionLogFilters,
                strategy.TransactionLogHandler);

            var contractTransactionProcessor = new ContractTransactionProcessor(
                web3, vmStackErrorChecker, strategy.ContractHandler,
                strategy.TransactionHandler, strategy.TransactionVmStackHandler);

            var contractCreationTransactionProcessor = new ContractCreationTransactionProcessor(
                web3, strategy.ContractHandler,
                strategy.TransactionHandler);

            var valueTransactionProcessor = new ValueTransactionProcessor(
                strategy.TransactionHandler);

            var transactionProcessor = new TransactionProcessor(
                web3,
                contractTransactionProcessor,
                valueTransactionProcessor,
                contractCreationTransactionProcessor,
                transactionLogProcessor,
                strategy.Filters?.TransactionFilters,
                strategy.Filters?.TransactionReceiptFilters,
                strategy.Filters?.TransactionAndReceiptFilters);

            if (postVm)
            {
                return new BlockVmPostProcessor(
                    web3, strategy.BlockHandler, transactionProcessor)
                       {
                           ProcessTransactionsInParallel = processTransactionsInParallel
                       }
            }
            ;

            transactionProcessor.ContractTransactionProcessor.EnabledVmProcessing = false;
            return(new BlockProcessor(
                       web3, strategy.BlockHandler, transactionProcessor, strategy.Filters?.BlockFilters)
            {
                ProcessTransactionsInParallel = processTransactionsInParallel
            });
        }
    }