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(); }