private static void Start() { var privateKeyProvider = new PrivateKeyProvider(PrivateKey); var config = new DiscoveryConfigurationProvider(new NetworkHelper(Logger)); var signer = new Signer(); var cryptoRandom = new CryptoRandom(); var configProvider = new ConfigurationProvider(); var nodeFactory = new NodeFactory(); var calculator = new NodeDistanceCalculator(config); var nodeTable = new NodeTable(config, nodeFactory, new FileKeyStore(configProvider, new JsonSerializer(Logger), new AesEncrypter(configProvider, Logger), cryptoRandom, Logger), Logger, calculator); var evictionManager = new EvictionManager(nodeTable, Logger); var lifecycleFactory = new NodeLifecycleManagerFactory(nodeFactory, nodeTable, Logger, config, new DiscoveryMessageFactory(config), evictionManager); var discoveryManager = new DiscoveryManager(Logger, config, lifecycleFactory, nodeFactory, nodeTable); var nodesLocator = new NodesLocator(nodeTable, discoveryManager, config, Logger); var discoveryMesageFactory = new DiscoveryMessageFactory(config); var nodeIdResolver = new NodeIdResolver(signer); var pingSerializer = new PingMessageSerializer(signer, privateKeyProvider, discoveryMesageFactory, nodeIdResolver, nodeFactory); var pongSerializer = new PongMessageSerializer(signer, privateKeyProvider, discoveryMesageFactory, nodeIdResolver, nodeFactory); var findNodeSerializer = new FindNodeMessageSerializer(signer, privateKeyProvider, discoveryMesageFactory, nodeIdResolver, nodeFactory); var neighborsSerializer = new NeighborsMessageSerializer(signer, privateKeyProvider, discoveryMesageFactory, nodeIdResolver, nodeFactory); var messageSerializationService = new MessageSerializationService(); messageSerializationService.Register(pingSerializer); messageSerializationService.Register(pongSerializer); messageSerializationService.Register(findNodeSerializer); messageSerializationService.Register(neighborsSerializer); //P2P initialization IMessagePad eip8Pad = new Eip8MessagePad(cryptoRandom); messageSerializationService.Register(new AuthEip8MessageSerializer(eip8Pad)); messageSerializationService.Register(new AckEip8MessageSerializer(eip8Pad)); messageSerializationService.Register(new HelloMessageSerializer()); messageSerializationService.Register(new DisconnectMessageSerializer()); messageSerializationService.Register(new Nethermind.Network.P2P.PingMessageSerializer()); messageSerializationService.Register(new Nethermind.Network.P2P.PongMessageSerializer()); messageSerializationService.Register(new StatusMessageSerializer()); IEciesCipher eciesCipher = new EciesCipher(cryptoRandom); IEncryptionHandshakeService encryptionHandshakeService = new EncryptionHandshakeService(messageSerializationService, eciesCipher, cryptoRandom, signer, PrivateKey, Logger); var p2pManager = new P2PManager(encryptionHandshakeService, Logger, messageSerializationService, Substitute.For <ISynchronizationManager>()); //Connect discovery with P2P discoveryManager.RegisterDiscoveryListener(p2pManager); _discoveryApp = new DiscoveryApp(config, nodesLocator, Logger, discoveryManager, nodeFactory, nodeTable, messageSerializationService, cryptoRandom); _discoveryApp.Start(PrivateKey.PublicKey); }
private Task StartDiscovery() { if (!_initConfig.DiscoveryEnabled) { if (_logger.IsWarn) _logger.Warn($"Skipping discovery init due to ({nameof(IInitConfig.DiscoveryEnabled)} set to false)"); return Task.CompletedTask; } if (_logger.IsDebug) _logger.Debug("Starting discovery process."); _discoveryApp.Start(); if (_logger.IsDebug) _logger.Debug("Discovery process started."); return Task.CompletedTask; }
private Task StartDiscovery() { if (!_initConfig.DiscoveryEnabled) { if (_logger.IsInfo) { _logger.Info($"Skipping discovery init ({nameof(IInitConfig.DiscoveryEnabled)} = false)"); } return(Task.CompletedTask); } if (_logger.IsDebug) { _logger.Debug("Starting discovery process."); } _discoveryApp.Start(); if (_logger.IsDebug) { _logger.Debug("Discovery process started."); } return(Task.CompletedTask); }
private Task InitDiscovery(InitParams initParams) { _logger.Info("Initializing Discovery"); if (initParams.DiscoveryPort.HasValue) { _configProvider.GetConfig <NetworkConfig>().MasterPort = initParams.DiscoveryPort.Value; } var privateKeyProvider = new PrivateKeyProvider(_privateKey); var discoveryMessageFactory = new DiscoveryMessageFactory(_configProvider); var nodeIdResolver = new NodeIdResolver(_signer); var msgSerializersProvider = new DiscoveryMsgSerializersProvider(_messageSerializationService, _signer, privateKeyProvider, discoveryMessageFactory, nodeIdResolver, _nodeFactory); msgSerializersProvider.RegisterDiscoverySerializers(); var nodeDistanceCalculator = new NodeDistanceCalculator(_configProvider); var nodeTable = new NodeTable(_nodeFactory, _keyStore, nodeDistanceCalculator, _configProvider, _logManager); var evictionManager = new EvictionManager(nodeTable, _logManager); var nodeLifeCycleFactory = new NodeLifecycleManagerFactory(_nodeFactory, nodeTable, discoveryMessageFactory, evictionManager, _nodeStatsProvider, _configProvider, _logManager); var discoveryStorage = new DiscoveryStorage(_configProvider, _nodeFactory, _logManager, _perfService); _discoveryManager = new DiscoveryManager(nodeLifeCycleFactory, _nodeFactory, nodeTable, discoveryStorage, _configProvider, _logManager); var nodesLocator = new NodesLocator(nodeTable, _discoveryManager, _configProvider, _logManager); _discoveryApp = new DiscoveryApp(nodesLocator, _discoveryManager, _nodeFactory, nodeTable, _messageSerializationService, _cryptoRandom, discoveryStorage, _configProvider, _logManager); _discoveryApp.Start(_privateKey.PublicKey); _logger.Info("Discovery initialization completed"); return(Task.CompletedTask); }