Exemplo n.º 1
0
        public Task Execute(CancellationToken cancellationToken)
        {
            IInitConfig  initConfig  = _get.Config <IInitConfig>();
            IBloomConfig bloomConfig = _get.Config <IBloomConfig>();

            IFileStoreFactory fileStoreFactory = initConfig.DiagnosticMode == DiagnosticMode.MemDb
                ? new InMemoryDictionaryFileStoreFactory()
                : new FixedSizeFileStoreFactory(Path.Combine(initConfig.BaseDbPath, DbNames.Bloom), DbNames.Bloom, Bloom.ByteLength);

            IBloomStorage bloomStorage =
                _set.BloomStorage = bloomConfig.Index
                    ? new BloomStorage(bloomConfig, _get.DbProvider !.BloomDb, fileStoreFactory)
                    : NullBloomStorage.Instance;

            _get.DisposeStack.Push(bloomStorage);

            IChainLevelInfoRepository chainLevelInfoRepository =
                _set.ChainLevelInfoRepository = new ChainLevelInfoRepository(_get.DbProvider !.BlockInfosDb);

            IBlockTree blockTree = _set.BlockTree = new BlockTree(
                _get.DbProvider,
                chainLevelInfoRepository,
                _get.SpecProvider,
                bloomStorage,
                _get.Config <ISyncConfig>(),
                _get.LogManager);

            ISigner      signer      = NullSigner.Instance;
            ISignerStore signerStore = NullSigner.Instance;

            if (_get.Config <IMiningConfig>().Enabled)
            {
                Signer signerAndStore = new(_get.SpecProvider !.ChainId, _get.OriginalSignerKey !, _get.LogManager);
                signer      = signerAndStore;
                signerStore = signerAndStore;
            }

            _set.EngineSigner      = signer;
            _set.EngineSignerStore = signerStore;

            ReceiptsRecovery receiptsRecovery = new(_get.EthereumEcdsa, _get.SpecProvider);
            IReceiptStorage  receiptStorage   = _set.ReceiptStorage = initConfig.StoreReceipts
                ? new PersistentReceiptStorage(_get.DbProvider.ReceiptsDb, _get.SpecProvider !, receiptsRecovery)
                : NullReceiptStorage.Instance;

            IReceiptFinder receiptFinder = _set.ReceiptFinder = new FullInfoReceiptFinder(receiptStorage, receiptsRecovery, blockTree);

            LogFinder logFinder = new(
                blockTree,
                receiptFinder,
                receiptStorage,
                bloomStorage,
                _get.LogManager,
                new ReceiptsRecovery(_get.EthereumEcdsa, _get.SpecProvider),
                1024);

            _set.LogFinder = logFinder;

            return(Task.CompletedTask);
        }
 public BlockTreeBuilder WithTransactions(IReceiptStorage receiptStorage, ISpecProvider specProvider)
 {
     _specProvider   = specProvider;
     _ecdsa          = new EthereumEcdsa(specProvider, LimboLogs.Instance);
     _receiptStorage = receiptStorage;
     return(this);
 }
Exemplo n.º 3
0
 public DebugModuleFactory(
     IDbProvider dbProvider,
     IBlockTree blockTree,
     IJsonRpcConfig jsonRpcConfig,
     IBlockValidator blockValidator,
     IBlockPreprocessorStep recoveryStep,
     IRewardCalculatorSource rewardCalculator,
     IReceiptStorage receiptStorage,
     IReceiptsMigration receiptsMigration,
     IReadOnlyTrieStore trieStore,
     IConfigProvider configProvider,
     ISpecProvider specProvider,
     ILogManager logManager)
 {
     _dbProvider             = dbProvider.AsReadOnly(false);
     _blockTree              = blockTree.AsReadOnly();
     _jsonRpcConfig          = jsonRpcConfig ?? throw new ArgumentNullException(nameof(jsonRpcConfig));
     _blockValidator         = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator));
     _recoveryStep           = recoveryStep ?? throw new ArgumentNullException(nameof(recoveryStep));
     _rewardCalculatorSource = rewardCalculator ?? throw new ArgumentNullException(nameof(rewardCalculator));
     _receiptStorage         = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
     _receiptsMigration      = receiptsMigration ?? throw new ArgumentNullException(nameof(receiptsMigration));
     _trieStore              = (trieStore ?? throw new ArgumentNullException(nameof(trieStore)));
     _configProvider         = configProvider ?? throw new ArgumentNullException(nameof(configProvider));
     _specProvider           = specProvider ?? throw new ArgumentNullException(nameof(specProvider));
     _logManager             = logManager ?? throw new ArgumentNullException(nameof(logManager));
     _logger = logManager.GetClassLogger();
 }
