Beispiel #1
0
 public void Setup()
 {
     _configProvider            = Substitute.For <IConfigProvider>();
     _configManager             = Substitute.For <IConfigManager>();
     _ndmConfig                 = new NdmConfig();
     _baseDbPath                = "db";
     _rocksProvider             = Substitute.For <IDbProvider>();
     _mongoProvider             = Substitute.For <IMongoProvider>();
     _logManager                = Substitute.For <ILogManager>();
     _blockTree                 = Substitute.For <IBlockTree>();
     _specProvider              = Substitute.For <ISpecProvider>();
     _transactionPool           = Substitute.For <ITxPool>();
     _receiptStorage            = Substitute.For <IReceiptStorage>();
     _filterStore               = Substitute.For <IFilterStore>();
     _filterManager             = Substitute.For <IFilterManager>();
     _wallet                    = Substitute.For <IWallet>();
     _timestamper               = Substitute.For <ITimestamper>();
     _ecdsa                     = Substitute.For <IEthereumEcdsa>();
     _keyStore                  = Substitute.For <IKeyStore>();
     _rpcModuleProvider         = Substitute.For <IRpcModuleProvider>();
     _jsonSerializer            = Substitute.For <IJsonSerializer>();
     _cryptoRandom              = Substitute.For <ICryptoRandom>();
     _enode                     = Substitute.For <IEnode>();
     _ndmConsumerChannelManager = Substitute.For <INdmConsumerChannelManager>();
     _ndmDataPublisher          = Substitute.For <INdmDataPublisher>();
     _grpcServer                = Substitute.For <IGrpcServer>();
     _ethRequestService         = Substitute.For <IEthRequestService>();
     _notifier                  = Substitute.For <INdmNotifier>();
     _enableUnsecuredDevWallet  = false;
     _blockProcessor            = Substitute.For <IBlockProcessor>();
     _ndmModule                 = new NdmModule();
 }
Beispiel #2
0
        private void GenerateNodeKey()
        {
// this is not secure at all but this is just the node key, nothing critical so far, will use the key store here later and allow to manage by password when launching the node
            if (_initConfig.TestNodeKey == null)
            {
                if (!File.Exists(UnsecuredNodeKeyFilePath))
                {
                    if (_logger.IsInfo)
                    {
                        _logger.Info("Generating private key for the node (no node key in configuration)");
                    }
                    _nodeKey = new PrivateKeyGenerator(_cryptoRandom).Generate();
                    File.WriteAllBytes(UnsecuredNodeKeyFilePath, _nodeKey.KeyBytes);
                }
                else
                {
                    _nodeKey = new PrivateKey(File.ReadAllBytes(UnsecuredNodeKeyFilePath));
                }
            }
            else
            {
                _nodeKey = new PrivateKey(_initConfig.TestNodeKey);
            }

            var ipVariable = Environment.GetEnvironmentVariable("NETHERMIND_ENODE_IPADDRESS");
            var localIp    = string.IsNullOrWhiteSpace(ipVariable)
                ? _networkHelper.GetLocalIp()
                : IPAddress.Parse(ipVariable);

            _enode = new Enode(_nodeKey, localIp, _initConfig.P2PPort);
        }
Beispiel #3
0
        public virtual async Task<INdmCapabilityConnector> InitAsync(IConfigProvider configProvider,
            IDbProvider dbProvider, string baseDbPath, IBlockTree blockTree,
            ITxPool txPool, ISpecProvider specProvider, IReceiptStorage receiptStorage, IWallet wallet,
            IFilterStore filterStore, IFilterManager filterManager,
            ITimestamper timestamper, IEthereumEcdsa ecdsa, IRpcModuleProvider rpcModuleProvider, IKeyStore keyStore,
            IJsonSerializer jsonSerializer, ICryptoRandom cryptoRandom, IEnode enode,
            INdmConsumerChannelManager consumerChannelManager, INdmDataPublisher dataPublisher, IGrpcServer grpcServer,
            INodeStatsManager nodeStatsManager, IProtocolsManager protocolsManager,
            IProtocolValidator protocolValidator, IMessageSerializationService messageSerializationService,
            bool enableUnsecuredDevWallet, IWebSocketsManager webSocketsManager, ILogManager logManager,
            IBlockProcessor blockProcessor)
        {
            var (config, services, faucet, accountService, consumerService, consumerAddress, providerAddress) =
                await PreInitAsync(configProvider, dbProvider, baseDbPath, blockTree, txPool, specProvider,
                    receiptStorage, wallet, filterStore, filterManager, timestamper, ecdsa, rpcModuleProvider, keyStore,
                    jsonSerializer, cryptoRandom, enode, consumerChannelManager, dataPublisher, grpcServer,
                    enableUnsecuredDevWallet, webSocketsManager, logManager, blockProcessor);
            if (!config.Enabled)
            {
                return default;
            }

            var subprotocolFactory = new NdmSubprotocolFactory(messageSerializationService, nodeStatsManager,
                logManager, accountService, consumerService, consumerChannelManager, ecdsa, wallet, faucet,
                enode.PublicKey, providerAddress, consumerAddress, config.VerifyP2PSignature);
            var protocolHandlerFactory = new ProtocolHandlerFactory(subprotocolFactory, protocolValidator,
                services.RequiredServices.EthRequestService, logManager);
            var capabilityConnector = new NdmCapabilityConnector(protocolsManager, protocolHandlerFactory,
                accountService, logManager);

            return capabilityConnector;
        }
