Ejemplo n.º 1
0
 public TxValidator(ITxPoolConfig config, IChainService chainService, ILogger logger)
 {
     _config                  = config;
     _chainService            = chainService;
     _logger                  = logger;
     _canonicalBlockHashCache = new CanonicalBlockHashCache(BlockChain, logger);
 }
Ejemplo n.º 2
0
 public GasLimitTxFilter(IChainHeadInfoProvider chainHeadInfoProvider, ITxPoolConfig txPoolConfig,
                         ILogger logger)
 {
     _chainHeadInfoProvider = chainHeadInfoProvider;
     _logger             = logger;
     _configuredGasLimit = txPoolConfig.GasLimit ?? long.MaxValue;
 }
 public PendingTxThresholdValidator(ITxPoolConfig txPoolConfig)
 {
     if(txPoolConfig == null) throw new ArgumentNullException(nameof(txPoolConfig));
     
     _obsoletePendingTransactionInterval = txPoolConfig.ObsoletePendingTransactionInterval;
     _removePendingTransactionInterval = txPoolConfig.RemovePendingTransactionInterval;
 }
Ejemplo n.º 4
0
        public EthereumRunner(IRpcModuleProvider rpcModuleProvider, IConfigProvider configurationProvider,
                              ILogManager logManager, IGrpcServer grpcServer,
                              INdmConsumerChannelManager ndmConsumerChannelManager, INdmDataPublisher ndmDataPublisher,
                              INdmInitializer ndmInitializer, IWebSocketsManager webSocketsManager,
                              IJsonSerializer ethereumJsonSerializer)
        {
            _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager));
            _grpcServer = grpcServer;
            _ndmConsumerChannelManager = ndmConsumerChannelManager;
            _ndmDataPublisher          = ndmDataPublisher;
            _ndmInitializer            = ndmInitializer;
            _webSocketsManager         = webSocketsManager;
            _ethereumJsonSerializer    = ethereumJsonSerializer;
            _logger = _logManager.GetClassLogger();

            InitRlp();
            _configProvider    = configurationProvider ?? throw new ArgumentNullException(nameof(configurationProvider));
            _rpcModuleProvider = rpcModuleProvider ?? throw new ArgumentNullException(nameof(rpcModuleProvider));
            _initConfig        = configurationProvider.GetConfig <IInitConfig>();
            _txPoolConfig      = configurationProvider.GetConfig <ITxPoolConfig>();
            _perfService       = new PerfService(_logManager);

            _networkConfig            = _configProvider.GetConfig <INetworkConfig>();
            _ipResolver               = new IpResolver(_networkConfig, _logManager);
            _networkConfig.ExternalIp = _ipResolver.ExternalIp.ToString();
            _networkConfig.LocalIp    = _ipResolver.LocalIp.ToString();
        }
Ejemplo n.º 5
0
        public TxPool(ITxStorage txStorage,
                      ITimestamp timestamp,
                      IEthereumEcdsa ecdsa,
                      ISpecProvider specProvider,
                      ITxPoolConfig txPoolConfig,
                      ILogManager logManager)
        {
            int removePendingTransactionInterval = txPoolConfig.RemovePendingTransactionInterval;

            _peerNotificationThreshold = txPoolConfig.PeerNotificationThreshold;
            _logger       = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            _txStorage    = txStorage ?? throw new ArgumentNullException(nameof(txStorage));
            _timestamp    = timestamp ?? throw new ArgumentNullException(nameof(timestamp));
            _ecdsa        = ecdsa ?? throw new ArgumentNullException(nameof(ecdsa));
            _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider));

            _pendingTxThresholdValidator = new PendingTxThresholdValidator(txPoolConfig);
            if (removePendingTransactionInterval <= 0)
            {
                return;
            }

            var timer = new Timer(removePendingTransactionInterval * 1000);

            timer.Elapsed += OnTimerElapsed;
            timer.Start();
            _ownTimer           = new Timer(500);
            _ownTimer.Elapsed  += OwnTimerOnElapsed;
            _ownTimer.AutoReset = false;
            _ownTimer.Start();
        }