Exemplo n.º 4
0
 public Tracer(IBlockchainProcessor processor, IReceiptStorage receiptStorage, IBlockTree blockTree, IDb traceDb)
 {
     _processor      = processor ?? throw new ArgumentNullException(nameof(processor));
     _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
     _blockTree      = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _traceDb        = traceDb ?? throw new ArgumentNullException(nameof(traceDb));
 }
Exemplo n.º 5
0
        private void TestAddAndGetReceipt(IReceiptStorage storage, IReceiptFinder receiptFinder = null)
        {
            bool recoverSender = receiptFinder is not null;

            receiptFinder ??= storage;

            var transaction = GetSignedTransaction();

            transaction.SenderAddress = null;
            var block   = GetBlock(transaction);
            var receipt = GetReceipt(transaction, block);

            storage.Insert(block, receipt);
            var blockHash = storage.FindBlockHash(transaction.Hash);

            blockHash.Should().Be(block.Hash);
            var fetchedReceipt = receiptFinder.Get(block).ForTransaction(transaction.Hash);

            receipt.StatusCode.Should().Be(fetchedReceipt.StatusCode);
            receipt.PostTransactionState.Should().Be(fetchedReceipt.PostTransactionState);
            receipt.TxHash.Should().Be(transaction.Hash);
            if (recoverSender)
            {
                receipt.Sender.Should().BeEquivalentTo(TestItem.AddressA);
            }
        }
Exemplo n.º 6
0
        public Synchronizer(
            ISpecProvider specProvider,
            IBlockTree blockTree,
            IReceiptStorage receiptStorage,
            IBlockValidator blockValidator,
            ISealValidator sealValidator,
            IEthSyncPeerPool peerPool,
            ISyncConfig syncConfig,
            INodeDataDownloader nodeDataDownloader,
            ISyncReport syncReport,
            ILogManager logManager)
        {
            _logger             = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            _specProvider       = specProvider ?? throw new ArgumentNullException(nameof(specProvider));
            _blockTree          = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
            _receiptStorage     = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
            _syncConfig         = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig));
            _syncPeerPool       = peerPool ?? throw new ArgumentNullException(nameof(peerPool));
            _nodeDataDownloader = nodeDataDownloader ?? throw new ArgumentNullException(nameof(nodeDataDownloader));
            _syncReport         = syncReport ?? throw new ArgumentNullException(nameof(syncReport));

            SyncProgressResolver syncProgressResolver = new SyncProgressResolver(_blockTree, receiptStorage, _nodeDataDownloader, syncConfig, logManager);

            _syncMode = new SyncModeSelector(syncProgressResolver, _syncPeerPool, _syncConfig, logManager);

            _blockDownloader = new BlockDownloader(_blockTree, blockValidator, sealValidator, syncReport, logManager);

            if (syncConfig.FastBlocks)
            {
                FastBlocksFeed feed = new FastBlocksFeed(_specProvider, _blockTree, _receiptStorage, _syncPeerPool, syncConfig, _syncReport, logManager);
                _fastBlockDownloader = new FastBlocksDownloader(_syncPeerPool, feed, blockValidator, sealValidator, logManager);
            }
        }
Exemplo n.º 7
0
        public async Task Throw_log_finder_operation_canceled_after_given_timeout([Values(2, 0.01)] double waitTime)
        {
            var timeout = TimeSpan.FromMilliseconds(20);

            using CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(timeout);
            CancellationToken cancellationToken = cancellationTokenSource.Token;

            StoreTreeBlooms(true);
            _receiptStorage = NullReceiptStorage.Instance;
            _logFinder      = new LogFinder(_blockTree, _receiptStorage, _bloomStorage, LimboLogs.Instance, _receiptsRecovery);
            var logFilter = AllBlockFilter().Build();
            var logs      = _logFinder.FindLogs(logFilter, cancellationToken);

            await Task.Delay(timeout *waitTime);

            Func <FilterLog[]> action = () => logs.ToArray();

            if (waitTime > 1)
            {
                action.Should().Throw <AggregateException>().WithInnerException <OperationCanceledException>();
            }
            else
            {
                action.Should().NotThrow();
            }
        }