Beispiel #4
0
        public AdminModule(IBlockTree blockTree, INetworkConfig networkConfig, IPeerManager peerManager, IStaticNodesManager staticNodesManager, IEnode enode, string dataDir)
        {
            _blockTree          = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
            _networkConfig      = networkConfig ?? throw new ArgumentNullException(nameof(networkConfig));
            _peerManager        = peerManager ?? throw new ArgumentNullException(nameof(peerManager));
            _staticNodesManager = staticNodesManager ?? throw new ArgumentNullException(nameof(staticNodesManager));
            _enode   = enode ?? throw new ArgumentNullException(nameof(enode));
            _dataDir = dataDir ?? throw new ArgumentNullException(nameof(dataDir));

            BuildNodeInfo();
        }
Beispiel #5
0
 public ParityModule(
     IEcdsa ecdsa,
     ITxPool txPool,
     IBlockFinder blockFinder,
     IReceiptFinder receiptFinder,
     IEnode enode,
     ISignerStore signerStore,
     IKeyStore keyStore,
     ILogManager logManager)
 {
     _ecdsa         = ecdsa ?? throw new ArgumentNullException(nameof(ecdsa));
     _txPool        = txPool ?? throw new ArgumentNullException(nameof(txPool));
     _blockFinder   = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder));
     _receiptFinder = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder));
     _enode         = enode ?? throw new ArgumentNullException(nameof(enode));
     _signerStore   = signerStore ?? throw new ArgumentNullException(nameof(signerStore));
     _keyStore      = keyStore ?? throw new ArgumentNullException(nameof(keyStore));
 }
Beispiel #6
0
        private void SetupKeyStore()
        {
            var encrypter = new AesEncrypter(
                _configProvider.GetConfig <IKeyStoreConfig>(),
                _logManager);

            _keyStore = new FileKeyStore(
                _configProvider.GetConfig <IKeyStoreConfig>(),
                _ethereumJsonSerializer,
                encrypter,
                _cryptoRandom,
                _logManager);

            switch (_initConfig)
            {
            case var _ when HiveEnabled:
                // todo: use the keystore wallet here
                _wallet = new HiveWallet();
                break;

            case var config when config.EnableUnsecuredDevWallet && config.KeepDevWalletInMemory:
                _wallet = new DevWallet(_configProvider.GetConfig <IWalletConfig>(), _logManager);
                break;

            case var config when config.EnableUnsecuredDevWallet && !config.KeepDevWalletInMemory:
                _wallet = new DevKeyStoreWallet(_keyStore, _logManager);
                break;

            default:
                _wallet = new NullWallet();
                break;
            }

            INodeKeyManager nodeKeyManager = new NodeKeyManager(_cryptoRandom, _keyStore, _configProvider.GetConfig <IKeyStoreConfig>(), _logManager);

            _nodeKey = nodeKeyManager.LoadNodeKey();

            var ipVariable = Environment.GetEnvironmentVariable("NETHERMIND_ENODE_IPADDRESS");
            var localIp    = string.IsNullOrWhiteSpace(ipVariable)
                ? _networkHelper.GetLocalIp()
                : IPAddress.Parse(ipVariable);

            _enode = new Enode(_nodeKey.PublicKey, localIp, _initConfig.P2PPort);
        }
