Ejemplo n.º 1
0
        public EthModuleFactory(
            IDbProvider dbProvider,
            ITxPool txPool,
            ITxSender txSender,
            IWallet wallet,
            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));
            _txSender      = txSender ?? throw new ArgumentNullException(nameof(txSender));
            _wallet        = wallet ?? 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);
        }
Ejemplo n.º 2
0
 public AuRaValidatorFactory(IStateProvider stateProvider,
                             IAbiEncoder abiEncoder,
                             ITransactionProcessor transactionProcessor,
                             IReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource,
                             IBlockTree blockTree,
                             IReceiptFinder receiptFinder,
                             IValidatorStore validatorStore,
                             IBlockFinalizationManager finalizationManager,
                             ITxSender txSender,
                             ITxPool txPool,
                             ILogManager logManager,
                             ISigner signer,
                             ReportingContractBasedValidator.Cache reportingValidatorCache,
                             long posdaoTransition,
                             bool forSealing = false)
 {
     _stateProvider        = stateProvider;
     _abiEncoder           = abiEncoder;
     _transactionProcessor = transactionProcessor;
     _readOnlyTransactionProcessorSource = readOnlyTransactionProcessorSource;
     _blockTree           = blockTree;
     _receiptFinder       = receiptFinder;
     _validatorStore      = validatorStore;
     _finalizationManager = finalizationManager;
     _txSender            = txSender;
     _txPool     = txPool;
     _logManager = logManager;
     _signer     = signer;
     _reportingValidatorCache = reportingValidatorCache;
     _posdaoTransition        = posdaoTransition;
     _forSealing = forSealing;
 }
Ejemplo n.º 3
0
 public TxGasPriceSender(ITxSender txSender, ITxPool txPool, IMiningConfig miningConfig, uint percentDelta = TxGasPriceSenderConstants.DefaultPercentMultiplier)
 {
     _txSender     = txSender ?? throw new ArgumentNullException(nameof(txSender));
     _txPool       = txPool ?? throw new ArgumentNullException(nameof(txPool));
     _miningConfig = miningConfig ?? throw new ArgumentNullException(nameof(miningConfig));
     _percentDelta = percentDelta;
 }
Ejemplo n.º 4
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));
 }
Ejemplo n.º 5
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();
 }
Ejemplo n.º 6
0
        public BaselineModule(
            ITxSender txSender,
            IStateReader stateReader,
            ILogFinder logFinder,
            IBlockFinder blockFinder,
            IAbiEncoder abiEncoder,
            IFileSystem fileSystem,
            IDb baselineDb,
            IDb metadataBaselineDb,
            ILogManager logManager,
            IBlockProcessor blockProcessor,
            DisposableStack disposableStack)
        {
            _abiEncoder         = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
            _fileSystem         = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
            _baselineDb         = baselineDb ?? throw new ArgumentNullException(nameof(baselineDb));
            _metadataBaselineDb = metadataBaselineDb ?? throw new ArgumentNullException(nameof(metadataBaselineDb));
            _logger             = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            _txSender           = txSender ?? throw new ArgumentNullException(nameof(txSender));
            _stateReader        = stateReader ?? throw new ArgumentNullException(nameof(stateReader));
            _logFinder          = logFinder ?? throw new ArgumentNullException(nameof(logFinder));
            _blockFinder        = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder));
            _blockProcessor     = blockProcessor ?? throw new ArgumentNullException(nameof(blockProcessor));
            _baselineTreeHelper = new BaselineTreeHelper(_logFinder, baselineDb, metadataBaselineDb, _logger);
            _disposableStack    = disposableStack ?? throw new ArgumentNullException(nameof(disposableStack));

            _metadata = LoadMetadata();
            InitTrees();
        }
Ejemplo n.º 7
0
 public TxGasPriceSender(
     ITxSender txSender,
     IGasPriceOracle gasPriceOracle,
     uint percentDelta = TxGasPriceSenderConstants.DefaultPercentMultiplier)
 {
     _txSender       = txSender ?? throw new ArgumentNullException(nameof(txSender));
     _gasPriceOracle = gasPriceOracle ?? throw new ArgumentNullException(nameof(gasPriceOracle));
     _percentDelta   = percentDelta;
 }