Exemplo n.º 8
0
        public ReceiptsSyncFeed(
            ISyncModeSelector syncModeSelector,
            ISpecProvider specProvider,
            IBlockTree blockTree,
            IReceiptStorage receiptStorage,
            ISyncPeerPool syncPeerPool,
            ISyncConfig syncConfig,
            ISyncReport syncReport,
            ILogManager logManager)
            : base(syncModeSelector)
        {
            _logger         = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
            _specProvider   = specProvider ?? throw new ArgumentNullException(nameof(specProvider));
            _syncPeerPool   = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool));
            _syncConfig     = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig));
            _syncReport     = syncReport ?? throw new ArgumentNullException(nameof(syncReport));
            _blockTree      = blockTree ?? throw new ArgumentNullException(nameof(blockTree));

            if (!_syncConfig.FastBlocks)
            {
                throw new InvalidOperationException("Entered fast blocks mode without fast blocks enabled in configuration.");
            }

            _pivotNumber    = _syncConfig.PivotNumberParsed;
            _syncStatusList = new SyncStatusList(
                _blockTree,
                _pivotNumber,
                _receiptStorage.LowestInsertedReceiptBlockNumber);
        }
Exemplo n.º 9
0
        public DebugBridge(
            IConfigProvider configProvider,
            IReadOnlyDbProvider dbProvider,
            IGethStyleTracer tracer,
            IBlockTree blockTree,
            IReceiptStorage receiptStorage,
            IReceiptsMigration receiptsMigration,
            ISpecProvider specProvider)
        {
            _configProvider    = configProvider ?? throw new ArgumentNullException(nameof(configProvider));
            _tracer            = tracer ?? throw new ArgumentNullException(nameof(tracer));
            _blockTree         = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
            _receiptStorage    = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
            _receiptsMigration = receiptsMigration ?? throw new ArgumentNullException(nameof(receiptsMigration));
            _specProvider      = specProvider ?? throw new ArgumentNullException(nameof(specProvider));
            dbProvider         = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider));
            IDb blockInfosDb = dbProvider.BlockInfosDb ?? throw new ArgumentNullException(nameof(dbProvider.BlockInfosDb));
            IDb blocksDb     = dbProvider.BlocksDb ?? throw new ArgumentNullException(nameof(dbProvider.BlocksDb));
            IDb headersDb    = dbProvider.HeadersDb ?? throw new ArgumentNullException(nameof(dbProvider.HeadersDb));
            IDb receiptsDb   = dbProvider.ReceiptsDb ?? throw new ArgumentNullException(nameof(dbProvider.ReceiptsDb));
            IDb codeDb       = dbProvider.CodeDb ?? throw new ArgumentNullException(nameof(dbProvider.CodeDb));
            IDb pendingTxsDb = dbProvider.PendingTxsDb ?? throw new ArgumentNullException(nameof(dbProvider.PendingTxsDb));

            _dbMappings = new Dictionary <string, IDb>(StringComparer.InvariantCultureIgnoreCase)
            {
                { DbNames.State, dbProvider.StateDb },
                { DbNames.Storage, dbProvider.StateDb },
                { DbNames.BlockInfos, blockInfosDb },
                { DbNames.Blocks, blocksDb },
                { DbNames.Headers, headersDb },
                { DbNames.Code, codeDb },
                { DbNames.Receipts, receiptsDb },
                { DbNames.PendingTxs, pendingTxsDb },
            };
        }