Ejemplo n.º 6
0
 public ApplyMemoryHint(NethermindApi context)
 {
     _api           = context ?? throw new ArgumentNullException(nameof(context));
     _initConfig    = context.Config <IInitConfig>();
     _dbConfig      = context.Config <IDbConfig>();
     _networkConfig = context.Config <INetworkConfig>();
     _syncConfig    = context.Config <ISyncConfig>();
     _txPoolConfig  = context.Config <ITxPoolConfig>();
 }
Ejemplo n.º 7
0
 public ApplyMemoryHint(INethermindApi api)
 {
     _api           = api ?? throw new ArgumentNullException(nameof(api));
     _initConfig    = api.Config <IInitConfig>();
     _dbConfig      = api.Config <IDbConfig>();
     _networkConfig = api.Config <INetworkConfig>();
     _syncConfig    = api.Config <ISyncConfig>();
     _txPoolConfig  = api.Config <ITxPoolConfig>();
 }
Ejemplo n.º 8
0
 public void Setup()
 {
     _dbConfig      = new DbConfig();
     _syncConfig    = new SyncConfig();
     _initConfig    = new InitConfig();
     _txPoolConfig  = new TxPoolConfig();
     _networkConfig = new NetworkConfig();
     _memoryHintMan = new MemoryHintMan(LimboLogs.Instance);
 }
Ejemplo n.º 9
0
 public ReorgTxPool(
     ITxStorage txStorage,
     IEthereumEcdsa ecdsa,
     IChainHeadInfoProvider chainHeadInfoProvider,
     ITxPoolConfig txPoolConfig,
     ITxValidator validator,
     ILogManager?logManager,
     IComparer <Transaction> comparer)
     : base(txStorage, ecdsa, chainHeadInfoProvider, txPoolConfig, validator, logManager, comparer)
 {
 }
Ejemplo n.º 10
0
 public ReorgTxPool(
     ITxStorage txStorage,
     IEthereumEcdsa ecdsa,
     IChainHeadSpecProvider specProvider,
     ITxPoolConfig txPoolConfig,
     IReadOnlyStateProvider stateProvider,
     ITxValidator validator,
     ILogManager?logManager,
     IComparer <Transaction>?comparer = null)
     : base(txStorage, ecdsa, specProvider, txPoolConfig, stateProvider, validator, logManager, comparer)
 {
 }
Ejemplo n.º 11
0
        private TxPool.TxPool CreatePool(ITxStorage txStorage, ITxPoolConfig config = null, ISpecProvider specProvider = null)
        {
            specProvider ??= RopstenSpecProvider.Instance;
            ITransactionComparerProvider transactionComparerProvider =
                new TransactionComparerProvider(specProvider, _blockTree);

            return(new TxPool.TxPool(txStorage, _ethereumEcdsa, new ChainHeadInfoProvider(specProvider, _blockFinder, _stateProvider),
                                     config ?? new TxPoolConfig()
            {
                GasLimit = _txGasLimit
            },
                                     new TxValidator(_specProvider.ChainId), _logManager, transactionComparerProvider.GetDefaultComparer()));
        }
Ejemplo n.º 12
0
 public FilteredTxPool(
     ITxStorage txStorage,
     IEthereumEcdsa ecdsa,
     ISpecProvider specProvider,
     ITxPoolConfig txPoolConfig,
     IReadOnlyStateProvider stateProvider,
     ILogManager logManager,
     IComparer <Transaction> comparer = null,
     ITxPoolFilter txPoolFilter       = null)
     : base(txStorage, ecdsa, specProvider, txPoolConfig, stateProvider, logManager, comparer)
 {
     _txPoolFilter = txPoolFilter;
 }