Beispiel #7
0
 public NdmRequiredServices(IConfigProvider configProvider, IConfigManager configManager, INdmConfig ndmConfig,
                            string baseDbPath, IDbProvider rocksProvider, IMongoProvider mongoProvider, ILogManager logManager,
                            IBlockTree blockTree, ITxPool transactionPool, ISpecProvider specProvider, IReceiptStorage receiptStorage,
                            IFilterStore filterStore, IFilterManager filterManager, IWallet wallet, ITimestamper timestamper,
                            IEthereumEcdsa ecdsa, IKeyStore keyStore, IRpcModuleProvider rpcModuleProvider,
                            IJsonSerializer jsonSerializer, ICryptoRandom cryptoRandom, IEnode enode,
                            INdmConsumerChannelManager ndmConsumerChannelManager, INdmDataPublisher ndmDataPublisher,
                            IGrpcServer grpcServer, IEthRequestService ethRequestService, INdmNotifier notifier,
                            bool enableUnsecuredDevWallet, IBlockProcessor blockProcessor, IJsonRpcClientProxy jsonRpcClientProxy,
                            IEthJsonRpcClientProxy ethJsonRpcClientProxy, IHttpClient httpClient, IMonitoringService monitoringService)
 {
     ConfigProvider            = configProvider;
     ConfigManager             = configManager;
     NdmConfig                 = ndmConfig;
     BaseDbPath                = baseDbPath;
     RocksProvider             = rocksProvider;
     MongoProvider             = mongoProvider;
     LogManager                = logManager;
     BlockTree                 = blockTree;
     TransactionPool           = transactionPool;
     SpecProvider              = specProvider;
     ReceiptStorage            = receiptStorage;
     FilterStore               = filterStore;
     FilterManager             = filterManager;
     Wallet                    = wallet;
     Timestamper               = timestamper;
     Ecdsa                     = ecdsa;
     KeyStore                  = keyStore;
     RpcModuleProvider         = rpcModuleProvider;
     JsonSerializer            = jsonSerializer;
     CryptoRandom              = cryptoRandom;
     Enode                     = enode;
     NdmConsumerChannelManager = ndmConsumerChannelManager;
     NdmDataPublisher          = ndmDataPublisher;
     GrpcServer                = grpcServer;
     EthRequestService         = ethRequestService;
     Notifier                  = notifier;
     EnableUnsecuredDevWallet  = enableUnsecuredDevWallet;
     BlockProcessor            = blockProcessor;
     JsonRpcClientProxy        = jsonRpcClientProxy;
     EthJsonRpcClientProxy     = ethJsonRpcClientProxy;
     HttpClient                = httpClient;
     MonitoringService         = monitoringService;
 }
 public void Setup()
 {
     _ndmModule          = Substitute.For <INdmModule>();
     _ndmConsumersModule = Substitute.For <INdmConsumersModule>();
     _configProvider     = Substitute.For <IConfigProvider>();
     _dbProvider         = Substitute.For <IDbProvider>();
     _blockTree          = Substitute.For <IBlockTree>();
     _txPool             = Substitute.For <ITxPool>();
     _txSender           = Substitute.For <ITxSender>();
     _specProvider       = Substitute.For <ISpecProvider>();
     _receiptFinder      = Substitute.For <IReceiptFinder>();
     _wallet             = Substitute.For <IWallet>();
     _filterStore        = Substitute.For <IFilterStore>();
     _filterManager      = Substitute.For <IFilterManager>();
     _timestamper        = Substitute.For <ITimestamper>();
     _ecdsa                       = Substitute.For <IEthereumEcdsa>();
     _rpcModuleProvider           = Substitute.For <IRpcModuleProvider>();
     _keyStore                    = Substitute.For <IKeyStore>();
     _jsonSerializer              = Substitute.For <IJsonSerializer>();
     _cryptoRandom                = Substitute.For <ICryptoRandom>();
     _enode                       = Substitute.For <IEnode>();
     _consumerChannelManager      = Substitute.For <INdmConsumerChannelManager>();
     _dataPublisher               = Substitute.For <INdmDataPublisher>();
     _grpcServer                  = Substitute.For <IGrpcServer>();
     _nodeStatsManager            = Substitute.For <INodeStatsManager>();
     _protocolsManager            = Substitute.For <IProtocolsManager>();
     _protocolValidator           = Substitute.For <IProtocolValidator>();
     _messageSerializationService = Substitute.For <IMessageSerializationService>();
     _webSocketsManager           = Substitute.For <IWebSocketsManager>();
     _logManager                  = LimboLogs.Instance;
     _blockProcessor              = Substitute.For <IBlockProcessor>();
     _jsonRpcClientProxy          = Substitute.For <IJsonRpcClientProxy>();
     _ethJsonRpcClientProxy       = Substitute.For <IEthJsonRpcClientProxy>();
     _httpClient                  = Substitute.For <IHttpClient>();
     _monitoringService           = Substitute.For <IMonitoringService>();
     _enableUnsecuredDevWallet    = false;
     _ndmConfig                   = new NdmConfig {
         Enabled = true, StoreConfigInDatabase = false
     };
     _configProvider.GetConfig <INdmConfig>().Returns(_ndmConfig);
     _ndmInitializer = new NdmInitializer(_ndmModule, _ndmConsumersModule, _logManager);
     _bloomStorage   = Substitute.For <IBloomStorage>();
 }
Beispiel #9
0
        public AdminRpcModule(
            IBlockTree blockTree,
            INetworkConfig networkConfig,
            IPeerPool peerPool,
            IStaticNodesManager staticNodesManager,
            IEnode enode,
            string dataDir,
            ManualPruningTrigger pruningTrigger)
        {
            _enode              = enode ?? throw new ArgumentNullException(nameof(enode));
            _dataDir            = dataDir ?? throw new ArgumentNullException(nameof(dataDir));
            _blockTree          = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
            _peerPool           = peerPool ?? throw new ArgumentNullException(nameof(peerPool));
            _networkConfig      = networkConfig ?? throw new ArgumentNullException(nameof(networkConfig));
            _staticNodesManager = staticNodesManager ?? throw new ArgumentNullException(nameof(staticNodesManager));
            _pruningTrigger     = pruningTrigger;

            BuildNodeInfo();
        }