Exemplo n.º 10
0
 public BlockchainBridge(
     IStateReader stateReader,
     IStateProvider stateProvider,
     IStorageProvider storageProvider,
     IBlockTree blockTree,
     ITxPool txPool,
     IReceiptStorage receiptStorage,
     IFilterStore filterStore,
     IFilterManager filterManager,
     IWallet wallet,
     ITransactionProcessor transactionProcessor,
     IEthereumEcdsa ecdsa,
     IBloomStorage bloomStorage,
     IReceiptsRecovery receiptsRecovery,
     ILogManager logManager,
     int findLogBlockDepthLimit = 1000)
 {
     _stateReader          = stateReader ?? throw new ArgumentNullException(nameof(stateReader));
     _stateProvider        = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
     _storageProvider      = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider));
     _blockTree            = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _txPool               = txPool ?? throw new ArgumentNullException(nameof(_txPool));
     _receiptStorage       = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
     _filterStore          = filterStore ?? throw new ArgumentException(nameof(filterStore));
     _filterManager        = filterManager ?? throw new ArgumentException(nameof(filterManager));
     _wallet               = wallet ?? throw new ArgumentException(nameof(wallet));
     _transactionProcessor = transactionProcessor ?? throw new ArgumentException(nameof(transactionProcessor));
     _ecdsa     = ecdsa ?? throw new ArgumentNullException(nameof(ecdsa));
     _logFinder = new LogFinder(_blockTree, _receiptStorage, bloomStorage, receiptsRecovery, logManager, findLogBlockDepthLimit);
 }
Exemplo n.º 11
0
        public BlockProcessor(
            ISpecProvider?specProvider,
            IBlockValidator?blockValidator,
            IRewardCalculator?rewardCalculator,
            ITransactionProcessor?transactionProcessor,
            IStateProvider?stateProvider,
            IStorageProvider?storageProvider,
            ITxPool?txPool,
            IReceiptStorage?receiptStorage,
            IWitnessCollector?witnessCollector,
            ILogManager?logManager)
        {
            _logger               = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            _specProvider         = specProvider ?? throw new ArgumentNullException(nameof(specProvider));
            _blockValidator       = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator));
            _stateProvider        = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
            _storageProvider      = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider));
            _txPool               = txPool ?? throw new ArgumentNullException(nameof(txPool));
            _receiptStorage       = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
            _witnessCollector     = witnessCollector ?? throw new ArgumentNullException(nameof(witnessCollector));
            _rewardCalculator     = rewardCalculator ?? throw new ArgumentNullException(nameof(rewardCalculator));
            _transactionProcessor = transactionProcessor ?? throw new ArgumentNullException(nameof(transactionProcessor));

            _receiptsTracer = new BlockReceiptsTracer();
        }
Exemplo n.º 12
0
        public virtual async Task<INdmCapabilityConnector> InitAsync(IConfigProvider configProvider,
            IDbProvider dbProvider, string baseDbPath, IBlockTree blockTree,
            ITxPool txPool, ISpecProvider specProvider, IReceiptStorage receiptStorage, IWallet wallet,
            IFilterStore filterStore, IFilterManager filterManager,
            ITimestamper timestamper, IEthereumEcdsa ecdsa, IRpcModuleProvider rpcModuleProvider, IKeyStore keyStore,
            IJsonSerializer jsonSerializer, ICryptoRandom cryptoRandom, IEnode enode,
            INdmConsumerChannelManager consumerChannelManager, INdmDataPublisher dataPublisher, IGrpcServer grpcServer,
            INodeStatsManager nodeStatsManager, IProtocolsManager protocolsManager,
            IProtocolValidator protocolValidator, IMessageSerializationService messageSerializationService,
            bool enableUnsecuredDevWallet, IWebSocketsManager webSocketsManager, ILogManager logManager,
            IBlockProcessor blockProcessor)
        {
            var (config, services, faucet, accountService, consumerService, consumerAddress, providerAddress) =
                await PreInitAsync(configProvider, dbProvider, baseDbPath, blockTree, txPool, specProvider,
                    receiptStorage, wallet, filterStore, filterManager, timestamper, ecdsa, rpcModuleProvider, keyStore,
                    jsonSerializer, cryptoRandom, enode, consumerChannelManager, dataPublisher, grpcServer,
                    enableUnsecuredDevWallet, webSocketsManager, logManager, blockProcessor);
            if (!config.Enabled)
            {
                return default;
            }

            var subprotocolFactory = new NdmSubprotocolFactory(messageSerializationService, nodeStatsManager,
                logManager, accountService, consumerService, consumerChannelManager, ecdsa, wallet, faucet,
                enode.PublicKey, providerAddress, consumerAddress, config.VerifyP2PSignature);
            var protocolHandlerFactory = new ProtocolHandlerFactory(subprotocolFactory, protocolValidator,
                services.RequiredServices.EthRequestService, logManager);
            var capabilityConnector = new NdmCapabilityConnector(protocolsManager, protocolHandlerFactory,
                accountService, logManager);

            return capabilityConnector;
        }
