public SyncingContext(SynchronizerType synchronizerType) { _logger = _logManager.GetClassLogger(); ISyncConfig syncConfig = new SyncConfig(); syncConfig.FastSync = synchronizerType == SynchronizerType.Fast; ISnapshotableDb stateDb = new StateDb(); ISnapshotableDb codeDb = new StateDb(); BlockTree = new BlockTree(new MemDb(), new MemDb(), new MemDb(), new SingleReleaseSpecProvider(Constantinople.Instance, 1), NullTxPool.Instance, _logManager); var stats = new NodeStatsManager(new StatsConfig(), _logManager); SyncPeerPool = new EthSyncPeerPool(BlockTree, stats, syncConfig, _logManager); NodeDataFeed feed = new NodeDataFeed(codeDb, stateDb, _logManager); NodeDataDownloader nodeDataDownloader = new NodeDataDownloader(SyncPeerPool, feed, _logManager); Synchronizer = new Synchronizer(BlockTree, TestBlockValidator.AlwaysValid, TestSealValidator.AlwaysValid, SyncPeerPool, syncConfig, nodeDataDownloader, _logManager); SyncServer = new SyncServer(stateDb, codeDb, BlockTree, NullReceiptStorage.Instance, TestSealValidator.AlwaysValid, SyncPeerPool, Synchronizer, _logManager); SyncPeerPool.Start(); Synchronizer.Start(); Synchronizer.SyncEvent += SynchronizerOnSyncEvent; AllInstances.Add(this); }
public void Setup() { _blockTree = Substitute.For <IBlockTree>(); _peerPool = Substitute.For <IEthSyncPeerPool>(); _synchronizer = Substitute.For <ISynchronizer>(); _syncServer = new SyncServer(new StateDb(), new StateDb(), _blockTree, NullReceiptStorage.Instance, TestSealValidator.AlwaysValid, _peerPool, _synchronizer, new SyncConfig(), LimboLogs.Instance); }
public void Can_write_report_update_with_allocations() { ISyncPeer syncPeer = Substitute.For <ISyncPeer>(); IEthSyncPeerPool syncPeerPool = Substitute.For <IEthSyncPeerPool>(); PeerInfo peer1 = new PeerInfo(syncPeer); peer1.IsInitialized = false; PeerInfo peer2 = new PeerInfo(syncPeer); peer2.IsInitialized = true; PeerInfo[] peers = new PeerInfo[] { peer1, peer2 }; syncPeerPool.PeerCount.Returns(peers.Length); syncPeerPool.AllPeers.Returns(peers); syncPeerPool.Allocations.Returns(peers.Select(p => new SyncPeerAllocation(p, "desc"))); SyncPeersReport report = new SyncPeersReport(syncPeerPool, Substitute.For <INodeStatsManager>(), NoErrorLimboLogs.Instance); report.Write(); peer1.IsInitialized = true; report.Write(); }
public void Can_keep_changing_in_fast_sync() { IEthSyncPeerPool syncPeerPool = Substitute.For <IEthSyncPeerPool>(); ISyncPeer syncPeer = Substitute.For <ISyncPeer>(); syncPeer.TotalDifficultyOnSessionStart.Returns((UInt256)(1024 * 1024)); PeerInfo peerInfo1 = new PeerInfo(syncPeer) { HeadNumber = 0, IsInitialized = true }; syncPeerPool.AllPeers.Returns(new[] { peerInfo1 }); syncPeerPool.UsefulPeers.Returns(new[] { peerInfo1 }); syncPeerPool.PeerCount.Returns(1); SyncConfig syncConfig = new SyncConfig(); syncConfig.FastSync = true; syncConfig.PivotNumber = null; syncConfig.PivotHash = null; ISyncProgressResolver syncProgressResolver = Substitute.For <ISyncProgressResolver>(); SyncModeSelector selector = new SyncModeSelector(syncProgressResolver, syncPeerPool, syncConfig, LimboLogs.Instance); Assert.AreEqual(SyncMode.NotStarted, selector.Current); (long BestRemote, long BestLocalHeader, long BestLocalFullBlock, long BestLocalState, SyncMode ExpectedState, string Description)[] states =
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); } }
public Synchronizer(IBlockTree blockTree, IBlockValidator blockValidator, ISealValidator sealValidator, IEthSyncPeerPool peerPool, ISyncConfig syncConfig, INodeDataDownloader nodeDataDownloader, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _nodeDataDownloader = nodeDataDownloader ?? throw new ArgumentNullException(nameof(nodeDataDownloader)); _syncPeerPool = peerPool ?? throw new ArgumentNullException(nameof(peerPool)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _syncMode = new SyncModeSelector(_syncPeerPool, _syncConfig, logManager); _syncMode.Changed += (s, e) => RequestSynchronization(SyncTriggerType.SyncModeChange); _syncMode.Changed += (s, e) => { if (_blocksSyncAllocation == null && _syncMode.Current != SyncMode.StateNodes) { AllocateBlocksSync(); } if (_syncMode.Current == SyncMode.StateNodes) { FreeBlocksSyncAllocation(); } }; // make ctor parameter? _blockDownloader = new BlockDownloader(_blockTree, blockValidator, sealValidator, logManager); }
public ProtocolsManager( IEthSyncPeerPool ethSyncPeerPool, ISyncServer syncServer, ITxPool txPool, IDiscoveryApp discoveryApp, IMessageSerializationService serializationService, IRlpxPeer localPeer, INodeStatsManager nodeStatsManager, IProtocolValidator protocolValidator, INetworkStorage peerStorage, IPerfService perfService, ILogManager logManager) { _syncPool = ethSyncPeerPool ?? throw new ArgumentNullException(nameof(ethSyncPeerPool)); _syncServer = syncServer ?? throw new ArgumentNullException(nameof(syncServer)); _txPool = txPool ?? throw new ArgumentNullException(nameof(txPool)); _discoveryApp = discoveryApp ?? throw new ArgumentNullException(nameof(discoveryApp)); _serializer = serializationService ?? throw new ArgumentNullException(nameof(serializationService)); _localPeer = localPeer ?? throw new ArgumentNullException(nameof(localPeer)); _stats = nodeStatsManager ?? throw new ArgumentNullException(nameof(nodeStatsManager)); _protocolValidator = protocolValidator ?? throw new ArgumentNullException(nameof(protocolValidator)); _perfService = perfService ?? throw new ArgumentNullException(nameof(perfService)); _peerStorage = peerStorage ?? throw new ArgumentNullException(nameof(peerStorage)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _logger = _logManager.GetClassLogger(); _syncPool.SyncEvent += OnSyncEvent; localPeer.SessionCreated += SessionCreated; }
public void Can_write_no_peers() { IEthSyncPeerPool syncPeerPool = Substitute.For <IEthSyncPeerPool>(); SyncPeersReport report = new SyncPeersReport(syncPeerPool, Substitute.For <INodeStatsManager>(), NoErrorLimboLogs.Instance); report.Write(); report.Write(); }
public SyncModeSelector(IEthSyncPeerPool syncPeerPool, ISyncConfig syncConfig, ILogManager logManager) { _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _fastSyncEnabled = syncConfig?.FastSync ?? false; Current = _fastSyncEnabled ? SyncMode.Headers : SyncMode.Full; }
public FastBlocksDownloader(IEthSyncPeerPool syncPeerPool, IFastBlocksFeed fastBlocksFeed, IBlockValidator blockValidator, ISealValidator sealValidator, ILogManager logManager) { _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _fastBlocksFeed = fastBlocksFeed ?? throw new ArgumentNullException(nameof(fastBlocksFeed)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _sealValidator = sealValidator ?? throw new ArgumentNullException(nameof(sealValidator)); _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); }
public NodeDataDownloader(IEthSyncPeerPool syncPeerPool, INodeDataFeed nodeDataFeed, INodeDataConsumer additionalConsumer, ILogManager logManager) { _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _feed = nodeDataFeed ?? throw new ArgumentNullException(nameof(nodeDataFeed)); _additionalConsumer = additionalConsumer ?? throw new ArgumentNullException(nameof(additionalConsumer)); _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _additionalConsumer.NeedMoreData += AdditionalConsumerOnNeedMoreData; }
public SyncModeSelector(ISyncProgressResolver syncProgressResolver, IEthSyncPeerPool syncPeerPool, ISyncConfig syncConfig, ILogManager logManager) { _syncProgressResolver = syncProgressResolver ?? throw new ArgumentNullException(nameof(syncProgressResolver)); _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); Current = SyncMode.NotStarted; }
public SyncServer(ISnapshotableDb stateDb, ISnapshotableDb codeDb, IBlockTree blockTree, IReceiptStorage receiptStorage, ISealValidator sealValidator, IEthSyncPeerPool pool, ISynchronizer synchronizer, ILogManager logManager) { _synchronizer = synchronizer ?? throw new ArgumentNullException(nameof(synchronizer)); _pool = pool ?? throw new ArgumentNullException(nameof(pool)); _sealValidator = sealValidator ?? throw new ArgumentNullException(nameof(sealValidator)); _stateDb = stateDb ?? throw new ArgumentNullException(nameof(stateDb)); _codeDb = codeDb ?? throw new ArgumentNullException(nameof(codeDb)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _blockTree.NewHeadBlock += OnNewHeadBlock; }
private NodeDataDownloader PrepareDownloader(ISyncPeer syncPeer) { DbContext dbContext = new DbContext(_logger); BlockTree blockTree = Build.A.BlockTree().OfChainLength((int)BlockTree.BestSuggestedHeader.Number).TestObject; _pool = new EthSyncPeerPool(blockTree, new NodeStatsManager(new StatsConfig(), LimboLogs.Instance), 25, LimboLogs.Instance); _pool.Start(); _pool.AddPeer(syncPeer); NodeDataFeed feed = new NodeDataFeed(dbContext.LocalCodeDb, dbContext.LocalStateDb, _logManager); NodeDataDownloader downloader = new NodeDataDownloader(_pool, feed, NullDataConsumer.Instance, _logManager); return(downloader); }
public void Setup() { _nodeWhoSentTheBlock = new Node(TestItem.PublicKeyA, "127.0.0.1", 30303); _peerPool = Substitute.For <IEthSyncPeerPool>(); _peerPool.TryFind(_nodeWhoSentTheBlock.Id, out PeerInfo peerInfo).Returns(x => { ISyncPeer peer = Substitute.For <ISyncPeer>(); x[1] = new PeerInfo(peer); return(true); }); _blockTree = Substitute.For <IBlockTree>(); _synchronizer = Substitute.For <ISynchronizer>(); _syncServer = new SyncServer(new StateDb(), new StateDb(), _blockTree, NullReceiptStorage.Instance, TestBlockValidator.AlwaysValid, TestSealValidator.AlwaysValid, _peerPool, _synchronizer, new SyncConfig(), LimboLogs.Instance); }
public void Can_write_one_uninitialized() { ISyncPeer syncPeer = Substitute.For <ISyncPeer>(); IEthSyncPeerPool syncPeerPool = Substitute.For <IEthSyncPeerPool>(); PeerInfo peer1 = new PeerInfo(syncPeer); peer1.IsInitialized = false; PeerInfo[] peers = new PeerInfo[] { peer1 }; syncPeerPool.PeerCount.Returns(peers.Length); SyncPeersReport report = new SyncPeersReport(syncPeerPool, Substitute.For <INodeStatsManager>(), NoErrorLimboLogs.Instance); report.Write(); report.Write(); }
public SyncServer(ISnapshotableDb stateDb, ISnapshotableDb codeDb, IBlockTree blockTree, IReceiptStorage receiptStorage, IBlockValidator blockValidator, ISealValidator sealValidator, IEthSyncPeerPool pool, ISynchronizer synchronizer, ISyncConfig syncConfig, ILogManager logManager) { _synchronizer = synchronizer ?? throw new ArgumentNullException(nameof(synchronizer)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _pool = pool ?? throw new ArgumentNullException(nameof(pool)); _sealValidator = sealValidator ?? throw new ArgumentNullException(nameof(sealValidator)); _stateDb = stateDb ?? throw new ArgumentNullException(nameof(stateDb)); _codeDb = codeDb ?? throw new ArgumentNullException(nameof(codeDb)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _pivotNumber = _syncConfig.PivotNumberParsed; _blockTree.NewHeadBlock += OnNewHeadBlock; _pivotHash = new Keccak(_syncConfig.PivotHash ?? Keccak.Zero.ToString()); }
public SyncModeSelector(ISyncProgressResolver syncProgressResolver, IEthSyncPeerPool syncPeerPool, ISyncConfig syncConfig, ILogManager logManager) { _syncProgressResolver = syncProgressResolver ?? throw new ArgumentNullException(nameof(syncProgressResolver)); _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); if (syncConfig.FastSyncCatchUpHeightDelta <= FullSyncThreshold) { if (_logger.IsWarn) { _logger.Warn($"'FastSyncCatchUpHeightDelta' parameter is less or equal to {FullSyncThreshold}, which is a threshold of blocks always downloaded in full sync. 'FastSyncCatchUpHeightDelta' will have no effect."); } } Current = SyncMode.NotStarted; }
public Context() { _channel = Substitute.For <IChannel>(); _channelHandlerContext = Substitute.For <IChannelHandlerContext>(); _pipeline = Substitute.For <IChannelPipeline>(); _channelHandlerContext.Channel.Returns(_channel); _channel.Pipeline.Returns(_pipeline); _pipeline.Get <ZeroPacketSplitter>().Returns(new ZeroPacketSplitter(LimboLogs.Instance)); _packetSender = Substitute.For <IPacketSender>(); _syncServer = Substitute.For <ISyncServer>(); _syncServer = Substitute.For <ISyncServer>(); _syncServer.Genesis.Returns(Build.A.Block.Genesis.TestObject.Header); _syncServer.Head.Returns(Build.A.BlockHeader.TestObject); _txPool = Substitute.For <ITxPool>(); _discoveryApp = Substitute.For <IDiscoveryApp>(); _serializer = new MessageSerializationService(); _localPeer = Substitute.For <IRlpxPeer>(); _localPeer.LocalPort.Returns(_localPort); _localPeer.LocalNodeId.Returns(TestItem.PublicKeyA); _nodeStatsManager = new NodeStatsManager(new StatsConfig(), LimboLogs.Instance); _blockTree = Substitute.For <IBlockTree>(); _blockTree.ChainId.Returns(1); _blockTree.Genesis.Returns(Build.A.Block.Genesis.TestObject.Header); _protocolValidator = new ProtocolValidator(_nodeStatsManager, _blockTree, LimboLogs.Instance); _peerStorage = Substitute.For <INetworkStorage>(); _perfService = new PerfService(LimboLogs.Instance); _syncPeerPool = Substitute.For <IEthSyncPeerPool>(); _manager = new ProtocolsManager( _syncPeerPool, _syncServer, _txPool, _discoveryApp, _serializer, _localPeer, _nodeStatsManager, _protocolValidator, _peerStorage, _perfService, LimboLogs.Instance); _serializer.Register(new HelloMessageSerializer()); _serializer.Register(new StatusMessageSerializer()); _serializer.Register(new DisconnectMessageSerializer()); }
public Synchronizer(IBlockTree blockTree, IBlockValidator blockValidator, ISealValidator sealValidator, IEthSyncPeerPool peerPool, ISyncConfig syncConfig, INodeDataDownloader nodeDataDownloader, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _nodeDataDownloader = nodeDataDownloader ?? throw new ArgumentNullException(nameof(nodeDataDownloader)); _syncPeerPool = peerPool ?? throw new ArgumentNullException(nameof(peerPool)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); SyncProgressResolver syncProgressResolver = new SyncProgressResolver(_blockTree, _nodeDataDownloader, logManager); _syncMode = new SyncModeSelector(syncProgressResolver, _syncPeerPool, _syncConfig, logManager); // make ctor parameter? _blockDownloader = new BlockDownloader(_blockTree, blockValidator, sealValidator, logManager); }
public void Setup() { _localReceiptStorage = new InMemoryReceiptStorage(); _syncPeers = new List <LatencySyncPeerMock>(); _peerTrees = new Dictionary <LatencySyncPeerMock, IBlockTree>(); _peerMaxResponseSizes = new Dictionary <LatencySyncPeerMock, int>(); _pendingResponses = new Dictionary <LatencySyncPeerMock, FastBlocksBatch>(); _invalidBlocks = new Dictionary <LatencySyncPeerMock, HashSet <long> >(); _maliciousByRepetition = new HashSet <LatencySyncPeerMock>(); _maliciousByInvalidTxs = new HashSet <LatencySyncPeerMock>(); _maliciousByInvalidOmmers = new HashSet <LatencySyncPeerMock>(); _maliciousByShiftedOneForward = new HashSet <LatencySyncPeerMock>(); _maliciousByShiftedOneBack = new HashSet <LatencySyncPeerMock>(); _maliciousByShortAtStart = new HashSet <LatencySyncPeerMock>(); _maliciousByInvalidReceipts = new HashSet <LatencySyncPeerMock>(); _incorrectByTooShortMessages = new HashSet <LatencySyncPeerMock>(); _incorrectByTooLongMessages = new HashSet <LatencySyncPeerMock>(); _timingOut = new HashSet <LatencySyncPeerMock>(); _scheduledActions = new Dictionary <long, Action>(); LatencySyncPeerMock.RemoteIndex = 1; _time = 0; _syncPeerPool = Substitute.For <IEthSyncPeerPool>(); _syncPeerPool.WhenForAnyArgs(p => p.ReportNoSyncProgress(Arg.Any <SyncPeerAllocation>())) .Do(ci => { LatencySyncPeerMock mock = ((LatencySyncPeerMock)ci.Arg <SyncPeerAllocation>().Current.SyncPeer); mock.BusyUntil = _time + 5000; mock.IsReported = true; }); _syncPeerPool.WhenForAnyArgs(p => p.ReportNoSyncProgress(Arg.Any <PeerInfo>())) .Do(ci => { LatencySyncPeerMock mock = ((LatencySyncPeerMock)ci.Arg <PeerInfo>().SyncPeer); mock.BusyUntil = _time + 5000; mock.IsReported = true; }); _syncPeerPool.WhenForAnyArgs(p => p.ReportInvalid(Arg.Any <SyncPeerAllocation>())) .Do(ci => { LatencySyncPeerMock mock = ((LatencySyncPeerMock)ci.Arg <SyncPeerAllocation>().Current.SyncPeer); mock.BusyUntil = _time + 30000; mock.IsReported = true; }); _syncPeerPool.WhenForAnyArgs(p => p.ReportInvalid(Arg.Any <PeerInfo>())) .Do(ci => { LatencySyncPeerMock mock = ((LatencySyncPeerMock)ci.Arg <PeerInfo>().SyncPeer); mock.BusyUntil = _time + 30000; mock.IsReported = true; }); _syncPeerPool.AllPeers.Returns((ci) => _syncPeers.Select(sp => new PeerInfo(sp) { HeadNumber = sp.Tree.Head.Number })); _syncConfig = new SyncConfig(); _syncConfig.PivotHash = _validTree2048.Head.Hash.ToString(); _syncConfig.PivotNumber = _validTree2048.Head.Number.ToString(); _syncConfig.PivotTotalDifficulty = _validTree2048.Head.TotalDifficulty.ToString(); SetupLocalTree(); SetupFeed(); }
public static void ReportInvalid(this IEthSyncPeerPool syncPeerPool, SyncPeerAllocation allocation, string details) { syncPeerPool.ReportInvalid(allocation?.Current, details); }
public NodeDataDownloader(IEthSyncPeerPool syncPeerPool, INodeDataFeed nodeDataFeed, ILogManager logManager) { _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _nodeDataFeed = nodeDataFeed ?? throw new ArgumentNullException(nameof(nodeDataFeed)); _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); }
public SyncPeersReport(IEthSyncPeerPool peerPool, INodeStatsManager statsManager, ILogManager logManager) { _peerPool = peerPool ?? throw new ArgumentNullException(nameof(peerPool)); _stats = statsManager ?? throw new ArgumentNullException(nameof(statsManager)); _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); }
public static void ReportNoSyncProgress(this IEthSyncPeerPool syncPeerPool, SyncPeerAllocation allocation, bool isSevere = true) { syncPeerPool.ReportNoSyncProgress(allocation?.Current, isSevere); }
public void SetUp() { _blockTree = Substitute.For <IBlockTree>(); _stats = Substitute.For <INodeStatsManager>(); _pool = new EthSyncPeerPool(_blockTree, _stats, new SyncConfig(), 25, LimboLogs.Instance); }
private async Task InitializeNetwork( IReceiptStorage receiptStorage, ISealValidator sealValidator, TxValidator txValidator) { ISyncConfig syncConfig = _configProvider.GetConfig <ISyncConfig>(); _syncPeerPool = new EthSyncPeerPool(_blockTree, _nodeStatsManager, syncConfig, _logManager); NodeDataFeed feed = new NodeDataFeed(_dbProvider.CodeDb, _dbProvider.StateDb, _logManager); NodeDataDownloader nodeDataDownloader = new NodeDataDownloader(_syncPeerPool, feed, _logManager); _synchronizer = new Synchronizer(_blockTree, _blockValidator, _sealValidator, _syncPeerPool, syncConfig, nodeDataDownloader, _logManager); _syncServer = new SyncServer( _dbProvider.StateDb, _dbProvider.CodeDb, _blockTree, _receiptStorage, sealValidator, _syncPeerPool, _synchronizer, _logManager); InitDiscovery(); await InitPeer().ContinueWith(initPeerTask => { if (initPeerTask.IsFaulted) { _logger.Error("Unable to init the peer manager.", initPeerTask.Exception); } }); ; await StartSync().ContinueWith(initNetTask => { if (initNetTask.IsFaulted) { _logger.Error("Unable to start the synchronizer.", initNetTask.Exception); } }); await StartDiscovery().ContinueWith(initDiscoveryTask => { if (initDiscoveryTask.IsFaulted) { _logger.Error("Unable to start the discovery protocol.", initDiscoveryTask.Exception); } }); try { StartPeer(); } catch (Exception e) { _logger.Error("Unable to start the peer manager.", e); } ; if (_logger.IsInfo) { _logger.Info($"Ethereum : tcp://{_enode.IpAddress}:{_enode.P2PPort}"); } if (_logger.IsInfo) { _logger.Info($"Version : {ClientVersion.Description}"); } if (_logger.IsInfo) { _logger.Info($"This node : {_enode.Info}"); } if (_logger.IsInfo) { _logger.Info($"Node address : {_enode.Address} (do not use as an account)"); } }