//TODO Timer to periodically check active peers and move new to active based on max size and compatibility - stats and capabilities + update peers in synchronization manager //TODO Remove active and synch on disconnect //TODO Update Stats on disconnect, other events //TODO update runner to run discovery public PeerManager(IRlpxPeer localPeer, IDiscoveryManager discoveryManager, ISynchronizationManager synchronizationManager, INodeStatsProvider nodeStatsProvider, IPeerStorage peerStorage, INodeFactory nodeFactory, IConfigProvider configurationProvider, IPerfService perfService, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _localPeer = localPeer; _configurationProvider = configurationProvider.GetConfig <NetworkConfig>(); _synchronizationManager = synchronizationManager; _nodeStatsProvider = nodeStatsProvider; _discoveryManager = discoveryManager; _perfService = perfService; _nodeFactory = nodeFactory; _isDiscoveryEnabled = _discoveryManager != null; if (_isDiscoveryEnabled) { discoveryManager.NodeDiscovered += async(s, e) => await OnNodeDiscovered(s, e); } localPeer.ConnectionInitialized += OnRemoteConnectionInitialized; synchronizationManager.SyncFailed += async(s, e) => await OnSyncFailed(s, e); _peerStorage = peerStorage; _peerStorage.StartBatch(); }
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(); _protocolFactories = GetProtocolFactories(); localPeer.SessionCreated += SessionCreated; }
public DiscoveryApp( INodesLocator nodesLocator, IDiscoveryManager discoveryManager, INodeTable nodeTable, IMessageSerializationService messageSerializationService, ICryptoRandom cryptoRandom, INetworkStorage discoveryStorage, INetworkConfig networkConfig, IDiscoveryConfig discoveryConfig, ITimestamper timestamper, ILogManager logManager, IPerfService perfService) { _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _logger = _logManager.GetClassLogger(); _perfService = perfService ?? throw new ArgumentNullException(nameof(perfService)); _discoveryConfig = discoveryConfig ?? throw new ArgumentNullException(nameof(discoveryConfig)); _timestamper = timestamper ?? throw new ArgumentNullException(nameof(timestamper)); _nodesLocator = nodesLocator ?? throw new ArgumentNullException(nameof(nodesLocator)); _discoveryManager = discoveryManager ?? throw new ArgumentNullException(nameof(discoveryManager)); _nodeTable = nodeTable ?? throw new ArgumentNullException(nameof(nodeTable)); _messageSerializationService = messageSerializationService ?? throw new ArgumentNullException(nameof(messageSerializationService)); _cryptoRandom = cryptoRandom ?? throw new ArgumentNullException(nameof(cryptoRandom)); _discoveryStorage = discoveryStorage ?? throw new ArgumentNullException(nameof(discoveryStorage)); _networkConfig = networkConfig ?? throw new ArgumentNullException(nameof(networkConfig)); _discoveryStorage.StartBatch(); }
public ProtocolsManager( ISynchronizationManager synchronizationManager, ITransactionPool transactionPool, IDiscoveryApp discoveryApp, IMessageSerializationService serializationService, IRlpxPeer localPeer, INodeStatsManager nodeStatsManager, IProtocolValidator protocolValidator, INetworkStorage peerStorage, IPerfService perfService, ILogManager logManager) { _syncManager = synchronizationManager ?? throw new ArgumentNullException(nameof(synchronizationManager)); _transactionPool = transactionPool ?? throw new ArgumentNullException(nameof(transactionPool)); _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(); _syncManager.SyncEvent += OnSyncEvent; localPeer.SessionCreated += SessionCreated; }
public EthereumRunner(IRpcModuleProvider rpcModuleProvider, IConfigProvider configurationProvider, ILogManager logManager, IGrpcServer grpcServer, INdmConsumerChannelManager ndmConsumerChannelManager, INdmDataPublisher ndmDataPublisher, INdmInitializer ndmInitializer, IWebSocketsManager webSocketsManager, IJsonSerializer ethereumJsonSerializer) { _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _grpcServer = grpcServer; _ndmConsumerChannelManager = ndmConsumerChannelManager; _ndmDataPublisher = ndmDataPublisher; _ndmInitializer = ndmInitializer; _webSocketsManager = webSocketsManager; _ethereumJsonSerializer = ethereumJsonSerializer; _logger = _logManager.GetClassLogger(); InitRlp(); _configProvider = configurationProvider ?? throw new ArgumentNullException(nameof(configurationProvider)); _rpcModuleProvider = rpcModuleProvider ?? throw new ArgumentNullException(nameof(rpcModuleProvider)); _initConfig = configurationProvider.GetConfig <IInitConfig>(); _txPoolConfig = configurationProvider.GetConfig <ITxPoolConfig>(); _perfService = new PerfService(_logManager); _networkConfig = _configProvider.GetConfig <INetworkConfig>(); _ipResolver = new IpResolver(_networkConfig, _logManager); _networkConfig.ExternalIp = _ipResolver.ExternalIp.ToString(); _networkConfig.LocalIp = _ipResolver.LocalIp.ToString(); }
public SynchronizationManager( IBlockTree blockTree, IBlockValidator blockValidator, IHeaderValidator headerValidator, ITransactionStore transactionStore, ITransactionValidator transactionValidator, ILogManager logManager, IBlockchainConfig blockchainConfig, IPerfService perfService) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _blockchainConfig = blockchainConfig ?? throw new ArgumentNullException(nameof(blockchainConfig)); _perfService = perfService; _transactionStore = transactionStore ?? throw new ArgumentNullException(nameof(transactionStore)); _transactionValidator = transactionValidator ?? throw new ArgumentNullException(nameof(transactionValidator)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _headerValidator = headerValidator ?? throw new ArgumentNullException(nameof(headerValidator)); if (_logger.IsDebug) { _logger.Debug($"Initialized SynchronizationManager with head block {Head.ToString(BlockHeader.Format.Short)}"); } _entireSyncStopWatch.Start(); }
public Eth63ProtocolHandler( IP2PSession p2PSession, IMessageSerializationService serializer, ISynchronizationManager sync, ILogManager logManager, IPerfService perfService) : base(p2PSession, serializer, sync, logManager, perfService) { }
public PeerSessionLogger(ILogManager logManager, IConfigProvider configProvider, IPerfService perfService) { _perfService = perfService; _logger = logManager.GetClassLogger(); _statsConfig = configProvider.GetConfig <IStatsConfig>(); _networkConfig = configProvider.GetConfig <INetworkConfig>(); }
protected ProtocolHandlerBase(IP2PSession p2PSession, IMessageSerializationService serializer, ILogManager logManager, IPerfService perfService) { Logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer)); P2PSession = p2PSession ?? throw new ArgumentNullException(nameof(p2PSession)); InitCompletionSource = new TaskCompletionSource <MessageBase>(); PerfService = perfService; }
public DiscoveryStorage(IDiscoveryConfigurationProvider configurationProvider, INodeFactory nodeFactory, ILogger logger, IPerfService perfService) { _configurationProvider = configurationProvider; _nodeFactory = nodeFactory; _logger = logger; _perfService = perfService; _db = new FullDbOnTheRocks(Path.Combine(_configurationProvider.DbBasePath, FullDbOnTheRocks.DiscoveryNodesDbPath)); }
public DiscoveryStorage(IConfigProvider configurationProvider, INodeFactory nodeFactory, ILogManager logManager, IPerfService perfService) { _logger = logManager.GetClassLogger(); _configurationProvider = configurationProvider.GetConfig <NetworkConfig>(); _nodeFactory = nodeFactory; _perfService = perfService; _db = new FullDbOnTheRocks(Path.Combine(_configurationProvider.DbBasePath, FullDbOnTheRocks.DiscoveryNodesDbPath)); }
public Eth63ProtocolHandler( ISession session, IMessageSerializationService serializer, INodeStatsManager nodeStatsManager, ISyncServer syncServer, ILogManager logManager, IPerfService perfService, ITxPool txPool) : base(session, serializer, nodeStatsManager, syncServer, logManager, perfService, txPool) { }
public Eth63ProtocolHandler( IP2PSession p2PSession, IMessageSerializationService serializer, ISynchronizationManager syncManager, ILogManager logManager, IPerfService perfService, IBlockTree blockTree, ITransactionPool transactionPool, ITimestamp timestamp) : base(p2PSession, serializer, syncManager, logManager, perfService, blockTree, transactionPool, timestamp) { }
public SimpleFilePublicKeyDb(string dbDirectoryPath, ILogManager logManager, IPerfService perfService) { _perfService = perfService; _dbPath = Path.Combine(dbDirectoryPath, DbName); _logger = logManager.GetClassLogger(); if (!Directory.Exists(dbDirectoryPath)) { Directory.CreateDirectory(dbDirectoryPath); } _dbLastDirName = new DirectoryInfo(dbDirectoryPath).Name; LoadData(); }
public EthereumRunner(IRpcModuleProvider rpcModuleProvider, IConfigProvider configurationProvider, ILogManager logManager) { _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _logger = _logManager.GetClassLogger(); InitRlp(); _configProvider = configurationProvider ?? throw new ArgumentNullException(nameof(configurationProvider)); _rpcModuleProvider = rpcModuleProvider ?? throw new ArgumentNullException(nameof(rpcModuleProvider)); _initConfig = configurationProvider.GetConfig<IInitConfig>(); _perfService = new PerfService(_logManager) {LogOnDebug = _initConfig.LogPerfStatsOnDebug}; _networkHelper = new NetworkHelper(_logger); }
public P2PProtocolHandler( IP2PSession p2PSession, IMessageSerializationService serializer, NodeId localNodeId, int listenPort, ILogManager logManager, IPerfService perfService) : base(p2PSession, serializer, logManager, perfService) { LocalNodeId = localNodeId; ListenPort = listenPort; AgreedCapabilities = new List <Capability>(); }
public RlpxPeer(NodeId localNodeId, int localPort, ISynchronizationManager synchronizationManager, IMessageSerializationService messageSerializationService, IEncryptionHandshakeService encryptionHandshakeService, INodeStatsProvider nodeStatsProvider, ILogManager logManager, IPerfService perfService) { _encryptionHandshakeService = encryptionHandshakeService ?? throw new ArgumentNullException(nameof(encryptionHandshakeService)); _nodeStatsProvider = nodeStatsProvider ?? throw new ArgumentNullException(nameof(nodeStatsProvider)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _perfService = perfService; _logger = logManager.GetClassLogger(); _serializationService = messageSerializationService ?? throw new ArgumentNullException(nameof(messageSerializationService)); _synchronizationManager = synchronizationManager ?? throw new ArgumentNullException(nameof(synchronizationManager)); LocalNodeId = localNodeId ?? throw new ArgumentNullException(nameof(localNodeId)); _localPort = localPort; }
public P2PProtocolHandler( IP2PSession p2PSession, IMessageSerializationService serializer, NodeId localNodeId, int listenPort, ILogManager logManager, IPerfService perfService) : base(p2PSession, serializer, logManager) { _perfService = perfService ?? throw new ArgumentNullException(nameof(perfService)); LocalNodeId = localNodeId; ListenPort = listenPort; AgreedCapabilities = new List <Capability>(); }
public P2PProtocolHandler( ISession session, PublicKey localNodeId, INodeStatsManager nodeStatsManager, IMessageSerializationService serializer, IPerfService perfService, ILogManager logManager) : base(session, nodeStatsManager, serializer, logManager) { _nodeStatsManager = nodeStatsManager ?? throw new ArgumentNullException(nameof(nodeStatsManager)); _perfService = perfService ?? throw new ArgumentNullException(nameof(perfService)); LocalNodeId = localNodeId; ListenPort = session.LocalPort; AgreedCapabilities = new List <Capability>(); }
private void ConfigureTools(InitParams initParams) { _runnerCancellation = new CancellationTokenSource(); _logger = _logManager.GetClassLogger(); _logger.Info("Initializing Ethereum"); _logger.Info($"Server GC : {System.Runtime.GCSettings.IsServerGC}"); _logger.Info($"GC latency mode : {System.Runtime.GCSettings.LatencyMode}"); _logger.Info($"LOH compaction mode : {System.Runtime.GCSettings.LargeObjectHeapCompactionMode}"); _privateKey = new PrivateKey(initParams.TestNodeKey); _dbBasePath = initParams.BaseDbPath ?? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "db"); _tracer = initParams.TransactionTracingEnabled ? new TransactionTracer(initParams.BaseTracingPath, new UnforgivingJsonSerializer()) : NullTracer.Instance; _perfService = new PerfService(_logManager); }
public RlpxPeer( PublicKey localNodeId, int localPort, IEncryptionHandshakeService encryptionHandshakeService, ILogManager logManager, IPerfService perfService, ISessionMonitor sessionMonitor) { _encryptionHandshakeService = encryptionHandshakeService ?? throw new ArgumentNullException(nameof(encryptionHandshakeService)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _perfService = perfService ?? throw new ArgumentNullException(nameof(perfService)); _sessionMonitor = sessionMonitor ?? throw new ArgumentNullException(nameof(sessionMonitor)); _logger = logManager.GetClassLogger(); LocalNodeId = localNodeId ?? throw new ArgumentNullException(nameof(localNodeId)); LocalPort = localPort; }
public Eth62ProtocolHandler( IP2PSession p2PSession, IMessageSerializationService serializer, ISynchronizationManager syncManager, ILogManager logManager, IPerfService perfService, IBlockTree blockTree, ITransactionPool transactionPool, ITimestamp timestamp) : base(p2PSession, serializer, logManager) { SyncManager = syncManager; _perfService = perfService ?? throw new ArgumentNullException(nameof(perfService)); _blockTree = blockTree; _transactionPool = transactionPool; _timestamp = timestamp; }
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()); }
//TODO Timer to periodically check active peers and move new to active based on max size and compatibility - stats and capabilities + update peers in synchronization manager //TODO Remove active and synch on disconnect //TODO Update Stats on disconnect, other events //TODO Move Discover to Network //TODO update runner to run discovery public PeerManager(IRlpxPeer localPeer, IDiscoveryManager discoveryManager, ILogger logger, IDiscoveryConfigurationProvider configurationProvider, ISynchronizationManager synchronizationManager, INodeStatsProvider nodeStatsProvider, IPeerStorage peerStorage, IPerfService perfService) { _localPeer = localPeer; _logger = logger; _configurationProvider = configurationProvider; _synchronizationManager = synchronizationManager; _nodeStatsProvider = nodeStatsProvider; _discoveryManager = discoveryManager; _perfService = perfService; _isDiscoveryEnabled = _discoveryManager != null; if (_isDiscoveryEnabled) { discoveryManager.NodeDiscovered += async(s, e) => await OnNodeDiscovered(s, e); } localPeer.ConnectionInitialized += OnRemoteConnectionInitialized; _peerStorage = peerStorage; _peerStorage.StartBatch(); }
public Eth62ProtocolHandler( ISession session, IMessageSerializationService serializer, INodeStatsManager statsManager, ISyncServer syncServer, ILogManager logManager, IPerfService perfService, ITxPool txPool) : base(session, statsManager, serializer, logManager) { SyncServer = syncServer; _perfService = perfService ?? throw new ArgumentNullException(nameof(perfService)); _txPool = txPool; _timestamp = new Timestamp(); _txFloodCheckTimer = new System.Timers.Timer(_txFloodCheckInterval.TotalMilliseconds); _txFloodCheckTimer.Elapsed += CheckTxFlooding; _txFloodCheckTimer.Start(); }
public EthereumRunner(IRpcModuleProvider rpcModuleProvider, IConfigProvider configurationProvider, ILogManager logManager, IGrpcService grpcService, IGrpcClient grpcClient, INdmConsumerChannelManager ndmConsumerChannelManager, INdmDataPublisher ndmDataPublisher, INdmInitializer ndmInitializer) { _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _grpcService = grpcService; _grpcClient = grpcClient; _ndmConsumerChannelManager = ndmConsumerChannelManager; _ndmDataPublisher = ndmDataPublisher; _ndmInitializer = ndmInitializer; _logger = _logManager.GetClassLogger(); InitRlp(); _configProvider = configurationProvider ?? throw new ArgumentNullException(nameof(configurationProvider)); _rpcModuleProvider = rpcModuleProvider ?? throw new ArgumentNullException(nameof(rpcModuleProvider)); _initConfig = configurationProvider.GetConfig <IInitConfig>(); _txPoolConfig = configurationProvider.GetConfig <ITxPoolConfig>(); _perfService = new PerfService(_logManager); _networkHelper = new NetworkHelper(_logger); }
public Eth62ProtocolHandler( IP2PSession p2PSession, IMessageSerializationService serializer, ISynchronizationManager syncManager, ILogManager logManager, IPerfService perfService, IBlockTree blockTree, ITransactionPool transactionPool, ITimestamp timestamp) : base(p2PSession, serializer, logManager) { SyncManager = syncManager; _perfService = perfService ?? throw new ArgumentNullException(nameof(perfService)); _blockTree = blockTree; _transactionPool = transactionPool; _timestamp = timestamp; _txFloodCheckTimer = new System.Timers.Timer(_txFloodCheckInterval.TotalMilliseconds); _txFloodCheckTimer.Elapsed += CheckTxFlooding; _txFloodCheckTimer.Start(); }
public BlockchainProcessor( IBlockTree blockTree, ISealEngine sealEngine, ITransactionStore transactionStore, IDifficultyCalculator difficultyCalculator, IBlockProcessor blockProcessor, IEthereumSigner signer, ILogManager logManager, IPerfService perfService) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _blockTree.NewBestSuggestedBlock += OnNewBestBlock; _transactionStore = transactionStore ?? throw new ArgumentNullException(nameof(transactionStore)); _difficultyCalculator = difficultyCalculator ?? throw new ArgumentNullException(nameof(difficultyCalculator)); _sealEngine = sealEngine ?? throw new ArgumentNullException(nameof(sealEngine)); _blockProcessor = blockProcessor ?? throw new ArgumentNullException(nameof(blockProcessor)); _signer = signer ?? throw new ArgumentNullException(nameof(signer)); _perfService = perfService; _stats = new ProcessingStats(_logger); }
public DiscoveryApp( INodesLocator nodesLocator, IDiscoveryManager discoveryManager, INodeTable nodeTable, IMessageSerializationService messageSerializationService, ICryptoRandom cryptoRandom, INetworkStorage discoveryStorage, INetworkConfig networkConfig, ILogManager logManager, IPerfService perfService) { _logManager = logManager; _perfService = perfService; _logger = _logManager.GetClassLogger(); _networkConfig = networkConfig; _nodesLocator = nodesLocator; _discoveryManager = discoveryManager; _nodeTable = nodeTable; _messageSerializationService = messageSerializationService; _cryptoRandom = cryptoRandom; _discoveryStorage = discoveryStorage; _discoveryStorage.StartBatch(); }
public NetworkStorage(string dbDirectory, INetworkConfig networkConfig, ILogManager logManager, IPerfService perfService) { _logger = logManager?.GetClassLogger(); _dbDirectory = dbDirectory; _db = new SimpleFilePublicKeyDb(Path.Combine(networkConfig.DbBasePath, _dbDirectory), logManager, perfService); }