Exemplo n.º 13
0
        public async Task SetUp()
        {
            _dbProvider = await TestMemDbProvider.InitAsync();

            _timestamper          = new ManualTimestamper();
            _blockTree            = Substitute.For <IBlockTree>();
            _txPool               = Substitute.For <ITxPool>();
            _receiptStorage       = Substitute.For <IReceiptStorage>();
            _filterStore          = Substitute.For <IFilterStore>();
            _filterManager        = Substitute.For <IFilterManager>();
            _transactionProcessor = Substitute.For <ITransactionProcessor>();
            _ethereumEcdsa        = Substitute.For <IEthereumEcdsa>();
            _specProvider         = MainnetSpecProvider.Instance;

            ReadOnlyTxProcessingEnv processingEnv = new ReadOnlyTxProcessingEnv(
                new ReadOnlyDbProvider(_dbProvider, false),
                new TrieStore(_dbProvider.StateDb, LimboLogs.Instance).AsReadOnly(),
                new ReadOnlyBlockTree(_blockTree),
                _specProvider,
                LimboLogs.Instance);

            processingEnv.TransactionProcessor = _transactionProcessor;

            _blockchainBridge = new BlockchainBridge(
                processingEnv,
                _txPool,
                _receiptStorage,
                _filterStore,
                _filterManager,
                _ethereumEcdsa,
                _timestamper,
                Substitute.For <ILogFinder>(),
                false,
                false);
        }
Exemplo n.º 14
0
        public void Setup()
        {
            _receiptStorage = Substitute.For <IReceiptStorage>();
            _blockTree      = Substitute.For <IBlockTree>();

            _syncConfig = new SyncConfig {
                FastBlocks = true
            };
            _syncConfig.PivotNumber = _pivotNumber.ToString();
            _syncConfig.PivotHash   = Keccak.Zero.ToString();

            _syncPeerPool = Substitute.For <ISyncPeerPool>();
            _syncReport   = Substitute.For <ISyncReport>();

            _measuredProgress      = new MeasuredProgress();
            _measuredProgressQueue = new MeasuredProgress();
            _syncReport.FastBlocksReceipts.Returns(_measuredProgress);
            _syncReport.ReceiptsInQueue.Returns(_measuredProgressQueue);

            _selector = Substitute.For <ISyncModeSelector>();

            _feed = new ReceiptsSyncFeed(
                _selector,
                _specProvider,
                _blockTree,
                _receiptStorage,
                _syncPeerPool,
                _syncConfig,
                _syncReport,
                LimboLogs.Instance);
        }
 public ContractBasedValidator(
     AuRaParameters.Validator validator,
     IStateProvider stateProvider,
     IAbiEncoder abiEncoder,
     ITransactionProcessor transactionProcessor,
     IReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource,
     IBlockTree blockTree,
     IReceiptStorage receiptStorage,
     IValidatorStore validatorStore,
     IValidSealerStrategy validSealerStrategy,
     ILogManager logManager,
     long startBlockNumber) : base(validator, validSealerStrategy, logManager)
 {
     _blockTree            = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     ContractAddress       = validator.Addresses?.FirstOrDefault() ?? throw new ArgumentException("Missing contract address for AuRa validator.", nameof(validator.Addresses));
     _stateProvider        = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
     _transactionProcessor = transactionProcessor ?? throw new ArgumentNullException(nameof(transactionProcessor));
     _readOnlyReadOnlyTransactionProcessorSource = readOnlyTransactionProcessorSource ?? throw new ArgumentNullException(nameof(readOnlyTransactionProcessorSource));
     _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
     _validatorStore = validatorStore ?? throw new ArgumentNullException(nameof(validatorStore));
     _logger         = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     AbiEncoder      = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
     InitBlockNumber = startBlockNumber;
     SetPendingValidators(LoadPendingValidators());
 }
