コード例 #1
0
        public override IMulticallModule Create()
        {
            var txProcessingEnv    = new ReadOnlyTxProcessingEnv(dbProvider, trieNodeResolver, blockTree, specProvider, logManager);
            var rewardCalculator   = rewardCalculatorSource.Get(txProcessingEnv.TransactionProcessor);
            var chainProcessingEnv = new ReadOnlyChainProcessingEnv(txProcessingEnv, Always.Valid, recoveryStep, rewardCalculator, receiptFinder, dbProvider, specProvider, logManager);
            var tracer             = new MyTracer(chainProcessingEnv.StateProvider, chainProcessingEnv.ChainProcessor);

            return(new MulticallModule(tracer, blockTree, jsonRpcConfig));
        }
コード例 #2
0
        public override ITraceModule Create()
        {
            var    readOnlyTree               = new ReadOnlyBlockTree(_blockTree);
            var    readOnlyDbProvider         = new ReadOnlyDbProvider(_dbProvider, false);
            var    readOnlyTxProcessingEnv    = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, readOnlyTree, _specProvider, _logManager);
            var    readOnlyChainProcessingEnv = new ReadOnlyChainProcessingEnv(readOnlyTxProcessingEnv, AlwaysValidBlockValidator.Instance, _recoveryStep, _rewardCalculatorSource.Get(readOnlyTxProcessingEnv.TransactionProcessor), _receiptStorage, readOnlyDbProvider, _specProvider, _logManager);
            Tracer tracer = new Tracer(readOnlyChainProcessingEnv.StateProvider, readOnlyChainProcessingEnv.ChainProcessor);

            return(new TraceModule(_receiptStorage, tracer, readOnlyTree));
        }
コード例 #3
0
        public override IDebugModule Create()
        {
            IReadOnlyDbProvider        readOnlyDbProvider = new ReadOnlyDbProvider(_dbProvider, false);
            ReadOnlyBlockTree          readOnlyTree       = new ReadOnlyBlockTree(_blockTree);
            ReadOnlyTxProcessingEnv    txEnv = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, readOnlyTree, _specProvider, _logManager);
            ReadOnlyChainProcessingEnv readOnlyChainProcessingEnv = new ReadOnlyChainProcessingEnv(txEnv, _blockValidator, _recoveryStep, _rewardCalculator, _receiptStorage, readOnlyDbProvider, _specProvider, _logManager);
            ITracer tracer = new Tracer(readOnlyChainProcessingEnv.Processor, _receiptStorage, new ReadOnlyBlockTree(_blockTree), _dbProvider.TraceDb);

            DebugBridge debugBridge = new DebugBridge(_configProvider, readOnlyDbProvider, tracer, readOnlyChainProcessingEnv.Processor, readOnlyTree);

            return(new DebugModule(_logManager, debugBridge));
        }
コード例 #4
0
        public override IProofModule Create()
        {
            ReadOnlyBlockTree          readOnlyTree               = new ReadOnlyBlockTree(_blockTree);
            IReadOnlyDbProvider        readOnlyDbProvider         = new ReadOnlyDbProvider(_dbProvider, false);
            ReadOnlyTxProcessingEnv    readOnlyTxProcessingEnv    = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, readOnlyTree, _specProvider, _logManager);
            ReadOnlyChainProcessingEnv readOnlyChainProcessingEnv = new ReadOnlyChainProcessingEnv(readOnlyTxProcessingEnv, Always.Valid, _recoveryStep, NoBlockRewards.Instance, new InMemoryReceiptStorage(), readOnlyDbProvider, _specProvider, _logManager);

            Tracer tracer = new Tracer(
                readOnlyTxProcessingEnv.StateProvider,
                readOnlyChainProcessingEnv.ChainProcessor);

            return(new ProofModule(tracer, _blockTree, _receiptFinder, _specProvider, _logManager));
        }
コード例 #5
0
        public override ITraceModule Create()
        {
            var    readOnlyTree               = new ReadOnlyBlockTree(_blockTree);
            var    readOnlyDbProvider         = new ReadOnlyDbProvider(_dbProvider, false);
            var    readOnlyTxProcessingEnv    = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, readOnlyTree, _specProvider, _logManager);
            var    readOnlyChainProcessingEnv = new ReadOnlyChainProcessingEnv(readOnlyTxProcessingEnv, Always.Valid, _recoveryStep, _rewardCalculatorSource.Get(readOnlyTxProcessingEnv.TransactionProcessor), _receiptStorage, readOnlyDbProvider, _specProvider, _logManager);
            Tracer tracer = new Tracer(readOnlyChainProcessingEnv.StateProvider, readOnlyChainProcessingEnv.ChainProcessor);

            TimeSpan          cancellationTokenTimeout = TimeSpan.FromMilliseconds(_jsonRpcConfig.TracerTimeout);
            CancellationToken cancellationToken        = new CancellationTokenSource(cancellationTokenTimeout).Token;

            return(new TraceModule(_receiptStorage, tracer, readOnlyTree, cancellationToken));
        }
