Пример #1
0
 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);
 }
Пример #2
0
 public JsonRpcRunner(IConfigProvider configurationProvider, Log.ILogManager logManager)
 {
     _configurationProvider = configurationProvider.GetConfig <IJsonRpcConfig>();
     _initConfig            = configurationProvider.GetConfig <IInitConfig>();
     _logManager            = logManager;
     _logger = logManager.GetClassLogger();
 }
Пример #3
0
 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();
 }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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();
            }
        }
Пример #7
0
        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);
            }
        }
Пример #8
0
 public JsonRpcService(IJsonSerializer jsonSerializer, IModuleProvider moduleProvider, IConfigProvider configurationProvider, ILogManager logManager)
 {
     _logger         = logManager?.GetClassLogger();
     _jsonRpcConfig  = configurationProvider.GetConfig <JsonRpcConfig>();
     _jsonSerializer = jsonSerializer;
     _moduleProvider = moduleProvider;
 }
Пример #9
0
 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();
 }
Пример #10
0
 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));
 }
Пример #11
0
 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);
 }
Пример #12
0
        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;
            });
        }
Пример #13
0
 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));
 }
Пример #14
0
 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();
 }
Пример #15
0
 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);
 }
Пример #16
0
        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));
        }
Пример #17
0
        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));
        }
Пример #18
0
        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();
        }
Пример #20
0
        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);
        }
Пример #21
0
        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);
            }
        }
Пример #22
0
 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;
 }
Пример #24
0
        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();
                }
            });
        }
Пример #25
0
 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;
 }
Пример #26
0
        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)));
        }
Пример #27
0
 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;
 }
Пример #28
0
 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();
 }
Пример #29
0
 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);
        }