public void Mining_defaults_are_correct(string configFile, bool defaultValue = false) { ConfigProvider configProvider = GetConfigProviderFromFile(configFile); IInitConfig config = configProvider.GetConfig <IInitConfig>(); Assert.AreEqual(config.IsMining, defaultValue); }
public void IsMining_enabled_for_ndm_consumer_local(string configFile) { ConfigProvider configProvider = GetConfigProviderFromFile(configFile); IInitConfig config = configProvider.GetConfig <IInitConfig>(); Assert.AreEqual(true, config.IsMining); }
private void InitDbApi(IInitConfig initConfig, IDbConfig dbConfig, bool storeReceipts) { switch (initConfig.DiagnosticMode) { case DiagnosticMode.RpcDb: _api.DbProvider = new DbProvider(DbModeHint.Persisted); RocksDbFactory rocksDbFactory = new(dbConfig, _api.LogManager, Path.Combine(initConfig.BaseDbPath, "debug")); RpcDbFactory rpcDbFactory = new(new MemDbFactory(), rocksDbFactory, _api.EthereumJsonSerializer, new BasicJsonRpcClient(new Uri(initConfig.RpcDbUrl), _api.EthereumJsonSerializer, _api.LogManager), _api.LogManager); _api.RocksDbFactory = rpcDbFactory; _api.MemDbFactory = rpcDbFactory; break; case DiagnosticMode.ReadOnlyDb: DbProvider rocksDbProvider = new(DbModeHint.Persisted); _api.DbProvider = new ReadOnlyDbProvider(rocksDbProvider, storeReceipts); // ToDo storeReceipts as createInMemoryWriteStore - bug? _api.DisposeStack.Push(rocksDbProvider); _api.RocksDbFactory = new RocksDbFactory(dbConfig, _api.LogManager, Path.Combine(initConfig.BaseDbPath, "debug")); _api.MemDbFactory = new MemDbFactory(); break; case DiagnosticMode.MemDb: _api.DbProvider = new DbProvider(DbModeHint.Mem); _api.RocksDbFactory = new RocksDbFactory(dbConfig, _api.LogManager, Path.Combine(initConfig.BaseDbPath, "debug")); _api.MemDbFactory = new MemDbFactory(); break; default: _api.DbProvider = new DbProvider(DbModeHint.Persisted); _api.RocksDbFactory = new RocksDbFactory(dbConfig, _api.LogManager, initConfig.BaseDbPath); _api.MemDbFactory = new MemDbFactory(); break; } }
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 async Task Execute(CancellationToken _) { ILogger logger = _api.LogManager.GetClassLogger(); /* sync */ IDbConfig dbConfig = _api.Config <IDbConfig>(); ISyncConfig syncConfig = _api.Config <ISyncConfig>(); IInitConfig initConfig = _api.Config <IInitConfig>(); IPruningConfig pruningConfig = _api.Config <IPruningConfig>(); foreach (PropertyInfo propertyInfo in typeof(IDbConfig).GetProperties()) { if (logger.IsDebug) { logger.Debug($"DB {propertyInfo.Name}: {propertyInfo.GetValue(dbConfig)}"); } } try { bool useReceiptsDb = initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync; InitDbApi(initConfig, dbConfig, initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync); StandardDbInitializer dbInitializer = new(_api.DbProvider, _api.RocksDbFactory, _api.MemDbFactory, _api.FileSystem, pruningConfig.Mode.IsFull()); await dbInitializer.InitStandardDbsAsync(useReceiptsDb); } catch (TypeInitializationException e) { if (logger.IsError) { logger.Error("RocksDb was not found, please make sure it is installed on your machine. \n On macOs : 'brew install rocksdb'", e); } } }
public Task Init(INethermindApi api) { _api = api; var(getFromAPi, _) = _api.ForInit; _analyticsConfig = getFromAPi.Config <IAnalyticsConfig>(); IInitConfig initConfig = getFromAPi.Config <IInitConfig>(); _isOn = initConfig.WebSocketsEnabled && (_analyticsConfig.PluginsEnabled || _analyticsConfig.StreamBlocks || _analyticsConfig.StreamTransactions); if (!_isOn) { if (!initConfig.WebSocketsEnabled) { getFromAPi.LogManager.GetClassLogger().Warn($"{nameof(AnalyticsPlugin)} disabled due to {nameof(initConfig.WebSocketsEnabled)} set to false"); } else { getFromAPi.LogManager.GetClassLogger().Warn($"{nameof(AnalyticsPlugin)} plugin disabled due to {nameof(AnalyticsConfig)} settings set to false"); } } return(Task.CompletedTask); }
public Task Execute(CancellationToken cancellationToken) { IInitConfig initConfig = _get.Config <IInitConfig>(); IBloomConfig bloomConfig = _get.Config <IBloomConfig>(); IFileStoreFactory fileStoreFactory = initConfig.DiagnosticMode == DiagnosticMode.MemDb ? new InMemoryDictionaryFileStoreFactory() : new FixedSizeFileStoreFactory(Path.Combine(initConfig.BaseDbPath, DbNames.Bloom), DbNames.Bloom, Bloom.ByteLength); IBloomStorage bloomStorage = _set.BloomStorage = bloomConfig.Index ? new BloomStorage(bloomConfig, _get.DbProvider !.BloomDb, fileStoreFactory) : NullBloomStorage.Instance; _get.DisposeStack.Push(bloomStorage); IChainLevelInfoRepository chainLevelInfoRepository = _set.ChainLevelInfoRepository = new ChainLevelInfoRepository(_get.DbProvider !.BlockInfosDb); IBlockTree blockTree = _set.BlockTree = new BlockTree( _get.DbProvider, chainLevelInfoRepository, _get.SpecProvider, bloomStorage, _get.Config <ISyncConfig>(), _get.LogManager); ISigner signer = NullSigner.Instance; ISignerStore signerStore = NullSigner.Instance; if (_get.Config <IMiningConfig>().Enabled) { Signer signerAndStore = new(_get.SpecProvider !.ChainId, _get.OriginalSignerKey !, _get.LogManager); signer = signerAndStore; signerStore = signerAndStore; } _set.EngineSigner = signer; _set.EngineSignerStore = signerStore; ReceiptsRecovery receiptsRecovery = new(_get.EthereumEcdsa, _get.SpecProvider); IReceiptStorage receiptStorage = _set.ReceiptStorage = initConfig.StoreReceipts ? new PersistentReceiptStorage(_get.DbProvider.ReceiptsDb, _get.SpecProvider !, receiptsRecovery) : NullReceiptStorage.Instance; IReceiptFinder receiptFinder = _set.ReceiptFinder = new FullInfoReceiptFinder(receiptStorage, receiptsRecovery, blockTree); LogFinder logFinder = new( blockTree, receiptFinder, receiptStorage, bloomStorage, _get.LogManager, new ReceiptsRecovery(_get.EthereumEcdsa, _get.SpecProvider), 1024); _set.LogFinder = logFinder; return(Task.CompletedTask); }
public async Task Execute() { ILogger logger = _context.LogManager.GetClassLogger(); /* sync */ IDbConfig dbConfig = _context.Config <IDbConfig>(); ISyncConfig syncConfig = _context.Config <ISyncConfig>(); IInitConfig initConfig = _context.Config <IInitConfig>(); foreach (PropertyInfo propertyInfo in typeof(IDbConfig).GetProperties()) { if (logger.IsDebug) { logger.Debug($"DB {propertyInfo.Name}: {propertyInfo.GetValue(dbConfig)}"); } } _context.DbProvider = await GetDbProvider(initConfig, dbConfig, initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync); if (syncConfig.BeamSync) { BeamSyncDbProvider beamSyncProvider = new BeamSyncDbProvider(_context.DbProvider, "processor DB", _context.LogManager); _context.DbProvider = beamSyncProvider; _context.NodeDataConsumer = beamSyncProvider.NodeDataConsumer; } }
public void Genesis_hash_is_correct(string configFile, string genesisHash) { ConfigProvider configProvider = GetConfigProviderFromFile(configFile); IInitConfig config = configProvider.GetConfig <IInitConfig>(); Assert.AreEqual(config.GenesisHash, genesisHash); }
public Task Run(string[] args) { (CommandLineApplication app, var buildConfigProvider, var getDbBasePath) = BuildCommandLineApp(); ManualResetEventSlim appClosed = new ManualResetEventSlim(true); app.OnExecute(async() => { appClosed.Reset(); IConfigProvider configProvider = buildConfigProvider(); IInitConfig initConfig = configProvider.GetConfig <IInitConfig>(); _logger = new NLogLogger(initConfig.LogFileName, initConfig.LogDirectory); if (_logger.IsDebug) { _logger.Debug($"Nethermind version: {ClientVersion.Description}"); } LogMemoryConfiguration(); string?pathDbPath = getDbBasePath(); if (!string.IsNullOrWhiteSpace(pathDbPath)) { string newDbPath = Path.Combine(pathDbPath, initConfig.BaseDbPath); if (_logger.IsDebug) { _logger.Debug( $"Adding prefix to baseDbPath, new value: {newDbPath}, old value: {initConfig.BaseDbPath}"); } initConfig.BaseDbPath = newDbPath ?? Path.Combine(AppDomain.CurrentDomain.BaseDirectory ?? "", "db"); } Console.Title = initConfig.LogFileName; Console.CancelKeyPress += ConsoleOnCancelKeyPress; EthereumJsonSerializer serializer = new EthereumJsonSerializer(); if (_logger.IsDebug) { _logger.Debug($"Nethermind config:\n{serializer.Serialize(initConfig, true)}\n"); } _processExit = new TaskCompletionSource <object?>(); _cancelKeySource = new TaskCompletionSource <object?>(); await StartRunners(_processCloseCancellationSource.Token, configProvider); await Task.WhenAny(_cancelKeySource.Task, _processExit.Task); Console.WriteLine("Closing, please wait until all functions are stopped properly..."); StopAsync().Wait(); Console.WriteLine("All done, goodbye!"); appClosed.Set(); return(0); }); app.Execute(args); appClosed.Wait(); return(Task.CompletedTask); }
public ApplyMemoryHint(EthereumRunnerContext context) { _context = context ?? throw new ArgumentNullException(nameof(context)); _initConfig = context.Config <IInitConfig>(); _dbConfig = context.Config <IDbConfig>(); _networkConfig = context.Config <INetworkConfig>(); _syncConfig = context.Config <ISyncConfig>(); }
public EthereumRunner(IConfigProvider configurationProvider, INetworkHelper networkHelper, ILogManager logManager) { _configProvider = configurationProvider; _initConfig = configurationProvider.GetConfig <IInitConfig>(); _networkHelper = networkHelper; _logManager = logManager; }
public JsonRpcRunner(IConfigProvider configurationProvider, IRpcModuleProvider moduleProvider, Log.ILogManager logManager) { _jsonRpcConfig = configurationProvider.GetConfig <IJsonRpcConfig>(); _initConfig = configurationProvider.GetConfig <IInitConfig>(); _moduleProvider = moduleProvider ?? throw new ArgumentNullException(nameof(moduleProvider)); _logManager = logManager; _logger = logManager.GetClassLogger(); }
public ApiBuilder(IConfigProvider configProvider, ILogManager logManager) { _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _logger = _logManager.GetClassLogger(); _configProvider = configProvider ?? throw new ArgumentNullException(nameof(configProvider)); _initConfig = configProvider.GetConfig <IInitConfig>(); _jsonSerializer = new EthereumJsonSerializer(); }
public ApplyMemoryHint(NethermindApi context) { _api = context ?? throw new ArgumentNullException(nameof(context)); _initConfig = context.Config <IInitConfig>(); _dbConfig = context.Config <IDbConfig>(); _networkConfig = context.Config <INetworkConfig>(); _syncConfig = context.Config <ISyncConfig>(); _txPoolConfig = context.Config <ITxPoolConfig>(); }
public void Setup() { _dbConfig = new DbConfig(); _syncConfig = new SyncConfig(); _initConfig = new InitConfig(); _txPoolConfig = new TxPoolConfig(); _networkConfig = new NetworkConfig(); _memoryHintMan = new MemoryHintMan(LimboLogs.Instance); }
public ApplyMemoryHint(INethermindApi api) { _api = api ?? throw new ArgumentNullException(nameof(api)); _initConfig = api.Config <IInitConfig>(); _dbConfig = api.Config <IDbConfig>(); _networkConfig = api.Config <INetworkConfig>(); _syncConfig = api.Config <ISyncConfig>(); _txPoolConfig = api.Config <ITxPoolConfig>(); }
private async Task <RocksDbProvider> GetRocksDbProvider(IDbConfig dbConfig, string basePath, bool useReceiptsDb) { IInitConfig initConfig = _context.Config <IInitConfig>(); RocksDbProvider debugRecorder = new RocksDbProvider(_context.LogManager, _context.Config <INdmConfig>().Enabled); ThisNodeInfo.AddInfo("DB location :", $"{basePath}"); await debugRecorder.Init(basePath, dbConfig, useReceiptsDb); return(debugRecorder); }
public ReceiptMigration(NethermindApi context) { _logger = context.LogManager.GetClassLogger <ReceiptMigration>(); _receiptStorage = context.ReceiptStorage ?? throw new StepDependencyException(nameof(context.ReceiptStorage)); _dbProvider = context.DbProvider ?? throw new StepDependencyException(nameof(context.DbProvider)); _disposeStack = context.DisposeStack ?? throw new StepDependencyException(nameof(context.DisposeStack)); _blockTree = context.BlockTree ?? throw new StepDependencyException(nameof(context.BlockTree)); _syncModeSelector = context.SyncModeSelector ?? throw new StepDependencyException(nameof(context.SyncModeSelector)); _chainLevelInfoRepository = context.ChainLevelInfoRepository ?? throw new StepDependencyException(nameof(context.ChainLevelInfoRepository)); _initConfig = context.Config <IInitConfig>() ?? throw new StepDependencyException("initConfig"); }
public ReceiptMigration(IApiWithNetwork api) { _logger = api.LogManager.GetClassLogger <ReceiptMigration>(); _receiptStorage = api.ReceiptStorage ?? throw new StepDependencyException(nameof(api.ReceiptStorage)); _dbProvider = api.DbProvider ?? throw new StepDependencyException(nameof(api.DbProvider)); _disposeStack = api.DisposeStack ?? throw new StepDependencyException(nameof(api.DisposeStack)); _blockTree = api.BlockTree ?? throw new StepDependencyException(nameof(api.BlockTree)); _syncModeSelector = api.SyncModeSelector ?? throw new StepDependencyException(nameof(api.SyncModeSelector)); _chainLevelInfoRepository = api.ChainLevelInfoRepository ?? throw new StepDependencyException(nameof(api.ChainLevelInfoRepository)); _initConfig = api.Config <IInitConfig>() ?? throw new StepDependencyException("initConfig"); }
public JsonRpcRunner(IConfigProvider configurationProvider, IRpcModuleProvider moduleProvider, ILogManager logManager, IJsonRpcProcessor jsonRpcProcessor, IWebSocketsManager webSocketsManager) { _jsonRpcConfig = configurationProvider.GetConfig <IJsonRpcConfig>(); _initConfig = configurationProvider.GetConfig <IInitConfig>(); _configurationProvider = configurationProvider; _moduleProvider = moduleProvider ?? throw new ArgumentNullException(nameof(moduleProvider)); _logManager = logManager; _jsonRpcProcessor = jsonRpcProcessor; _webSocketsManager = webSocketsManager; _logger = logManager.GetClassLogger(); }
public async Task InitNetworkProtocol() { var(getFromAPi, _) = _api.ForNetwork; INetworkConfig networkConfig = _api.Config <INetworkConfig>(); IInitConfig initConfig = _api.Config <IInitConfig>(); if (_isOn) { string instanceId = $"{_ethStatsConfig.Name}-{Keccak.Compute(getFromAPi.Enode!.Info)}"; if (_logger.IsInfo) { _logger.Info($"Initializing ETH Stats for the instance: {instanceId}, server: {_ethStatsConfig.Server}"); } MessageSender sender = new(instanceId, _api.LogManager); const int reconnectionInterval = 5000; const string api = "no"; const string client = "0.1.1"; const bool canUpdateHistory = false; string node = ClientVersion.Description; int port = networkConfig.P2PPort; string network = _api.SpecProvider !.ChainId.ToString(); string protocol = $"{P2PProtocolInfoProvider.DefaultCapabilitiesToString()}"; _ethStatsClient = new EthStatsClient( _ethStatsConfig.Server, reconnectionInterval, sender, _api.LogManager); _ethStatsIntegration = new EthStatsIntegration( _ethStatsConfig.Name !, node, port, network, protocol, api, client, _ethStatsConfig.Contact !, canUpdateHistory, _ethStatsConfig.Secret !, _ethStatsClient, sender, getFromAPi.TxPool, getFromAPi.BlockTree, getFromAPi.PeerManager, getFromAPi.GasPriceOracle, getFromAPi.EthSyncingInfo !, initConfig.IsMining, getFromAPi.LogManager); await _ethStatsIntegration.InitAsync(); } }
public EthStatsRunner(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 void Configure(IApplicationBuilder app, IWebHostEnvironment env, IJsonRpcProcessor jsonRpcProcessor, IJsonRpcService jsonRpcService) { _jsonSerializer = CreateJsonSerializer(); foreach (JsonConverter converter in jsonRpcService.Converters) { _jsonSerializer.RegisterConverter(converter); } if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseCors("Cors"); IConfigProvider configProvider = app.ApplicationServices.GetService <IConfigProvider>(); IInitConfig initConfig = configProvider.GetConfig <IInitConfig>(); IJsonRpcConfig jsonRpcConfig = configProvider.GetConfig <IJsonRpcConfig>(); if (initConfig.WebSocketsEnabled) { app.UseWebSockets(); app.UseWhen(ctx => ctx.WebSockets.IsWebSocketRequest && ctx.Connection.LocalPort == jsonRpcConfig.WebSocketsPort, builder => builder.UseWebSocketsModules()); } app.Use(async(ctx, next) => { if (ctx.Request.Method == "GET") { await ctx.Response.WriteAsync("Nethermind JSON RPC"); } else if (ctx.Connection.LocalPort == jsonRpcConfig.Port && ctx.Request.Method == "POST") { using StreamReader reader = new StreamReader(ctx.Request.Body, Encoding.UTF8); string request = await reader.ReadToEndAsync(); JsonRpcResult result = await jsonRpcProcessor.ProcessAsync(request); if (result.IsCollection) { _jsonSerializer.Serialize(ctx.Response.Body, result.Responses); } else { _jsonSerializer.Serialize(ctx.Response.Body, result.Response); } await ctx.Response.CompleteAsync(); } }); }
public ConfigPatcher( IInitConfig initConfig, IEnvironementDescription environmentDescription, IPatchingTemplateProvider templateProvider, JsonTransformationEngine transformationEngine, ILogMessageSink logMessageSink) { _initConfig = initConfig; _environmentDescription = environmentDescription; _templateProvider = templateProvider; _transformationEngine = transformationEngine; _logMessageSink = logMessageSink; }
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>(); _txPoolConfig = configurationProvider.GetConfig <ITxPoolConfig>(); _perfService = new PerfService(_logManager); _networkHelper = new NetworkHelper(_logger); }
public void Setup() { _ndmModule = Substitute.For <INdmModule>(); _ndmConsumersModule = Substitute.For <INdmConsumersModule>(); _configProvider = Substitute.For <IConfigProvider>(); _enableUnsecuredDevWallet = false; _ndmConfig = new NdmConfig { Enabled = true, StoreConfigInDatabase = false }; _initConfig = Substitute.For <IInitConfig>(); _configProvider.GetConfig <INdmConfig>().Returns(_ndmConfig); _ndmInitializer = new NdmInitializer(_ndmModule, _ndmConsumersModule, LimboLogs.Instance); }
public Task Execute(CancellationToken cancellationToken) { _receiptStorage = _api.ReceiptStorage ?? throw new StepDependencyException(nameof(_api.ReceiptStorage)); _blockTree = _api.BlockTree ?? throw new StepDependencyException(nameof(_api.BlockTree)); _chainLevelInfoRepository = _api.ChainLevelInfoRepository ?? throw new StepDependencyException(nameof(_api.ChainLevelInfoRepository)); IInitConfig initConfig = _api.Config <IInitConfig>(); if (initConfig.StoreReceipts) { ResetMigrationIndexIfNeeded(); } return(Task.CompletedTask); }
public Task InitRpcModules() { if (_healthChecksConfig.Enabled) { IInitConfig initConfig = _api.Config <IInitConfig>(); _nodeHealthService = new NodeHealthService(_api.SyncServer, new ReadOnlyBlockTree(_api.BlockTree), _api.BlockchainProcessor, _api.BlockProducer, _healthChecksConfig, _api.HealthHintService, initConfig.IsMining); HealthModule healthModule = new HealthModule(_nodeHealthService); _api.RpcModuleProvider !.Register(new SingletonModulePool <IHealthModule>(healthModule, true)); if (_logger.IsInfo) { _logger.Info("Health RPC Module has been enabled"); } } return(Task.CompletedTask); }
public JsonRpcRunner( IJsonRpcProcessor jsonRpcProcessor, IWebSocketsManager webSocketsManager, IConfigProvider configurationProvider, ILogManager logManager, INethermindApi api) { _jsonRpcConfig = configurationProvider.GetConfig <IJsonRpcConfig>(); _initConfig = configurationProvider.GetConfig <IInitConfig>(); _configurationProvider = configurationProvider; _logManager = logManager; _jsonRpcProcessor = jsonRpcProcessor; _webSocketsManager = webSocketsManager; _logger = logManager.GetClassLogger(); _api = api; }