コード例 #6
0
        private (IBlockchainProcessor, IStateReader) CreateProcessor(Block block, IReadOnlyDbProvider readOnlyDbProvider, ISpecProvider specProvider, ILogManager logManager)
        {
            ReadOnlyTxProcessingEnv    txEnv = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, _readOnlyBlockTree, specProvider, logManager);
            ReadOnlyChainProcessingEnv env   = new ReadOnlyChainProcessingEnv(txEnv, _blockValidator, _recoveryStep, _rewardCalculatorSource.Get(txEnv.TransactionProcessor), NullReceiptStorage.Instance, _readOnlyDbProvider, specProvider, logManager);

            env.BlockProcessor.TransactionProcessed += (sender, args) =>
            {
                if (_logger.IsInfo)
                {
                    _logger.Info($"Processed tx {args.Index}/{block.Transactions.Length} of {block.Number}");
                }
            };

            return(env.ChainProcessor, txEnv.StateReader);
        }
コード例 #7
0
        public override IDebugModule Create()
        {
            IReadOnlyDbProvider        readOnlyDbProvider = new ReadOnlyDbProvider(_dbProvider, false);
            ReadOnlyBlockTree          readOnlyTree       = new ReadOnlyBlockTree(_blockTree);
            ReadOnlyTxProcessingEnv    txEnv = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, readOnlyTree, _specProvider, _logManager);
            ReadOnlyChainProcessingEnv readOnlyChainProcessingEnv = new ReadOnlyChainProcessingEnv(txEnv, _blockValidator, _recoveryStep, _rewardCalculatorSource.Get(txEnv.TransactionProcessor), _receiptStorage, readOnlyDbProvider, _specProvider, _logManager);

            TimeSpan          cancellationTokenTimeout = TimeSpan.FromMilliseconds(_jsonRpcConfig.TracerTimeout);
            CancellationToken cancellationToken        = new CancellationTokenSource(cancellationTokenTimeout).Token;

            IGethStyleTracer tracer = new GethStyleTracer(readOnlyChainProcessingEnv.ChainProcessor, _receiptStorage, new ReadOnlyBlockTree(_blockTree), cancellationToken);

            DebugBridge debugBridge = new DebugBridge(_configProvider, readOnlyDbProvider, tracer, readOnlyChainProcessingEnv.BlockProcessingQueue, readOnlyTree);

            return(new DebugModule(_logManager, debugBridge));
        }
コード例 #8
0
        public override IDebugModule Create()
        {
            IReadOnlyDbProvider readOnlyDbProvider = new ReadOnlyDbProvider(_dbProvider, false);
            ReadOnlyBlockTree   readOnlyTree       = new ReadOnlyBlockTree(_blockTree);

            ReadOnlyTxProcessingEnv txEnv =
                new ReadOnlyTxProcessingEnv(
                    readOnlyDbProvider,
                    readOnlyTree,
                    _specProvider,
                    _logManager);

            ReadOnlyChainProcessingEnv readOnlyChainProcessingEnv =
                new ReadOnlyChainProcessingEnv(
                    txEnv,
                    _blockValidator,
                    _recoveryStep,
                    _rewardCalculatorSource.Get(txEnv.TransactionProcessor),
                    _receiptStorage,
                    readOnlyDbProvider,
                    _specProvider,
                    _logManager);

            IGethStyleTracer tracer =
                new GethStyleTracer(
                    readOnlyChainProcessingEnv.ChainProcessor,
                    _receiptStorage,
                    new ReadOnlyBlockTree(_blockTree));

            DebugBridge debugBridge =
                new DebugBridge(
                    _configProvider,
                    readOnlyDbProvider,
                    tracer,
                    readOnlyTree,
                    _receiptStorage,
                    _receiptsMigration,
                    _specProvider);

            return(new DebugModule(_logManager, debugBridge, _jsonRpcConfig));
        }
コード例 #9
0
        public override ITraceModule Create()
        {
            ReadOnlyBlockTree       readOnlyTree       = new ReadOnlyBlockTree(_blockTree);
            IReadOnlyDbProvider     readOnlyDbProvider = new ReadOnlyDbProvider(_dbProvider, false);
            ReadOnlyTxProcessingEnv txEnv = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, readOnlyTree, _specProvider, _logManager);

            var blockchainBridge = new BlockchainBridge(
                txEnv.StateReader,
                txEnv.StateProvider,
                txEnv.StorageProvider,
                txEnv.BlockTree,
                _txPool,
                _receiptStorage,
                NullFilterStore.Instance,
                NullFilterManager.Instance,
                NullWallet.Instance,
                txEnv.TransactionProcessor,
                _ethereumEcdsa);

            ReadOnlyChainProcessingEnv chainEnv = new ReadOnlyChainProcessingEnv(txEnv, _blockValidator, _recoveryStep, _rewardCalculator, _receiptStorage, readOnlyDbProvider, _specProvider, _logManager);
            ITracer tracer = new Tracer(chainEnv.Processor, _receiptStorage, new ReadOnlyBlockTree(_blockTree), _dbProvider.TraceDb);

            return(new TraceModule(blockchainBridge, _logManager, tracer));
        }
コード例 #10
0
 protected virtual ITracer CreateTracer(ReadOnlyTxProcessingEnv txProcessingEnv, ReadOnlyChainProcessingEnv chainProcessingEnv) =>
 new Tracer(txProcessingEnv.StateProvider, chainProcessingEnv.ChainProcessor, _processingOptions);