Esempio n. 1
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, receiptStorage, specProvider, logManager);

            if (syncConfig.FastBlocks)
            {
                FastBlocksFeed feed = new FastBlocksFeed(_specProvider, _blockTree, _receiptStorage, _syncPeerPool, syncConfig, _syncReport, logManager);
                _fastBlockDownloader = new FastBlocksDownloader(_syncPeerPool, feed, blockValidator, sealValidator, logManager);
            }
        }
Esempio n. 2
0
        private void SetupFeed(bool syncBodies = false, bool syncReceipts = false)
        {
            _syncConfig.DownloadBodiesInFastSync   = syncBodies;
            _syncConfig.DownloadReceiptsInFastSync = syncReceipts;

            _feed = new FastBlocksFeed(_specProvider, _localBlockTree, _localReceiptStorage, _syncPeerPool, _syncConfig, NullSyncReport.Instance, LimboLogs.Instance);
        }
Esempio n. 3
0
        public void Receipts_finish_properly_when_the_last_batch_has_no_receipts()
        {
            _syncConfig                            = new SyncConfig();
            _syncConfig.PivotHash                  = _validTree2048NoTransactions.Head.Hash.ToString();
            _syncConfig.PivotNumber                = _validTree2048NoTransactions.Head.Number.ToString();
            _syncConfig.PivotTotalDifficulty       = _validTree2048NoTransactions.Head.TotalDifficulty.ToString();
            _syncConfig.UseGethLimitsInFastBlocks  = false;
            _syncConfig.DownloadBodiesInFastSync   = true;
            _syncConfig.DownloadReceiptsInFastSync = true;
            _syncConfig.FastBlocks                 = true;

            _feed = new FastBlocksFeed(_specProvider, _localBlockTree, _localReceiptStorage, _syncPeerPool, _syncConfig, NullSyncReport.Instance, LimboLogs.Instance);

            LatencySyncPeerMock syncPeer1 = new LatencySyncPeerMock(_validTree2048NoTransactions);

            SetupSyncPeers(syncPeer1);

            RunFeed(10000);

            SyncProgressResolver resolver = new SyncProgressResolver(
                _localBlockTree,
                _localReceiptStorage,
                Substitute.For <INodeDataDownloader>(),
                _syncConfig,
                LimboLogs.Instance);

            Assert.True(resolver.IsFastBlocksFinished(), "is fast blocks finished");

            AssertTreeSynced(_validTree2048NoTransactions, true, true);
        }