Exemplo n.º 16
0
 public BlockchainBridge(
     IStateReader stateReader,
     IStateProvider stateProvider,
     IStorageProvider storageProvider,
     IBlockTree blockTree,
     ITxPool txPool,
     ITxPoolInfoProvider transactionPoolInfoProvider,
     IReceiptStorage receiptStorage,
     IFilterStore filterStore,
     IFilterManager filterManager,
     IWallet wallet,
     ITransactionProcessor transactionProcessor)
 {
     _stateReader                 = stateReader ?? throw new ArgumentNullException(nameof(stateReader));
     _stateProvider               = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
     _storageProvider             = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider));
     _blockTree                   = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _txPool                      = txPool ?? throw new ArgumentNullException(nameof(_txPool));
     _transactionPoolInfoProvider = transactionPoolInfoProvider ?? throw new ArgumentNullException(nameof(transactionPoolInfoProvider));
     _receiptStorage              = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
     _filterStore                 = filterStore ?? throw new ArgumentException(nameof(filterStore));
     _filterManager               = filterManager ?? throw new ArgumentException(nameof(filterManager));
     _wallet                      = wallet ?? throw new ArgumentException(nameof(wallet));
     _transactionProcessor        = transactionProcessor ?? throw new ArgumentException(nameof(transactionProcessor));
 }
Exemplo n.º 17
0
        public Synchronizer(
            IDbProvider dbProvider,
            ISpecProvider specProvider,
            IBlockTree blockTree,
            IReceiptStorage receiptStorage,
            IBlockValidator blockValidator,
            ISealValidator sealValidator,
            ISyncPeerPool peerPool,
            INodeStatsManager nodeStatsManager,
            ISyncModeSelector syncModeSelector,
            ISyncConfig syncConfig,
            ILogManager logManager)
        {
            _dbProvider       = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider));
            _syncMode         = syncModeSelector ?? throw new ArgumentNullException(nameof(syncModeSelector));
            _logger           = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            _specProvider     = specProvider ?? throw new ArgumentNullException(nameof(specProvider));
            _blockTree        = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
            _receiptStorage   = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
            _blockValidator   = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator));
            _sealValidator    = sealValidator ?? throw new ArgumentNullException(nameof(sealValidator));
            _syncConfig       = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig));
            _syncPeerPool     = peerPool ?? throw new ArgumentNullException(nameof(peerPool));
            _nodeStatsManager = nodeStatsManager ?? throw new ArgumentNullException(nameof(nodeStatsManager));
            _logManager       = logManager;

            _syncReport = new SyncReport(_syncPeerPool, _nodeStatsManager, _syncMode, syncConfig, logManager);
        }
Exemplo n.º 18
0
        public BlockProcessor(
            ISpecProvider specProvider,
            IBlockValidator blockValidator,
            IRewardCalculator rewardCalculator,
            ITransactionProcessor transactionProcessor,
            ISnapshotableDb stateDb,
            ISnapshotableDb codeDb,
            IStateProvider stateProvider,
            IStorageProvider storageProvider,
            ITxPool txPool,
            IReceiptStorage receiptStorage,
            ILogManager logManager)
        {
            _logger               = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            _specProvider         = specProvider ?? throw new ArgumentNullException(nameof(specProvider));
            _blockValidator       = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator));
            _stateProvider        = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
            _storageProvider      = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider));
            _txPool               = txPool ?? throw new ArgumentNullException(nameof(txPool));
            _receiptStorage       = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
            _rewardCalculator     = rewardCalculator ?? throw new ArgumentNullException(nameof(rewardCalculator));
            _transactionProcessor = transactionProcessor ?? throw new ArgumentNullException(nameof(transactionProcessor));
            _stateDb              = stateDb ?? throw new ArgumentNullException(nameof(stateDb));
            _codeDb               = codeDb ?? throw new ArgumentNullException(nameof(codeDb));

            _receiptsTracer = new BlockReceiptsTracer();
        }