Ejemplo n.º 8
0
        private void Report(ReportType reportType, Address validator, long blockNumber, byte[] proof, object cause, CreateReportTransactionDelegate createReportTransactionDelegate)
        {
            try
            {
                if (_cache.AlreadyReported(reportType, validator, blockNumber))
                {
                    if (_logger.IsDebug)
                    {
                        _logger.Debug($"Skipping report of {validator} at {blockNumber} with {cause} as its already reported.");
                    }
                }
                else
                {
                    if (!Validators.Contains(ValidatorContract.NodeAddress))
                    {
                        if (_logger.IsTrace)
                        {
                            _logger.Trace($"Skipping reporting {reportType} misbehaviour (cause: {cause}) at block #{blockNumber} from {validator} as we are not validator");
                        }
                    }
                    else
                    {
                        if (_logger.IsTrace)
                        {
                            _logger.Trace($"Reporting {reportType} misbehaviour (cause: {cause}) at block #{blockNumber} from {validator}");
                        }

                        Transaction transaction = createReportTransactionDelegate(validator, blockNumber, proof);
                        if (transaction != null)
                        {
                            ITxSender txSender = SetSender(blockNumber);
                            SendTransaction(reportType, txSender, transaction);
                            if (_logger.IsWarn)
                            {
                                _logger.Warn($"Reported {reportType} validator {validator} misbehaviour (cause: {cause}) at block {blockNumber} with transaction {transaction.Hash}.");
                            }
                            if (reportType == ReportType.Malicious)
                            {
                                Metrics.ReportedMaliciousMisbehaviour++;
                            }
                            else
                            {
                                Metrics.ReportedBenignMisbehaviour++;
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                if (_logger.IsError)
                {
                    _logger.Error($"Validator {validator} could not be reported on block {blockNumber} with cause {cause}", e);
                }
            }
        }
Ejemplo n.º 9
0
        public void Setup()
        {
            _blockchainBridge = Substitute.For <IBlockchainBridge>();
            _txPool           = Substitute.For <ITxPool>();
            _blockFinder      = Substitute.For <IBlockFinder>();
            _stateReader      = Substitute.For <IStateReader>();
            _txSender         = Substitute.For <ITxSender>();

            _ndmBridge = new NdmBlockchainBridge(_blockchainBridge, _blockFinder, _stateReader, _txSender);
        }
Ejemplo n.º 10
0
        private static void SendTransaction(ReportType reportType, ITxSender txSender, Transaction transaction)
        {
            TxHandlingOptions handlingOptions = reportType switch
            {
                ReportType.Benign => TxHandlingOptions.ManagedNonce,
                ReportType.Malicious => TxHandlingOptions.ManagedNonce | TxHandlingOptions.PersistentBroadcast,
                _ => TxHandlingOptions.ManagedNonce
            };

            txSender.SendTransaction(transaction, handlingOptions);
        }
Ejemplo n.º 11
0
 public NdmBlockchainBridge(
     IBlockchainBridge blockchainBridge,
     IBlockFinder blockTree,
     IStateReader stateReader,
     ITxSender txSender)
 {
     _blockchainBridge = blockchainBridge ?? throw new ArgumentNullException(nameof(blockchainBridge));
     _txSender         = txSender ?? throw new ArgumentNullException(nameof(txSender));
     _blockTree        = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _stateReader      = stateReader ?? throw new ArgumentNullException(nameof(stateReader));
 }
        public void SendTransaction_sets_correct_gas_price(ulong gasEstimate, uint percentDelta, ulong expectedGasPrice)
        {
            IGasPriceOracle gasPriceOracle = Substitute.For <IGasPriceOracle>();

            gasPriceOracle.GetGasPriceEstimate().Returns(gasEstimate);
            ITxSender        txSender         = Substitute.For <ITxSender>();
            TxGasPriceSender txGasPriceSender = new(txSender, gasPriceOracle, percentDelta);
            Transaction      transaction      = Build.A.Transaction.WithGasPrice(0).TestObject;

            txGasPriceSender.SendTransaction(transaction, TxHandlingOptions.None);
            Assert.AreEqual((UInt256)expectedGasPrice, transaction.GasPrice);
        }
Ejemplo n.º 13
0
        public UInt256 SendTransaction_sets_correct_gas_price(UInt256 minMiningGasPrice, UInt256[] txPoolGasPrices, uint percentDelta)
        {
            ITxSender txSender = Substitute.For <ITxSender>();
            ITxPool   txPool   = Substitute.For <ITxPool>();

            txPool.GetPendingTransactions().Returns(
                txPoolGasPrices.Select(g => Build.A.Transaction.WithGasPrice(g).TestObject).ToArray());
            MiningConfig     miningConfig     = new() { MinGasPrice = minMiningGasPrice };
            TxGasPriceSender txGasPriceSender = new(txSender, txPool, miningConfig, percentDelta);

            Transaction transaction = Build.A.Transaction.WithGasPrice(0).TestObject;

            txGasPriceSender.SendTransaction(transaction, TxHandlingOptions.None);

            return(transaction.GasPrice);
        }
    }
Ejemplo n.º 14
0
 public BaselineModuleFactory(
     ITxSender txSender,
     IStateReader stateReader,
     ILogFinder logFinder,
     IBlockFinder blockFinder,
     IAbiEncoder abiEncoder,
     IFileSystem fileSystem,
     ILogManager logManager)
 {
     _txSender    = txSender ?? throw new ArgumentNullException(nameof(txSender));
     _logFinder   = logFinder ?? throw new ArgumentNullException(nameof(logFinder));
     _blockFinder = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder));
     _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader));
     _abiEncoder  = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
     _fileSystem  = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
     _logManager  = logManager ?? throw new ArgumentNullException(nameof(logManager));
 }
