public TxValidator(ITxPoolConfig config, IChainService chainService, ILogger logger) { _config = config; _chainService = chainService; _logger = logger; _canonicalBlockHashCache = new CanonicalBlockHashCache(BlockChain, logger); }
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; }
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(); }
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(); }
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>(); }
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>(); }
public void Setup() { _dbConfig = new DbConfig(); _syncConfig = new SyncConfig(); _initConfig = new InitConfig(); _txPoolConfig = new TxPoolConfig(); _networkConfig = new NetworkConfig(); _memoryHintMan = new MemoryHintMan(LimboLogs.Instance); }
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) { }
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) { }
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())); }
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; }
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); }
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; }
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); }
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); }
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; }
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"); } } }
public TxPoolServiceModule(ITxPoolConfig poolConfig) { PoolConfig = poolConfig; }
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);