Exemplo n.º 19
0
        public BlockProducerEnvFactory(
            IDbProvider dbProvider,
            IBlockTree blockTree,
            IReadOnlyTrieStore readOnlyTrieStore,
            ISpecProvider specProvider,
            IBlockValidator blockValidator,
            IRewardCalculatorSource rewardCalculatorSource,
            IReceiptStorage receiptStorage,
            IBlockPreprocessorStep blockPreprocessorStep,
            ITxPool txPool,
            ITransactionComparerProvider transactionComparerProvider,
            IMiningConfig miningConfig,
            ILogManager logManager)
        {
            _dbProvider             = dbProvider;
            _blockTree              = blockTree;
            _readOnlyTrieStore      = readOnlyTrieStore;
            _specProvider           = specProvider;
            _blockValidator         = blockValidator;
            _rewardCalculatorSource = rewardCalculatorSource;
            _receiptStorage         = receiptStorage;
            _blockPreprocessorStep  = blockPreprocessorStep;
            _txPool = txPool;
            _transactionComparerProvider = transactionComparerProvider;
            _miningConfig = miningConfig;
            _logManager   = logManager;

            TransactionsExecutorFactory = new BlockProducerTransactionsExecutorFactory(specProvider, logManager);
        }
Exemplo n.º 20
0
        public EthModuleFactory(
            IDbProvider dbProvider,
            ITxPool txPool,
            IWallet wallet,
            IBlockTree blockTree,
            IEthereumEcdsa ethereumEcdsa,
            IBlockProcessor blockProcessor,
            IReceiptStorage receiptStorage,
            ISpecProvider specProvider,
            ILogManager logManager)
        {
            _dbProvider     = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider));
            _txPool         = txPool ?? throw new ArgumentNullException(nameof(txPool));
            _wallet         = wallet ?? throw new ArgumentNullException(nameof(wallet));
            _blockTree      = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
            _ethereumEcdsa  = ethereumEcdsa ?? throw new ArgumentNullException(nameof(ethereumEcdsa));
            _blockProcessor = blockProcessor ?? throw new ArgumentNullException(nameof(blockProcessor));
            _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
            _specProvider   = specProvider ?? throw new ArgumentNullException(nameof(specProvider));
            _logManager     = logManager ?? throw new ArgumentNullException(nameof(logManager));
            _logger         = logManager.GetClassLogger();

            _filterStore   = new FilterStore();
            _filterManager = new FilterManager(_filterStore, _blockProcessor, _txPool, _logManager);
        }
Exemplo n.º 21
0
        public void SetUp()
        {
            _db = Substitute.For <IDb>();
            _db[ContractValidator.PendingValidatorsKey.Bytes].Returns((byte[])null);
            _stateProvider            = Substitute.For <IStateProvider>();
            _abiEncoder               = Substitute.For <IAbiEncoder>();
            _logManager               = Substitute.For <ILogManager>();
            _blockTree                = Substitute.For <IBlockTree>();
            _blockFinalizationManager = Substitute.For <IBlockFinalizationManager>();
            _receiptsStorage          = Substitute.For <IReceiptStorage>();
            _validator                = new AuRaParameters.Validator()
            {
                Addresses     = new[] { _contractAddress },
                ValidatorType = AuRaParameters.ValidatorType.Contract
            };

            _block = new Block(Prepare.A.BlockHeader().WithNumber(1).WithAura(1, Bytes.Empty).TestObject, new BlockBody());

            _transactionProcessor = Substitute.For <ITransactionProcessor>();

            _abiEncoder
            .Encode(AbiEncodingStyle.IncludeSignature, Arg.Is <AbiSignature>(s => s.Name == "getValidators"), Arg.Any <object[]>())
            .Returns(_getValidatorsData);

            _abiEncoder
            .Encode(AbiEncodingStyle.IncludeSignature, Arg.Is <AbiSignature>(s => s.Name == "finalizeChange"), Arg.Any <object[]>())
            .Returns(_finalizeChangeData);
        }
 public void SetUp()
 {
     _stateReader          = Substitute.For <IStateReader>();
     _stateProvider        = Substitute.For <IStateProvider>();
     _storageProvider      = Substitute.For <IStorageProvider>();
     _blockTree            = Substitute.For <IBlockTree>();
     _txPool               = Substitute.For <ITxPool>();
     _receiptStorage       = Substitute.For <IReceiptStorage>();
     _filterStore          = Substitute.For <IFilterStore>();
     _filterManager        = Substitute.For <IFilterManager>();
     _wallet               = Substitute.For <IWallet>();
     _transactionProcessor = Substitute.For <ITransactionProcessor>();
     _ethereumEcdsa        = Substitute.For <IEthereumEcdsa>();
     _bloomStorage         = Substitute.For <IBloomStorage>();
     _receiptsRecovery     = Substitute.For <IReceiptsRecovery>();
     _blockchainBridge     = new BlockchainBridge(
         _stateReader,
         _stateProvider,
         _storageProvider,
         _blockTree,
         _txPool,
         _receiptStorage,
         _filterStore,
         _filterManager,
         _wallet,
         _transactionProcessor,
         _ethereumEcdsa,
         _bloomStorage,
         LimboLogs.Instance,
         false);
 }