Beispiel #10
0
        public async Task Execute(CancellationToken cancellationToken)
        {
            (IApiWithStores get, IApiWithBlockchain set) = _api.ForInit;
            // why is the await Task.Run here?
            await Task.Run(() =>
            {
                IKeyStoreConfig keyStoreConfig = get.Config <IKeyStoreConfig>();
                INetworkConfig networkConfig   = get.Config <INetworkConfig>();

                AesEncrypter encrypter = new(keyStoreConfig, get.LogManager);

                IKeyStore?keyStore = set.KeyStore = new FileKeyStore(
                    keyStoreConfig,
                    get.EthereumJsonSerializer,
                    encrypter,
                    get.CryptoRandom,
                    get.LogManager,
                    new PrivateKeyStoreIOSettingsProvider(keyStoreConfig));

                set.Wallet = get.Config <IInitConfig>() switch
                {
                    var config when config.EnableUnsecuredDevWallet&& config.KeepDevWalletInMemory => new DevWallet(get.Config <IWalletConfig>(), get.LogManager),
                    var config when config.EnableUnsecuredDevWallet&& !config.KeepDevWalletInMemory => new DevKeyStoreWallet(get.KeyStore, get.LogManager),
                    _ => new ProtectedKeyStoreWallet(keyStore, new ProtectedPrivateKeyFactory(get.CryptoRandom, get.Timestamper), get.Timestamper, get.LogManager),
                };

                new AccountUnlocker(keyStoreConfig, get.Wallet, get.LogManager, new KeyStorePasswordProvider(keyStoreConfig))
                .UnlockAccounts();

                BasePasswordProvider passwordProvider = new KeyStorePasswordProvider(keyStoreConfig)
                                                        .OrReadFromConsole($"Provide password for validator account { keyStoreConfig.BlockAuthorAccount}");

                INodeKeyManager nodeKeyManager = new NodeKeyManager(get.CryptoRandom, get.KeyStore, keyStoreConfig, get.LogManager, passwordProvider, get.FileSystem);
                ProtectedPrivateKey?nodeKey    = set.NodeKey = nodeKeyManager.LoadNodeKey();

                set.OriginalSignerKey = nodeKeyManager.LoadSignerKey();
                IPAddress ipAddress   = networkConfig.ExternalIp is not null ? IPAddress.Parse(networkConfig.ExternalIp) : IPAddress.Loopback;
                IEnode enode          = set.Enode = new Enode(nodeKey.PublicKey, ipAddress, networkConfig.P2PPort);

                get.LogManager.SetGlobalVariable("enode", enode.ToString());
            }, cancellationToken);
        }
Beispiel #11
0
        private void SetupKeyStore()
        {
            var encrypter = new AesEncrypter(
                _configProvider.GetConfig <IKeyStoreConfig>(),
                _logManager);

            _keyStore = new FileKeyStore(
                _configProvider.GetConfig <IKeyStoreConfig>(),
                _ethereumJsonSerializer,
                encrypter,
                _cryptoRandom,
                _logManager);

            switch (_initConfig)
            {
            case var _ when HiveEnabled:
                // todo: use the keystore wallet here
                _wallet = new HiveWallet();
                break;

            case var config when config.EnableUnsecuredDevWallet && config.KeepDevWalletInMemory:
                _wallet = new DevWallet(_configProvider.GetConfig <IWalletConfig>(), _logManager);
                break;

            case var config when config.EnableUnsecuredDevWallet && !config.KeepDevWalletInMemory:
                _wallet = new DevKeyStoreWallet(_keyStore, _logManager);
                break;

            default:
                _wallet = new NullWallet();
                break;
            }

            INodeKeyManager nodeKeyManager = new NodeKeyManager(_cryptoRandom, _keyStore, _configProvider.GetConfig <IKeyStoreConfig>(), _logManager);

            _nodeKey = nodeKeyManager.LoadNodeKey();
            _enode   = new Enode(_nodeKey.PublicKey, IPAddress.Parse(_networkConfig.ExternalIp), _networkConfig.P2PPort);
        }
