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); } }
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); }
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); }