Exemplo n.º 23
0
 public MissingReceiptsFixVisitor(long startLevel, long endLevel, IReceiptStorage receiptStorage, ILogManager logManager, ISyncPeerPool syncPeerPool, CancellationToken cancellationToken)
     : base(startLevel, endLevel, receiptStorage, logManager)
 {
     _receiptStorage    = receiptStorage;
     _syncPeerPool      = syncPeerPool;
     _cancellationToken = cancellationToken;
     _delay             = TimeSpan.FromSeconds(5);
 }
Exemplo n.º 24
0
 public ReceiptsVerificationVisitor(long startLevel, long endLevel, IReceiptStorage receiptStorage, ILogManager logManager)
 {
     _receiptStorage     = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
     _logger             = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     EndLevelExclusive   = endLevel;
     StartLevelInclusive = startLevel; // we should start post-pivot
     _toCheck            = EndLevelExclusive - StartLevelInclusive;
 }
Exemplo n.º 25
0
        public void Setup()
        {
            _specProvider  = RopstenSpecProvider.Instance;
            _ethereumEcdsa = new EthereumEcdsa(_specProvider.ChainId, LimboLogs.Instance);

            _persistentStorage = new PersistentReceiptStorage(new MemColumnsDb <ReceiptsColumns>(), _specProvider, new ReceiptsRecovery());
            _inMemoryStorage   = new InMemoryReceiptStorage();
        }
Exemplo n.º 26
0
 public LogFinder(IBlockFinder blockFinder, IReceiptStorage receiptStorage, IBloomStorage bloomStorage, IReceiptsRecovery receiptsRecovery, int maxBlockDepth = 1000)
 {
     _blockFinder      = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder));
     _receiptStorage   = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
     _bloomStorage     = bloomStorage ?? throw new ArgumentNullException(nameof(bloomStorage));
     _receiptsRecovery = receiptsRecovery ?? throw new ArgumentNullException(nameof(receiptsRecovery));
     _maxBlockDepth    = maxBlockDepth;
 }
Exemplo n.º 27
0
 private BlockProcessor CreateBlockProcessor(
     ReadOnlyTxProcessingEnv readOnlyTxProcessingEnv,
     ISpecProvider specProvider,
     IBlockValidator blockValidator,
     IRewardCalculatorSource rewardCalculatorSource,
     ITxPool txPool,
     IReceiptStorage receiptStorage,
     ILogManager logManager) =>
Exemplo n.º 28
0
 public SyncProgressResolver(IBlockTree blockTree, IReceiptStorage receiptStorage, INodeDataDownloader nodeDataDownloader, ISyncConfig syncConfig, ILogManager logManager)
 {
     _logger             = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     _blockTree          = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _receiptStorage     = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
     _nodeDataDownloader = nodeDataDownloader ?? throw new ArgumentNullException(nameof(nodeDataDownloader));
     _syncConfig         = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig));
 }
Exemplo n.º 29
0
 public BlockTreeBuilder WithTransactions(IReceiptStorage receiptStorage, ISpecProvider specProvider, Func <Block, Transaction, IEnumerable <LogEntry> > logsForBlockBuilder = null)
 {
     _specProvider        = specProvider;
     _ecdsa               = new EthereumEcdsa(specProvider.ChainId, LimboLogs.Instance);
     _receiptStorage      = receiptStorage;
     _logCreationFunction = logsForBlockBuilder;
     return(this);
 }
Exemplo n.º 30
0
        public static SearchResult <TxReceipt> SearchForReceipt(this IReceiptStorage receiptStorage, Keccak txHash)
        {
            TxReceipt receipt = receiptStorage.Find(txHash);

            return(receipt == null
                ? new SearchResult <TxReceipt>($"{txHash} receipt could not be found", ErrorCodes.ResourceNotFound)
                : new SearchResult <TxReceipt>(receipt));
        }