Ejemplo n.º 13
0
        public EthereumRunner(IRpcModuleProvider rpcModuleProvider, IConfigProvider configurationProvider, ILogManager logManager)
        {
            _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager));
            _logger     = _logManager.GetClassLogger();

            InitRlp();
            _configProvider    = configurationProvider ?? throw new ArgumentNullException(nameof(configurationProvider));
            _rpcModuleProvider = rpcModuleProvider ?? throw new ArgumentNullException(nameof(rpcModuleProvider));
            _initConfig        = configurationProvider.GetConfig <IInitConfig>();
            _txPoolConfig      = configurationProvider.GetConfig <ITxPoolConfig>();
            _perfService       = new PerfService(_logManager);
            _networkHelper     = new NetworkHelper(_logger);
        }
Ejemplo n.º 14
0
 public FilteredTxPool(
     ITxStorage txStorage,
     IEthereumEcdsa ecdsa,
     IChainHeadInfoProvider chainHeadInfoProvider,
     ITxPoolConfig txPoolConfig,
     ITxValidator txValidator,
     ILogManager logManager,
     IComparer <Transaction> comparer,
     ITxPoolFilter txPoolFilter = null)
     : base(txStorage, ecdsa, chainHeadInfoProvider, txPoolConfig, txValidator, logManager, comparer)
 {
     _txPoolFilter = txPoolFilter;
 }
Ejemplo n.º 15
0
        public TransactionResultTest(ITxPoolConfig txPoolConfig, IChainService chainService,
                                     ITxSignatureVerifier signatureVerifier, ITxRefBlockValidator refBlockValidator,
                                     ITransactionResultManager transactionResultManager, ITxHub txHub)
        {
            ChainConfig.Instance.ChainId    = Hash.Generate().DumpHex();
            NodeConfig.Instance.NodeAccount = Address.Generate().DumpHex();
            _transactionResultManager       = transactionResultManager;
            _signatureVerifier = signatureVerifier;
            _refBlockValidator = refBlockValidator;
            _txHub             = txHub;
//            _transactionResultService = new TransactionResultService(
//                new TxPool(logger,
//                    new NewTxHub(transactionManager, chainService, signatureVerifier, refBlockValidator)), transactionResultManager);
            _transactionResultService = new TransactionResultService(_txHub, _transactionResultManager);
        }
Ejemplo n.º 16
0
        public EthereumRunner(IRpcModuleProvider rpcModuleProvider, IConfigProvider configurationProvider, ILogManager logManager,
                              IGrpcService grpcService, IGrpcClient grpcClient, INdmConsumerChannelManager ndmConsumerChannelManager,
                              INdmDataPublisher ndmDataPublisher, INdmInitializer ndmInitializer)
        {
            _logManager  = logManager ?? throw new ArgumentNullException(nameof(logManager));
            _grpcService = grpcService;
            _grpcClient  = grpcClient;
            _ndmConsumerChannelManager = ndmConsumerChannelManager;
            _ndmDataPublisher          = ndmDataPublisher;
            _ndmInitializer            = ndmInitializer;
            _logger = _logManager.GetClassLogger();

            InitRlp();
            _configProvider    = configurationProvider ?? throw new ArgumentNullException(nameof(configurationProvider));
            _rpcModuleProvider = rpcModuleProvider ?? throw new ArgumentNullException(nameof(rpcModuleProvider));
            _initConfig        = configurationProvider.GetConfig <IInitConfig>();
            _txPoolConfig      = configurationProvider.GetConfig <ITxPoolConfig>();
            _perfService       = new PerfService(_logManager);
            _networkHelper     = new NetworkHelper(_logger);
        }
