Exemple #1
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
            });
        }
    }
Exemple #3
0
        public StorageProcessor(string url, string connectionString, string prefix, bool postVm = false)
        {
            _web3 = url.EndsWith(".ipc") ? new Web3.Web3(new IpcClient(url)) : new Web3.Web3(url);



            var blockRepository              = new BlockRepository();
            var transactionRepository        = new TransactionRepository();
            var addressTransactionRepository = new AddressTransactionRepository();
            var contractRepository           = new ContractRepository();
            var logRepository     = new TransactionLogRepository();
            var vmStackRepository = new TransactionVMStackRepository();

            var contractTransactionProcessor = new ContractTransactionProcessor(_web3, contractRepository,
                                                                                transactionRepository
                                                                                //,addressTransactionRepository
                                                                                //,vmStackRepository,
                                                                                //logRepository
                                                                                );
            var contractCreationTransactionProcessor = new ContractCreationTransactionProcessor(_web3, contractRepository,
                                                                                                transactionRepository
                                                                                                //, addressTransactionRepository
                                                                                                );
            var valueTrasactionProcessor = new ValueTransactionProcessor(transactionRepository
                                                                         //,addressTransactionRepository
                                                                         );

            var transactionProcessor = new TransactionProcessor(_web3, contractTransactionProcessor,
                                                                valueTrasactionProcessor, contractCreationTransactionProcessor);


            if (postVm)
            {
                _procesor = new BlockVmPostProcessor(_web3, blockRepository, transactionProcessor, transactionRepository);
            }
            else
            {
                transactionProcessor.ContractTransactionProcessor.EnabledVmProcessing = false;
                _procesor = new BlockProcessor(_web3, blockRepository, transactionProcessor, transactionRepository);
            }
        }
Exemple #4
0
        public StorageProcessor(string url, string connectionString, string prefix, bool postVm = false)
        {
            _web3 = url.EndsWith(".ipc") ? new Web3.Web3(new IpcClient(url)) : new Web3.Web3(url);
            var tableSetup = new CloudTableSetup(connectionString);

            _contractTable = tableSetup.GetContractsTable(prefix);
            var transactionsTable        = tableSetup.GetTransactionsTable(prefix);
            var addressTransactionsTable = tableSetup.GetAddressTransactionsTable(prefix);
            var blocksTable  = tableSetup.GetBlocksTable(prefix);
            var logTable     = tableSetup.GetTransactionsLogTable(prefix);
            var vmStackTable = tableSetup.GetTransactionsVmStackTable(prefix);

            var blockRepository              = new BlockRepository(blocksTable);
            var transactionRepository        = new TransactionRepository(transactionsTable);
            var addressTransactionRepository = new AddressTransactionRepository(addressTransactionsTable);
            var contractRepository           = new ContractRepository(_contractTable);
            var logRepository     = new TransactionLogRepository(logTable);
            var vmStackRepository = new TransactionVMStackRepository(vmStackTable);

            var contractTransactionProcessor = new ContractTransactionProcessor(_web3, contractRepository,
                                                                                transactionRepository, addressTransactionRepository, vmStackRepository, logRepository);
            var contractCreationTransactionProcessor = new ContractCreationTransactionProcessor(_web3, contractRepository,
                                                                                                transactionRepository, addressTransactionRepository);
            var valueTrasactionProcessor = new ValueTransactionProcessor(transactionRepository,
                                                                         addressTransactionRepository);

            var transactionProcessor = new TransactionProcessor(_web3, contractTransactionProcessor,
                                                                valueTrasactionProcessor, contractCreationTransactionProcessor);


            if (postVm)
            {
                _procesor = new BlockVmPostProcessor(_web3, blockRepository, transactionProcessor);
            }
            else
            {
                transactionProcessor.ContractTransactionProcessor.EnabledVmProcessing = false;
                _procesor = new BlockProcessor(_web3, blockRepository, transactionProcessor);
            }
        }