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(); }
protected virtual TxPool.TxPool CreateTxPool(ITxStorage txStorage) => new TxPool.TxPool( txStorage, EthereumEcdsa, new ChainHeadInfoProvider(new FixedBlockChainHeadSpecProvider(SpecProvider), BlockTree, State), new TxPoolConfig(), new TxValidator(SpecProvider.ChainId), LogManager, TransactionComparerProvider.GetDefaultComparer());
private Transactions AddTransactions(ITxStorage storage) { _txPool = CreatePool(storage); var pendingTransactions = AddTransactionsToPool(); var persistedTransactions = GetTransactionsFromStorage(storage, pendingTransactions); return(new Transactions(pendingTransactions, persistedTransactions)); }
protected virtual TxPool.TxPool CreateTxPool(ITxStorage txStorage) => new TxPool.TxPool( txStorage, EthereumEcdsa, new FixedBlockChainHeadSpecProvider(SpecProvider), new TxPoolConfig(), State, new TxValidator(SpecProvider.ChainId), LimboLogs.Instance);
public void Setup() { _logManager = LimboLogs.Instance; _specProvider = RopstenSpecProvider.Instance; _ethereumEcdsa = new EthereumEcdsa(_specProvider.ChainId, _logManager); _noTxStorage = NullTxStorage.Instance; _inMemoryTxStorage = new InMemoryTxStorage(); _persistentTxStorage = new PersistentTxStorage(new MemDb()); _stateProvider = new StateProvider(new StateDb(), new MemDb(), _logManager); }
public void Setup() { _genesisBlock = Build.A.Block.WithNumber(0).TestObject; _remoteBlockTree = Build.A.BlockTree(_genesisBlock).OfChainLength(0).TestObject; _logManager = LimboLogs.Instance; _specProvider = RopstenSpecProvider.Instance; _ethereumEcdsa = new EthereumEcdsa(_specProvider, _logManager); _noTxStorage = NullTxStorage.Instance; _inMemoryTxStorage = new InMemoryTxStorage(); _persistentTxStorage = new PersistentTxStorage(new MemDb(), _specProvider); }
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 void Setup() { _logManager = LimboLogs.Instance; _specProvider = RopstenSpecProvider.Instance; _ethereumEcdsa = new EthereumEcdsa(_specProvider.ChainId, _logManager); _noTxStorage = NullTxStorage.Instance; _inMemoryTxStorage = new InMemoryTxStorage(); _persistentTxStorage = new PersistentTxStorage(new MemDb()); _stateProvider = new StateProvider(new TrieStore(new MemDb(), _logManager), new MemDb(), _logManager); _blockFinder = Substitute.For <IBlockFinder>(); _blockFinder.FindBestSuggestedHeader().Returns(Build.A.BlockHeader.WithNumber(10000000).TestObject); }
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())); }
private Transactions AddAndFilterTransactions(ITxStorage storage, params ITxFilter[] filters) { _txPool = CreatePool(storage); foreach (var filter in filters ?? Enumerable.Empty <ITxFilter>()) { _txPool.AddFilter(filter); } var pendingTransactions = AddTransactionsToPool(); var filteredTransactions = GetTransactionsFromStorage(storage, pendingTransactions); return(new Transactions(pendingTransactions, filteredTransactions)); }
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 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; }
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);
private static IEnumerable <Transaction> GetTransactionsFromStorage(ITxStorage storage, IEnumerable <Transaction> transactions) => transactions.Select(t => storage.Get(t.Hash)).Where(t => !(t is null)).ToArray();
private TxPool CreatePool(ITxStorage txStorage) => new TxPool(txStorage, new PendingTxThresholdValidator(), new Timestamp(), _ethereumEcdsa, _specProvider, _logManager);
private TxPool.TxPool CreatePool(ITxStorage txStorage) => new TxPool.TxPool(txStorage, Timestamper.Default, _ethereumEcdsa, _specProvider, new TxPoolConfig(), _stateProvider, _logManager);
private TxPool.TxPool CreatePool(ITxStorage txStorage) => new TxPool.TxPool(txStorage, _ethereumEcdsa, new ChainHeadSpecProvider(_specProvider, _blockFinder), new TxPoolConfig(), _stateProvider, new TxValidator(_specProvider.ChainId), _logManager);