Ejemplo n.º 15
0
 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>();
 }
Ejemplo n.º 16
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));
 }
Ejemplo n.º 17
0
 public ReportingContractBasedValidator(
     ContractBasedValidator contractValidator,
     IReportingValidatorContract reportingValidatorContract,
     long posdaoTransition,
     ITxSender txSender,
     ITxPool txPool,
     IStateProvider stateProvider,
     Cache cache,
     ILogManager logManager)
 {
     _contractValidator = contractValidator ?? throw new ArgumentNullException(nameof(contractValidator));
     ValidatorContract  = reportingValidatorContract ?? throw new ArgumentNullException(nameof(reportingValidatorContract));
     _posdaoTransition  = posdaoTransition;
     _posdaoTxSender    = txSender ?? throw new ArgumentNullException(nameof(txSender));
     _stateProvider     = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
     _nonPosdaoTxSender = new TxGasPriceSender(txSender, txPool);
     _persistentReports = cache?.PersistentReports ?? throw new ArgumentNullException(nameof(cache));
     _logger            = logManager?.GetClassLogger <ReportingContractBasedValidator>() ?? throw new ArgumentNullException(nameof(logManager));
 }
Ejemplo n.º 18
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();
 }
Ejemplo n.º 19
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));
     _cancellationTokenTimeout = TimeSpan.FromMilliseconds(rpcConfig.Timeout);
 }
Ejemplo n.º 20
0
        public BaselineModule(
            ITxSender txSender,
            IStateReader stateReader,
            ILogFinder logFinder,
            IBlockFinder blockFinder,
            IAbiEncoder abiEncoder,
            IFileSystem fileSystem,
            IDb baselineDb,
            ILogManager logManager)
        {
            _abiEncoder  = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
            _fileSystem  = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
            _baselineDb  = baselineDb ?? throw new ArgumentNullException(nameof(baselineDb));
            _logger      = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            _txSender    = txSender ?? throw new ArgumentNullException(nameof(txSender));
            _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader));
            _logFinder   = logFinder ?? throw new ArgumentNullException(nameof(logFinder));
            _blockFinder = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder));

            _metadata = LoadMetadata();
            InitTrees();
        }
