public JsonRpcLocalStats(ITimestamper timestamper, IJsonRpcConfig jsonRpcConfig, ILogManager logManager) { _timestamper = timestamper ?? throw new ArgumentNullException(nameof(timestamper)); _jsonRpcConfig = jsonRpcConfig ?? throw new ArgumentNullException(nameof(jsonRpcConfig)); _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _reportingInterval = TimeSpan.FromSeconds(jsonRpcConfig.ReportIntervalSeconds); }
public JsonRpcRunner(IConfigProvider configurationProvider, Log.ILogManager logManager) { _configurationProvider = configurationProvider.GetConfig <IJsonRpcConfig>(); _initConfig = configurationProvider.GetConfig <IInitConfig>(); _logManager = logManager; _logger = logManager.GetClassLogger(); }
public DebugModuleFactory( IDbProvider dbProvider, IBlockTree blockTree, IJsonRpcConfig jsonRpcConfig, IBlockValidator blockValidator, IBlockPreprocessorStep recoveryStep, IRewardCalculatorSource rewardCalculator, IReceiptStorage receiptStorage, IReceiptsMigration receiptsMigration, IConfigProvider configProvider, ISpecProvider specProvider, ILogManager logManager) { _dbProvider = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _jsonRpcConfig = jsonRpcConfig ?? throw new ArgumentNullException(nameof(jsonRpcConfig)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _recoveryStep = recoveryStep ?? throw new ArgumentNullException(nameof(recoveryStep)); _rewardCalculatorSource = rewardCalculator ?? throw new ArgumentNullException(nameof(rewardCalculator)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _receiptsMigration = receiptsMigration ?? throw new ArgumentNullException(nameof(receiptsMigration)); _configProvider = configProvider ?? throw new ArgumentNullException(nameof(configProvider)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _logger = logManager.GetClassLogger(); }
public EthModuleFactory(IDbProvider dbProvider, ITxPool txPool, IWallet wallet, IJsonRpcConfig jsonRpcConfig, IBlockTree blockTree, IEthereumEcdsa ethereumEcdsa, IBlockProcessor blockProcessor, IReceiptFinder receiptFinder, ISpecProvider specProvider, IJsonRpcConfig config, IBloomStorage bloomStorage, ILogManager logManager, bool isMining) { _dbProvider = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider)); _txPool = txPool ?? throw new ArgumentNullException(nameof(txPool)); _wallet = wallet ?? throw new ArgumentNullException(nameof(wallet)); _jsonRpcConfig = jsonRpcConfig ?? throw new ArgumentNullException(nameof(wallet)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _ethereumEcdsa = ethereumEcdsa ?? throw new ArgumentNullException(nameof(ethereumEcdsa)); _receiptFinder = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _rpcConfig = config ?? throw new ArgumentNullException(nameof(config)); _bloomStorage = bloomStorage ?? throw new ArgumentNullException(nameof(bloomStorage)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _isMining = isMining; _filterStore = new FilterStore(); _filterManager = new FilterManager(_filterStore, blockProcessor, _txPool, _logManager); }
public JsonRpcProcessor(IJsonRpcService jsonRpcService, IJsonSerializer jsonSerializer, IJsonRpcConfig jsonRpcConfig, IFileSystem fileSystem, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); if (fileSystem == null) { throw new ArgumentNullException(nameof(fileSystem)); } _jsonRpcConfig = jsonRpcConfig ?? throw new ArgumentNullException(nameof(jsonRpcConfig)); _jsonRpcService = jsonRpcService ?? throw new ArgumentNullException(nameof(jsonRpcService)); _jsonSerializer = jsonSerializer ?? throw new ArgumentNullException(nameof(jsonSerializer)); if (_jsonRpcConfig.RpcRecorderEnabled) { if (_logger.IsWarn) { _logger.Warn("Enabling JSON RPC diagnostics recorder - this will affect performance and should be only used in a diagnostics mode."); } string recorderBaseFilePath = _jsonRpcConfig.RpcRecorderBaseFilePath.GetApplicationResourcePath(); _recorder = new Recorder(recorderBaseFilePath, fileSystem, _logger); } BuildTraceJsonSerializer(); _localStats = new JsonRpcLocalStats(Timestamper.Default, jsonRpcConfig, logManager); }
private void EnsureJsonRpcUrl() { IJsonRpcConfig jsonRpcConfig = _api.Config <IJsonRpcConfig>(); if (!jsonRpcConfig.Enabled) { if (_logger.IsInfo) { _logger.Info("JsonRpc not enabled. Turning on JsonRpc URL with engine API."); } jsonRpcConfig.Enabled = true; EnsureEngineModuleIsConfigured(); if (!jsonRpcConfig.EnabledModules.Contains("engine")) { // Disable it jsonRpcConfig.EnabledModules = new string[] { }; } jsonRpcConfig.AdditionalRpcUrls = jsonRpcConfig.AdditionalRpcUrls .Where((url) => JsonRpcUrl.Parse(url).EnabledModules.Contains("engine")) .ToArray(); } else { EnsureEngineModuleIsConfigured(); } }
public JsonRpcService(IRpcModuleProvider rpcModuleProvider, IConfigProvider configurationProvider, ILogManager logManager) { _logger = logManager.GetClassLogger(); _jsonRpcConfig = configurationProvider.GetConfig <IJsonRpcConfig>(); _rpcModuleProvider = rpcModuleProvider; _serializer = new JsonSerializer(); foreach (ModuleInfo module in _rpcModuleProvider.GetEnabledModules()) { foreach (JsonConverter converter in module.Converters) { if (_logger.IsDebug) { _logger.Debug($"Registering {converter.GetType().Name}"); } _serializer.Converters.Add(converter); _converterLookup.Add(converter.GetType().BaseType.GenericTypeArguments[0], converter); } } foreach (JsonConverter converter in GetStandardConverters()) { if (_logger.IsDebug) { _logger.Debug($"Registering {converter.GetType().Name}"); } _serializer.Converters.Add(converter); _converterLookup.Add(converter.GetType().BaseType.GenericTypeArguments[0], converter); } }
public JsonRpcService(IJsonSerializer jsonSerializer, IModuleProvider moduleProvider, IConfigProvider configurationProvider, ILogManager logManager) { _logger = logManager?.GetClassLogger(); _jsonRpcConfig = configurationProvider.GetConfig <JsonRpcConfig>(); _jsonSerializer = jsonSerializer; _moduleProvider = moduleProvider; }
public EthModuleFactory( ITxPool txPool, ITxSender txSender, IWallet wallet, IBlockTree blockTree, IJsonRpcConfig config, ILogManager logManager, IStateReader stateReader, IBlockchainBridgeFactory blockchainBridgeFactory, ISpecProvider specProvider, IReceiptStorage receiptStorage, IGasPriceOracle gasPriceOracle, IEthSyncingInfo ethSyncingInfo) { _txPool = txPool ?? throw new ArgumentNullException(nameof(txPool)); _txSender = txSender ?? throw new ArgumentNullException(nameof(txSender)); _wallet = wallet ?? throw new ArgumentNullException(nameof(wallet)); _rpcConfig = config ?? throw new ArgumentNullException(nameof(config)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _blockchainBridgeFactory = blockchainBridgeFactory ?? throw new ArgumentNullException(nameof(blockchainBridgeFactory)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _ethSyncingInfo = ethSyncingInfo ?? throw new ArgumentNullException(nameof(ethSyncingInfo)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _gasPriceOracle = gasPriceOracle ?? throw new ArgumentNullException(nameof(gasPriceOracle)); _blockTree = blockTree.AsReadOnly(); }
public EthRpcModule( IJsonRpcConfig rpcConfig, IBlockchainBridge blockchainBridge, IBlockFinder blockFinder, IStateReader stateReader, ITxPool txPool, ITxSender txSender, IWallet wallet, IReceiptFinder receiptFinder, ILogManager logManager, ISpecProvider specProvider, IGasPriceOracle gasPriceOracle, IEthSyncingInfo ethSyncingInfo, IFeeHistoryOracle feeHistoryOracle) { _logger = logManager.GetClassLogger(); _rpcConfig = rpcConfig ?? throw new ArgumentNullException(nameof(rpcConfig)); _blockchainBridge = blockchainBridge ?? throw new ArgumentNullException(nameof(blockchainBridge)); _blockFinder = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _txPoolBridge = txPool ?? throw new ArgumentNullException(nameof(txPool)); _txSender = txSender ?? throw new ArgumentNullException(nameof(txSender)); _wallet = wallet ?? throw new ArgumentNullException(nameof(wallet)); _receiptFinder = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder));; _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _gasPriceOracle = gasPriceOracle ?? throw new ArgumentNullException(nameof(gasPriceOracle)); _ethSyncingInfo = ethSyncingInfo ?? throw new ArgumentNullException(nameof(ethSyncingInfo)); _feeHistoryOracle = feeHistoryOracle ?? throw new ArgumentNullException(nameof(feeHistoryOracle)); }
public DebugRpcModule(ILogManager logManager, IDebugBridge debugBridge, IJsonRpcConfig jsonRpcConfig) { _debugBridge = debugBridge ?? throw new ArgumentNullException(nameof(debugBridge)); _jsonRpcConfig = jsonRpcConfig ?? throw new ArgumentNullException(nameof(jsonRpcConfig)); _logger = logManager.GetClassLogger(); _traceTimeout = TimeSpan.FromMilliseconds(_jsonRpcConfig.Timeout); }
public void ConfigureServices(IServiceCollection services) { ServiceProvider sp = Build(services); IConfigProvider?configProvider = sp.GetService <IConfigProvider>(); if (configProvider == null) { throw new ApplicationException($"{nameof(IConfigProvider)} could not be resolved"); } IJsonRpcConfig jsonRpcConfig = configProvider.GetConfig <IJsonRpcConfig>(); services.Configure <KestrelServerOptions>(options => { options.AllowSynchronousIO = true; options.Limits.MaxRequestBodySize = jsonRpcConfig.MaxRequestBodySize; options.ConfigureHttpsDefaults(co => co.SslProtocols |= SslProtocols.Tls13); }); Bootstrap.Instance.RegisterJsonRpcServices(services); services.AddControllers(); string corsOrigins = Environment.GetEnvironmentVariable("NETHERMIND_CORS_ORIGINS") ?? "*"; services.AddCors(c => c.AddPolicy("Cors", p => p.AllowAnyMethod().AllowAnyHeader().WithOrigins(corsOrigins))); services.AddResponseCompression(options => { options.Providers.Add <BrotliCompressionProvider>(); options.Providers.Add <GzipCompressionProvider>(); options.MimeTypes = ResponseCompressionDefaults.MimeTypes; options.EnableForHttps = true; }); }
public EthModule(IJsonRpcConfig rpcConfig, IBlockchainBridge blockchainBridge, ITxPoolBridge txPoolBridge, ILogManager logManager) { _logger = logManager.GetClassLogger(); _rpcConfig = rpcConfig ?? throw new ArgumentNullException(nameof(rpcConfig)); _blockchainBridge = blockchainBridge ?? throw new ArgumentNullException(nameof(blockchainBridge)); _txPoolBridge = txPoolBridge ?? throw new ArgumentNullException(nameof(txPoolBridge)); }
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 TraceModule(IReceiptFinder receiptFinder, ITracer tracer, IBlockFinder blockFinder, IJsonRpcConfig jsonRpcConfig) { _receiptFinder = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder)); _tracer = tracer ?? throw new ArgumentNullException(nameof(tracer)); _blockFinder = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder)); _jsonRpcConfig = jsonRpcConfig ?? throw new ArgumentNullException(nameof(jsonRpcConfig)); _cancellationTokenTimeout = TimeSpan.FromMilliseconds(_jsonRpcConfig.TracerTimeout); }
public void Json_default_are_correct(string configFile) { ConfigProvider configProvider = GetConfigProviderFromFile(configFile); IJsonRpcConfig jsonRpcConfig = configProvider.GetConfig <IJsonRpcConfig>(); Assert.AreEqual(8545, jsonRpcConfig.Port, nameof(jsonRpcConfig.Port)); Assert.AreEqual("127.0.0.1", jsonRpcConfig.Host, nameof(jsonRpcConfig.Host)); Assert.AreEqual(false, jsonRpcConfig.Enabled, nameof(jsonRpcConfig.Enabled)); }
private void RegisterJsonRpcModules() { IJsonRpcConfig jsonRpcConfig = _configProvider.GetConfig <IJsonRpcConfig>(); if (!jsonRpcConfig.Enabled) { return; } // the following line needs to be called in order to make sure that the CLI library is referenced from runner and built alongside if (_logger.IsDebug) { _logger.Debug($"Resolving CLI ({nameof(Cli.CliModuleLoader)})"); } EthModuleFactory ethModuleFactory = new EthModuleFactory(_dbProvider, _txPool, _wallet, _blockTree, _ethereumEcdsa, _blockProcessor, _receiptStorage, _specProvider, _logManager); _rpcModuleProvider.Register(new BoundedModulePool <IEthModule>(8, ethModuleFactory)); DebugModuleFactory debugModuleFactory = new DebugModuleFactory(_dbProvider, _blockTree, _blockValidator, _recoveryStep, _rewardCalculator, _receiptStorage, _configProvider, _specProvider, _logManager); _rpcModuleProvider.Register(new BoundedModulePool <IDebugModule>(8, debugModuleFactory)); TraceModuleFactory traceModuleFactory = new TraceModuleFactory(_dbProvider, _txPool, _blockTree, _blockValidator, _ethereumEcdsa, _recoveryStep, _rewardCalculator, _receiptStorage, _specProvider, _logManager); _rpcModuleProvider.Register(new BoundedModulePool <ITraceModule>(8, traceModuleFactory)); if (_sealValidator is CliqueSealValidator) { CliqueModule cliqueModule = new CliqueModule(_logManager, new CliqueBridge(_blockProducer as ICliqueBlockProducer, _snapshotManager, _blockTree)); _rpcModuleProvider.Register(new SingletonModulePool <ICliqueModule>(cliqueModule)); } if (_initConfig.EnableUnsecuredDevWallet) { PersonalBridge personalBridge = new PersonalBridge(_ethereumEcdsa, _wallet); PersonalModule personalModule = new PersonalModule(personalBridge, _logManager); _rpcModuleProvider.Register(new SingletonModulePool <IPersonalModule>(personalModule)); } AdminModule adminModule = new AdminModule(_logManager, _peerManager, _staticNodesManager); _rpcModuleProvider.Register(new SingletonModulePool <IAdminModule>(adminModule)); TxPoolModule txPoolModule = new TxPoolModule(_logManager, _txPoolInfoProvider); _rpcModuleProvider.Register(new SingletonModulePool <ITxPoolModule>(txPoolModule)); NetModule netModule = new NetModule(_logManager, new NetBridge(_enode, _syncServer, _peerManager)); _rpcModuleProvider.Register(new SingletonModulePool <INetModule>(netModule)); ParityModule parityModule = new ParityModule(_ethereumEcdsa, _txPool, _logManager); _rpcModuleProvider.Register(new SingletonModulePool <IParityModule>(parityModule)); }
public Task Init(INethermindApi api) { _api = api; _healthChecksConfig = _api.Config <IHealthChecksConfig>(); _jsonRpcConfig = _api.Config <IJsonRpcConfig>(); _logger = api.LogManager.GetClassLogger(); return(Task.CompletedTask); }
public static void EnableModules(this IJsonRpcConfig config, params string[] modules) { HashSet <string> enabledModules = config.EnabledModules.ToHashSet(); for (int i = 0; i < modules.Length; i++) { enabledModules.Add(modules[i]); } config.EnabledModules = enabledModules.ToArray(); }
public Task InitRpcModules() { ThrowIfNotInitialized(); (IApiWithNetwork getFromApi, _) = _nethermindApi !.ForRpc; IJsonRpcConfig rpcConfig = getFromApi.Config <IJsonRpcConfig>(); MevModuleFactory mevModuleFactory = new(_mevConfig !, rpcConfig); getFromApi.RpcModuleProvider !.RegisterBoundedByCpuCount(mevModuleFactory, rpcConfig.Timeout); return(Task.CompletedTask); }
public JsonRpcUrlCollection(ILogManager logManager, IJsonRpcConfig jsonRpcConfig, bool includeWebSockets) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _jsonRpcConfig = jsonRpcConfig ?? throw new ArgumentNullException(nameof(jsonRpcConfig)); if (_jsonRpcConfig.Enabled) { BuildUrls(includeWebSockets); } }
public JsonRpcRunner(IConfigProvider configurationProvider, IRpcModuleProvider moduleProvider, ILogManager logManager, IJsonRpcProcessor jsonRpcProcessor, IWebSocketsManager webSocketsManager) { _jsonRpcConfig = configurationProvider.GetConfig <IJsonRpcConfig>(); _configurationProvider = configurationProvider; _moduleProvider = moduleProvider ?? throw new ArgumentNullException(nameof(moduleProvider)); _logManager = logManager; _jsonRpcProcessor = jsonRpcProcessor; _webSocketsManager = webSocketsManager; _logger = logManager.GetClassLogger(); }
public MulticallModuleFactory(IDbProvider dbProvider, IBlockTree blockTree, IJsonRpcConfig jsonRpcConfig, IReadOnlyTrieStore trieNodeResolver, IBlockPreprocessorStep recoveryStep, IRewardCalculatorSource rewardCalculatorSource, IReceiptStorage receiptFinder, ISpecProvider specProvider, ILogManager logManager) { this.dbProvider = dbProvider.AsReadOnly(false); this.blockTree = blockTree.AsReadOnly(); this.jsonRpcConfig = jsonRpcConfig; this.trieNodeResolver = trieNodeResolver; this.recoveryStep = recoveryStep; this.rewardCalculatorSource = rewardCalculatorSource; this.receiptFinder = receiptFinder; this.specProvider = specProvider; this.logManager = logManager; }
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 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; }
public void ConfigureServices(IServiceCollection services) { var sp = services.BuildServiceProvider(); IConfigProvider configProvider = sp.GetService <IConfigProvider>(); IJsonRpcConfig jsonRpcConfig = configProvider.GetConfig <IJsonRpcConfig>(); services.Configure <KestrelServerOptions>(options => { options.AllowSynchronousIO = true; options.Limits.MaxRequestBodySize = jsonRpcConfig.MaxRequestBodySize; }); Bootstrap.Instance.RegisterJsonRpcServices(services); services.AddControllers(); string corsOrigins = Environment.GetEnvironmentVariable("NETHERMIND_CORS_ORIGINS") ?? "*"; services.AddCors(c => c.AddPolicy("Cors", p => p.AllowAnyMethod().AllowAnyHeader().WithOrigins(corsOrigins))); }
public MevRpcModule( IJsonRpcConfig jsonRpcConfig, IBundlePool bundlePool, IBlockFinder blockFinder, IStateReader stateReader, ITracerFactory tracerFactory, ISpecProvider specProvider, ISigner?signer) { _jsonRpcConfig = jsonRpcConfig; _bundlePool = bundlePool; _blockFinder = blockFinder; _stateReader = stateReader; _tracerFactory = tracerFactory; _specProvider = specProvider; _signer = signer; }
public EthModuleFactory( ITxPool txPool, ITxSender txSender, IWallet wallet, IBlockTree blockTree, IJsonRpcConfig config, ILogManager logManager, IStateReader stateReader, IBlockchainBridgeFactory blockchainBridgeFactory) { _txPool = txPool ?? throw new ArgumentNullException(nameof(txPool)); _txSender = txSender ?? throw new ArgumentNullException(nameof(txSender)); _wallet = wallet ?? throw new ArgumentNullException(nameof(wallet)); _rpcConfig = config ?? throw new ArgumentNullException(nameof(config)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _blockchainBridgeFactory = blockchainBridgeFactory ?? throw new ArgumentNullException(nameof(blockchainBridgeFactory)); _blockTree = blockTree.AsReadOnly(); }
public EthModule( IJsonRpcConfig rpcConfig, IBlockchainBridge blockchainBridge, IBlockFinder blockFinder, IStateReader stateReader, ITxPool _txPool, ITxSender txSender, IWallet wallet, ILogManager logManager) { _logger = logManager.GetClassLogger(); _rpcConfig = rpcConfig ?? throw new ArgumentNullException(nameof(rpcConfig)); _blockchainBridge = blockchainBridge ?? throw new ArgumentNullException(nameof(blockchainBridge)); _blockFinder = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _txPoolBridge = _txPool ?? throw new ArgumentNullException(nameof(_txPool)); _txSender = txSender ?? throw new ArgumentNullException(nameof(txSender)); _wallet = wallet ?? throw new ArgumentNullException(nameof(wallet)); }
public Task InitRpcModules() { if (_accountAbstractionConfig.Enabled) { (IApiWithNetwork getFromApi, _) = _nethermindApi !.ForRpc; IJsonRpcConfig rpcConfig = getFromApi.Config <IJsonRpcConfig>(); rpcConfig.EnableModules(ModuleType.AccountAbstraction); AccountAbstractionModuleFactory accountAbstractionModuleFactory = new(UserOperationPool, new[] { _entryPointContractAddress }); getFromApi.RpcModuleProvider !.RegisterBoundedByCpuCount(accountAbstractionModuleFactory, rpcConfig.Timeout); if (BundleMiningEnabled && MevPluginEnabled) { if (_logger !.IsInfo) { _logger.Info("Both AA and MEV Plugins enabled, sending user operations to mev bundle pool instead"); } _bundler = new MevBundler( new OnNewBlockBundleTrigger(_nethermindApi.BlockTree !, _logger), UserOperationTxSource, MevPlugin.BundlePool, _logger ); } if (_logger !.IsInfo) { _logger.Info("Account Abstraction RPC plugin enabled"); } } else { if (_logger !.IsWarn) { _logger.Info("Skipping Account Abstraction RPC plugin"); } } return(Task.CompletedTask); }