Beispiel #12
0
        PreInitAsync(
            IConfigProvider configProvider,
            IDbProvider dbProvider,
            string baseDbPath,
            IBlockTree blockTree,
            ITxPool txPool,
            ITxSender txSender,
            ISpecProvider specProvider,
            IReceiptFinder receiptFinder,
            IWallet wallet,
            IFilterStore filterStore,
            IFilterManager filterManager,
            ITimestamper timestamper,
            IEthereumEcdsa ecdsa,
            IRpcModuleProvider rpcModuleProvider,
            IKeyStore keyStore,
            IJsonSerializer jsonSerializer,
            ICryptoRandom cryptoRandom,
            IEnode enode,
            INdmConsumerChannelManager consumerChannelManager,
            INdmDataPublisher dataPublisher,
            IGrpcServer grpcServer,
            bool enableUnsecuredDevWallet,
            IWebSocketsManager webSocketsManager,
            ILogManager logManager,
            IBlockProcessor blockProcessor,
            IJsonRpcClientProxy?jsonRpcClientProxy,
            IEthJsonRpcClientProxy?ethJsonRpcClientProxy,
            IHttpClient httpClient,
            IMonitoringService monitoringService,
            IBloomStorage bloomStorage)
        {
            // what is block processor doing here?

            if (!(configProvider.GetConfig <INdmConfig>() is NdmConfig defaultConfig))
            {
                return(default);
Beispiel #13
0
 public RequiredServices(IConfigProvider configProvider, IConfigManager configManager, INdmConfig ndmConfig,
                         string baseDbPath, IDbProvider rocksProvider, IMongoProvider mongoProvider, ILogManager logManager,
                         IBlockProcessor blockProcessor, IBlockTree blockTree, ITxPool transactionPool,
                         ITxPoolInfoProvider transactionPoolInfoProvider, ISpecProvider specProvider,
                         IReceiptStorage receiptStorage, IWallet wallet, ITimestamp timestamp, IEthereumEcdsa ecdsa,
                         IKeyStore keyStore, IRpcModuleProvider rpcModuleProvider, IJsonSerializer jsonSerializer,
                         ICryptoRandom cryptoRandom, IEnode enode, INdmConsumerChannelManager ndmConsumerChannelManager,
                         INdmDataPublisher ndmDataPublisher, IGrpcService grpcService, EthRequestService ethRequestService,
                         bool enableUnsecuredDevWallet)
 {
     ConfigProvider              = configProvider;
     ConfigManager               = configManager;
     NdmConfig                   = ndmConfig;
     BaseDbPath                  = baseDbPath;
     RocksProvider               = rocksProvider;
     MongoProvider               = mongoProvider;
     LogManager                  = logManager;
     BlockProcessor              = blockProcessor;
     BlockTree                   = blockTree;
     TransactionPool             = transactionPool;
     TransactionPoolInfoProvider = transactionPoolInfoProvider;
     SpecProvider                = specProvider;
     ReceiptStorage              = receiptStorage;
     Wallet                    = wallet;
     Timestamp                 = timestamp;
     Ecdsa                     = ecdsa;
     KeyStore                  = keyStore;
     RpcModuleProvider         = rpcModuleProvider;
     JsonSerializer            = jsonSerializer;
     CryptoRandom              = cryptoRandom;
     Enode                     = enode;
     NdmConsumerChannelManager = ndmConsumerChannelManager;
     NdmDataPublisher          = ndmDataPublisher;
     GrpcService               = grpcService;
     EthRequestService         = ethRequestService;
     EnableUnsecuredDevWallet  = enableUnsecuredDevWallet;
 }
Beispiel #14
0
            PreInitAsync(IConfigProvider configProvider, IDbProvider dbProvider, string baseDbPath,
                IBlockTree blockTree, ITxPool txPool, ISpecProvider specProvider,
                IReceiptStorage receiptStorage, IWallet wallet, IFilterStore filterStore, IFilterManager filterManager,
                ITimestamper timestamper, IEthereumEcdsa ecdsa, IRpcModuleProvider rpcModuleProvider,
                IKeyStore keyStore, IJsonSerializer jsonSerializer, ICryptoRandom cryptoRandom, IEnode enode,
                INdmConsumerChannelManager consumerChannelManager, INdmDataPublisher dataPublisher,
                IGrpcServer grpcServer, bool enableUnsecuredDevWallet, IWebSocketsManager webSocketsManager,
                ILogManager logManager, IBlockProcessor blockProcessor)
        {
            if (!(configProvider.GetConfig<INdmConfig>() is NdmConfig defaultConfig))
            {
                return default;
            }

            if (!defaultConfig.Enabled)
            {
                return default;
            }

            if (defaultConfig.StoreConfigInDatabase && string.IsNullOrWhiteSpace(defaultConfig.Id))
            {
                throw new ArgumentException("NDM config stored in database requires an id.", nameof(defaultConfig.Id));
            }

            IMongoProvider mongoProvider = null;
            IConfigRepository configRepository = null;
            IEthRequestRepository ethRequestRepository = null;
            switch (defaultConfig.Persistence?.ToLowerInvariant())
            {
                case "mongo":
                    mongoProvider = new MongoProvider(configProvider.GetConfig<INdmMongoConfig>(), logManager);
                    var database = mongoProvider.GetDatabase();
                    configRepository = new ConfigMongoRepository(database);
                    ethRequestRepository = new EthRequestMongoRepository(database);
                    break;
                default:
                    configRepository = new ConfigRocksRepository(dbProvider.ConfigsDb, new NdmConfigDecoder());
                    ethRequestRepository = new EthRequestRocksRepository(dbProvider.EthRequestsDb,
                        new EthRequestDecoder());
                    break;
            }

            var configManager = new ConfigManager(defaultConfig, configRepository);
            var ndmConfig = await configManager.GetAsync(defaultConfig.Id);
            if (ndmConfig is null)
            {
                ndmConfig = defaultConfig;
                if (defaultConfig.StoreConfigInDatabase)
                {
                    await configManager.UpdateAsync(ndmConfig);
                }
            }

            var webSocketsModule = webSocketsManager.GetModule("ndm");
            var notifier = new NdmNotifier(webSocketsModule);
            var ethRequestService = new EthRequestService(ndmConfig.FaucetHost, logManager);
            var services = _ndmModule.Init(new NdmRequiredServices(configProvider, configManager, ndmConfig,
                baseDbPath, dbProvider, mongoProvider, logManager, blockTree, txPool, specProvider, receiptStorage,
                filterStore, filterManager, wallet, timestamper, ecdsa, keyStore, rpcModuleProvider, jsonSerializer,
                cryptoRandom, enode, consumerChannelManager, dataPublisher, grpcServer, ethRequestService, notifier,
                enableUnsecuredDevWallet, blockProcessor));

            var faucetAddress = string.IsNullOrWhiteSpace(ndmConfig.FaucetAddress)
                ? null
                : new Address(ndmConfig.FaucetAddress);
            var faucet = new NdmFaucet(services.CreatedServices.BlockchainBridge, ethRequestRepository, faucetAddress,
                ndmConfig.FaucetWeiRequestMaxValue, ndmConfig.FaucetEthDailyRequestsTotalValue, ndmConfig.FaucetEnabled,
                timestamper, wallet, logManager);

            var consumerAddress = string.IsNullOrWhiteSpace(ndmConfig.ConsumerAddress)
                ? Address.Zero
                : new Address(ndmConfig.ConsumerAddress);
            var providerAddress = string.IsNullOrWhiteSpace(ndmConfig.ProviderAddress)
                ? Address.Zero
                : new Address(ndmConfig.ProviderAddress);
            var consumers = _ndmConsumersModule.Init(services);

            return (ndmConfig, services, faucet, consumers.AccountService, consumers.ConsumerService, consumerAddress,
                providerAddress);
        }
Beispiel #15
0
        public virtual async Task <INdmCapabilityConnector> InitAsync(IConfigProvider configProvider,
                                                                      IDbProvider dbProvider, string baseDbPath, IBlockProcessor blockProcessor, IBlockTree blockTree,
                                                                      ITxPool txPool, ITxPoolInfoProvider txPoolInfoProvider, ISpecProvider specProvider,
                                                                      IReceiptStorage receiptStorage, IWallet wallet, ITimestamp timestamp, IEthereumEcdsa ecdsa,
                                                                      IRpcModuleProvider rpcModuleProvider, IKeyStore keyStore, IJsonSerializer jsonSerializer,
                                                                      ICryptoRandom cryptoRandom, IEnode enode, INdmConsumerChannelManager consumerChannelManager,
                                                                      INdmDataPublisher dataPublisher, IGrpcService grpcService, INodeStatsManager nodeStatsManager,
                                                                      IProtocolsManager protocolsManager, IProtocolValidator protocolValidator,
                                                                      IMessageSerializationService messageSerializationService, bool enableUnsecuredDevWallet,
                                                                      ILogManager logManager)
        {
            var(config, _, ethRequestService, faucet, consumerService, consumerAddress,
                providerAddress) = await PreInitAsync(configProvider, dbProvider, baseDbPath, blockProcessor, blockTree,
                                                      txPool, txPoolInfoProvider, specProvider, receiptStorage, wallet, timestamp, ecdsa, rpcModuleProvider,
                                                      keyStore, jsonSerializer, cryptoRandom, enode, consumerChannelManager, dataPublisher, grpcService,
                                                      enableUnsecuredDevWallet, logManager);

            if (!config.Enabled)
            {
                return(default);
Beispiel #16
0
 public NethmModule(IConfigProvider configurationProvider, ILogManager logManager,
                    IJsonSerializer jsonSerializer, IEnode enode) : base(configurationProvider, logManager, jsonSerializer)
 {
     _enode = enode;
 }
Beispiel #17
0
 public NdmRequiredServices(
     IConfigProvider configProvider,
     IConfigManager configManager,
     INdmConfig ndmConfig,
     string baseDbPath,
     IDbProvider rocksProvider,
     IMongoProvider mongoProvider,
     ILogManager logManager,
     IBlockTree blockTree,
     ITxPool transactionPool,
     ISpecProvider specProvider,
     IReceiptStorage receiptStorage,
     IFilterStore filterStore,
     IFilterManager filterManager,
     IWallet wallet,
     ITimestamper timestamper,
     IEthereumEcdsa ecdsa,
     IKeyStore keyStore,
     IRpcModuleProvider rpcModuleProvider,
     IJsonSerializer jsonSerializer,
     ICryptoRandom cryptoRandom,
     IEnode enode,
     INdmConsumerChannelManager ndmConsumerChannelManager,
     INdmDataPublisher ndmDataPublisher,
     IGrpcServer grpcServer,
     IEthRequestService ethRequestService,
     INdmNotifier notifier,
     bool enableUnsecuredDevWallet,
     IBlockProcessor blockProcessor,
     IJsonRpcClientProxy?jsonRpcClientProxy,
     IEthJsonRpcClientProxy?ethJsonRpcClientProxy,
     IHttpClient httpClient,
     IMonitoringService monitoringService,
     IBloomStorage bloomStorage)
 {
     ConfigProvider            = configProvider ?? throw new ArgumentNullException(nameof(configProvider));
     ConfigManager             = configManager ?? throw new ArgumentNullException(nameof(configManager));
     NdmConfig                 = ndmConfig ?? throw new ArgumentNullException(nameof(ndmConfig));
     BaseDbPath                = baseDbPath ?? throw new ArgumentNullException(nameof(baseDbPath));
     RocksProvider             = rocksProvider ?? throw new ArgumentNullException(nameof(rocksProvider));
     MongoProvider             = mongoProvider ?? throw new ArgumentNullException(nameof(mongoProvider));
     LogManager                = logManager ?? throw new ArgumentNullException(nameof(logManager));
     BlockTree                 = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     TransactionPool           = transactionPool ?? throw new ArgumentNullException(nameof(transactionPool));
     SpecProvider              = specProvider ?? throw new ArgumentNullException(nameof(specProvider));
     ReceiptStorage            = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage));
     FilterStore               = filterStore ?? throw new ArgumentNullException(nameof(filterStore));
     FilterManager             = filterManager ?? throw new ArgumentNullException(nameof(filterManager));
     Wallet                    = wallet ?? throw new ArgumentNullException(nameof(wallet));
     Timestamper               = timestamper ?? throw new ArgumentNullException(nameof(timestamper));
     Ecdsa                     = ecdsa ?? throw new ArgumentNullException(nameof(ecdsa));
     KeyStore                  = keyStore ?? throw new ArgumentNullException(nameof(keyStore));
     RpcModuleProvider         = rpcModuleProvider ?? throw new ArgumentNullException(nameof(rpcModuleProvider));
     JsonSerializer            = jsonSerializer ?? throw new ArgumentNullException(nameof(jsonSerializer));
     CryptoRandom              = cryptoRandom ?? throw new ArgumentNullException(nameof(cryptoRandom));
     Enode                     = enode ?? throw new ArgumentNullException(nameof(enode));
     NdmConsumerChannelManager = ndmConsumerChannelManager ?? throw new ArgumentNullException(nameof(ndmConsumerChannelManager));
     NdmDataPublisher          = ndmDataPublisher ?? throw new ArgumentNullException(nameof(ndmDataPublisher));
     GrpcServer                = grpcServer ?? throw new ArgumentNullException(nameof(grpcServer));
     EthRequestService         = ethRequestService ?? throw new ArgumentNullException(nameof(ethRequestService));
     Notifier                  = notifier ?? throw new ArgumentNullException(nameof(notifier));
     EnableUnsecuredDevWallet  = enableUnsecuredDevWallet;
     BlockProcessor            = blockProcessor ?? throw new ArgumentNullException(nameof(blockProcessor));
     HttpClient                = httpClient ?? throw new ArgumentNullException(nameof(httpClient));
     MonitoringService         = monitoringService ?? throw new ArgumentNullException(nameof(monitoringService));
     JsonRpcClientProxy        = jsonRpcClientProxy;
     EthJsonRpcClientProxy     = ethJsonRpcClientProxy;
     BloomStorage              = bloomStorage;
 }
Beispiel #18
0
        public virtual async Task <INdmCapabilityConnector> InitAsync(IConfigProvider configProvider,
                                                                      IDbProvider dbProvider, string baseDbPath, IBlockTree blockTree, ITxPool txPool, ISpecProvider specProvider,
                                                                      IReceiptStorage receiptStorage, IWallet wallet, IFilterStore filterStore, IFilterManager filterManager,
                                                                      ITimestamper timestamper, IEthereumEcdsa ecdsa, IRpcModuleProvider rpcModuleProvider, IKeyStore keyStore,
                                                                      IJsonSerializer jsonSerializer, ICryptoRandom cryptoRandom, IEnode enode,
                                                                      INdmConsumerChannelManager consumerChannelManager, INdmDataPublisher dataPublisher, IGrpcServer grpcServer,
                                                                      INodeStatsManager nodeStatsManager, IProtocolsManager protocolsManager,
                                                                      IProtocolValidator protocolValidator, IMessageSerializationService messageSerializationService,
                                                                      bool enableUnsecuredDevWallet, IWebSocketsManager webSocketsManager, ILogManager logManager,
                                                                      IBlockProcessor blockProcessor, IJsonRpcClientProxy jsonRpcClientProxy,
                                                                      IEthJsonRpcClientProxy ethJsonRpcClientProxy, IHttpClient httpClient, IMonitoringService monitoringService)
        {
            var(config, services, faucet, ethRequestService, accountService, consumerService, consumerAddress,
                providerAddress) = await PreInitAsync(configProvider, dbProvider, baseDbPath, blockTree, txPool,
                                                      specProvider, receiptStorage, wallet, filterStore, filterManager, timestamper, ecdsa, rpcModuleProvider,
                                                      keyStore, jsonSerializer, cryptoRandom, enode, consumerChannelManager, dataPublisher, grpcServer,
                                                      enableUnsecuredDevWallet, webSocketsManager, logManager, blockProcessor, jsonRpcClientProxy,
                                                      ethJsonRpcClientProxy, httpClient, monitoringService);

            if (!config.Enabled)
            {
                return(default);
Beispiel #19
0
 public NetBridge(IEnode localNode, ISyncServer syncServer, IPeerManager peerManager)
 {
     _localNode   = localNode ?? throw new ArgumentNullException(nameof(localNode));
     _syncServer  = syncServer ?? throw new ArgumentNullException(nameof(syncServer));
     _peerManager = peerManager ?? throw new ArgumentNullException(nameof(syncServer));
 }
Beispiel #20
0
        public virtual async Task <INdmCapabilityConnector> InitAsync(
            IConfigProvider configProvider,
            IDbProvider dbProvider,
            string baseDbPath,
            IBlockTree blockTree,
            ITxPool txPool,
            ITxSender txSender,
            ISpecProvider specProvider,
            IReceiptFinder receiptFinder,
            IWallet wallet,
            IFilterStore filterStore,
            IFilterManager filterManager,
            ITimestamper timestamper,
            IEthereumEcdsa ecdsa,
            IRpcModuleProvider rpcModuleProvider,
            IKeyStore keyStore,
            IJsonSerializer jsonSerializer,
            ICryptoRandom cryptoRandom,
            IEnode enode,
            INdmConsumerChannelManager consumerChannelManager,
            INdmDataPublisher dataPublisher,
            IGrpcServer grpcServer,
            INodeStatsManager nodeStatsManager,
            IProtocolsManager protocolsManager,
            IProtocolValidator protocolValidator,
            IMessageSerializationService messageSerializationService,
            bool enableUnsecuredDevWallet,
            IWebSocketsManager webSocketsManager,
            ILogManager logManager,
            IBlockProcessor blockProcessor,
            IJsonRpcClientProxy?jsonRpcClientProxy,
            IEthJsonRpcClientProxy?ethJsonRpcClientProxy,
            IHttpClient httpClient,
            IMonitoringService monitoringService,
            IBloomStorage bloomStorage)
        {
            _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            INdmConfig ndmConfig = configProvider.GetConfig <INdmConfig>();

            if (!ndmConfig.Enabled)
            {
                // can we not even call it here? // can be step and use the subsystems
                return(NullNdmCapabilityConnector.Instance);
            }

            (NdmConfig config, INdmServices services, INdmFaucet faucet, IEthRequestService ethRequestService, IAccountService accountService, IConsumerService consumerService, Address consumerAddress, Address providerAddress) = await PreInitAsync(
                configProvider,
                dbProvider,
                baseDbPath,
                blockTree,
                txPool,
                txSender,
                specProvider,
                receiptFinder,
                wallet,
                filterStore,
                filterManager,
                timestamper,
                ecdsa,
                rpcModuleProvider,
                keyStore,
                jsonSerializer,
                cryptoRandom,
                enode,
                consumerChannelManager,
                dataPublisher,
                grpcServer,
                enableUnsecuredDevWallet,
                webSocketsManager,
                logManager,
                blockProcessor,
                jsonRpcClientProxy,
                ethJsonRpcClientProxy,
                httpClient,
                monitoringService,
                bloomStorage);

            NdmSubprotocolFactory subprotocolFactory = new NdmSubprotocolFactory(messageSerializationService, nodeStatsManager,
                                                                                 logManager, accountService, consumerService, consumerChannelManager, ecdsa, wallet, faucet,
                                                                                 enode.PublicKey, providerAddress, consumerAddress, config.VerifyP2PSignature);
            ProtocolHandlerFactory protocolHandlerFactory = new ProtocolHandlerFactory(subprotocolFactory, protocolValidator,
                                                                                       ethRequestService, logManager);

            NdmCapabilityConnector capabilityConnector = new NdmCapabilityConnector(
                protocolsManager,
                protocolHandlerFactory,
                accountService,
                logManager,
                ndmConfig.ProviderAddress == null ? Address.Zero : new Address(ndmConfig.ProviderAddress));

            return(capabilityConnector);
        }