Ejemplo n.º 21
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                = LimboLogs.Instance;
     _blockTree                 = Substitute.For <IBlockTree>();
     _specProvider              = Substitute.For <ISpecProvider>();
     _transactionPool           = Substitute.For <ITxPool>();
     _txSender                  = Substitute.For <ITxSender>();
     _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>();
     _jsonRpcClientProxy        = Substitute.For <IJsonRpcClientProxy>();
     _ethJsonRpcClientProxy     = Substitute.For <IEthJsonRpcClientProxy>();
     _httpClient                = Substitute.For <IHttpClient>();
     _monitoringService         = Substitute.For <IMonitoringService>();
     _ndmModule                 = new NdmModule();
     _bloomStorage              = Substitute.For <IBloomStorage>();
 }
Ejemplo n.º 22
0
 public BaselineModuleFactory(
     ITxSender txSender,
     IStateReader stateReader,
     ILogFinder logFinder,
     IBlockFinder blockFinder,
     IAbiEncoder abiEncoder,
     IFileSystem fileSystem,
     ILogManager logManager,
     IBlockProcessor blockProcessor,
     DisposableStack disposableStack,
     IDbProvider dbProvider)
 {
     _txSender        = txSender ?? throw new ArgumentNullException(nameof(txSender));
     _logFinder       = logFinder ?? throw new ArgumentNullException(nameof(logFinder));
     _blockFinder     = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder));
     _stateReader     = stateReader ?? throw new ArgumentNullException(nameof(stateReader));
     _abiEncoder      = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
     _fileSystem      = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
     _logManager      = logManager ?? throw new ArgumentNullException(nameof(logManager));
     _blockProcessor  = blockProcessor ?? throw new ArgumentNullException(nameof(blockProcessor));
     _disposableStack = disposableStack ?? throw new ArgumentNullException(nameof(disposableStack));
     _dbProvider      = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider));
 }
Ejemplo n.º 23
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);
Ejemplo n.º 24
0
 public void SetUp()
 {
     _txPool   = Substitute.For <ITxPool>();
     _txSigner = Substitute.For <ITxSigner>();
     _txSender = new TxPoolSender(_txPool, new TxSealer(_txSigner, Timestamper.Default));
 }
Ejemplo n.º 25
0
 public Builder <T> WithTxSender(ITxSender txSender)
 {
     _blockchain.TxSender = txSender;
     return(this);
 }
Ejemplo n.º 26
0
 public TxGasPriceSender(ITxSender txSender, ITxPool txPool, uint percentDelta = 110)
 {
     _txSender     = txSender ?? throw new ArgumentNullException(nameof(txSender));
     _txPool       = txPool ?? throw new ArgumentNullException(nameof(txPool));
     _percentDelta = percentDelta;
 }
Ejemplo n.º 27
0
 private static void SendTransaction(ITxSender txSender, Transaction transaction)
 {
     txSender.SendTransaction(transaction, TxHandlingOptions.ManagedNonce | TxHandlingOptions.PersistentBroadcast);
 }
Ejemplo n.º 28
0
 public TxPoolBridge(ITxPool txPool, ITxSender txSender)
 {
     _txPool   = txPool ?? throw new ArgumentNullException(nameof(txPool));
     _txSender = txSender ?? throw new ArgumentNullException(nameof(txSender));
 }
Ejemplo n.º 29
0
 // TODO: remove this
 public NdmRequiredServices(
     IConfigProvider configProvider,
     IConfigManager configManager,
     INdmConfig ndmConfig,
     string baseDbPath,
     IDbProvider rocksProvider,
     IMongoProvider mongoProvider,
     ILogManager logManager,
     IBlockTree blockTree,
     ITxPool txPool,
     ITxSender txSender,
     ISpecProvider specProvider,
     IReceiptFinder receiptFinder,
     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));
     TxPool                    = txPool ?? throw new ArgumentNullException(nameof(txPool));
     TxSender                  = txSender ?? throw new ArgumentNullException(nameof(txSender));
     SpecProvider              = specProvider ?? throw new ArgumentNullException(nameof(specProvider));
     ReceiptFinder             = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder));
     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;
 }
Ejemplo n.º 30
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);
        }