Ejemplo n.º 17
0
        private void AssignTxPoolMemory(ITxPoolConfig txPoolConfig)
        {
            long hashCacheMemory = txPoolConfig.Size / 4L * 1024L * 128L;

            if ((_remainingMemory * 0.05) < hashCacheMemory)
            {
                hashCacheMemory = Math.Min((long)(_remainingMemory * 0.05), hashCacheMemory);
            }

            MemoryAllowance.TxHashCacheSize = (int)(hashCacheMemory / 128);
            hashCacheMemory = MemoryAllowance.TxHashCacheSize * 128;

            long txPoolMemory = txPoolConfig.Size * 40.KB() + hashCacheMemory;

            if (txPoolMemory > _remainingMemory * 0.5)
            {
                throw new InvalidDataException(
                          $"Memory hint is not enough to satisfy the {nameof(TxPoolConfig)}.{nameof(TxPoolConfig.Size)}");
            }

            TxPoolMemory = txPoolMemory;
        }
Ejemplo n.º 18
0
        public void SetMemoryAllowances(
            IDbConfig dbConfig,
            IInitConfig initConfig,
            INetworkConfig networkConfig,
            ISyncConfig syncConfig,
            ITxPoolConfig txPoolConfig,
            uint cpuCount)
        {
            TotalMemory = initConfig.MemoryHint ?? 2.GB();
            ValidateCpuCount(cpuCount);

            checked
            {
                if (_logger.IsInfo)
                {
                    _logger.Info("Setting up memory allowances");
                }
                if (_logger.IsInfo)
                {
                    _logger.Info($"  memory hint:        {TotalMemory / 1000 / 1000}MB");
                }
                _remainingMemory  = initConfig.MemoryHint ?? 2.GB();
                _remainingMemory -= GeneralMemory;
                if (_logger.IsInfo)
                {
                    _logger.Info($"  general memory:     {GeneralMemory / 1000 / 1000}MB");
                }
                AssignPeersMemory(networkConfig);
                _remainingMemory -= PeersMemory;
                if (_logger.IsInfo)
                {
                    _logger.Info($"  peers memory:       {PeersMemory / 1000 / 1000}MB");
                }
                AssignNettyMemory(networkConfig, cpuCount);
                _remainingMemory -= NettyMemory;
                if (_logger.IsInfo)
                {
                    _logger.Info($"  Netty memory:       {NettyMemory / 1000 / 1000}MB");
                }
                AssignTxPoolMemory(txPoolConfig);
                _remainingMemory -= TxPoolMemory;
                if (_logger.IsInfo)
                {
                    _logger.Info($"  mempool memory:     {TxPoolMemory / 1000 / 1000}MB");
                }
                AssignFastBlocksMemory(syncConfig);
                _remainingMemory -= FastBlocksMemory;
                if (_logger.IsInfo)
                {
                    _logger.Info($"  fast blocks memory: {FastBlocksMemory / 1000 / 1000}MB");
                }
                AssignTrieCacheMemory();
                _remainingMemory -= TrieCacheMemory;
                if (_logger.IsInfo)
                {
                    _logger.Info($"  trie memory:        {TrieCacheMemory / 1000 / 1000}MB");
                }
                UpdateDbConfig(cpuCount, syncConfig, dbConfig, initConfig);
                _remainingMemory -= DbMemory;
                if (_logger.IsInfo)
                {
                    _logger.Info($"  DB memory:          {DbMemory / 1000 / 1000}MB");
                }
            }
        }
Ejemplo n.º 19
0
 public TxPoolServiceModule(ITxPoolConfig poolConfig)
 {
     PoolConfig = poolConfig;
 }
Ejemplo n.º 20
0
 private TxPool.TxPool CreatePool(ITxStorage txStorage, ITxPoolConfig config = null)
 => new TxPool.TxPool(txStorage, _ethereumEcdsa, new ChainHeadSpecProvider(_specProvider, _blockFinder),
                      config ?? new TxPoolConfig()
 {
     GasLimit = _txGasLimit
 }, _stateProvider, new TxValidator(_specProvider.ChainId), _logManager);