public async Task <ExecutableTransactionSet> GetExecutableTransactionSetAsync(int transactionCount = 0) { var output = new ExecutableTransactionSet { PreviousBlockHash = _bestChainHash, PreviousBlockHeight = _bestChainHeight }; if (transactionCount == -1) { return(output); } var chain = await _blockchainService.GetChainAsync(); if (chain.BestChainHash != _bestChainHash) { Logger.LogWarning( $"Attempting to retrieve executable transactions while best chain records don't match."); return(output); } output.Transactions.AddRange(_validatedTransactions.Values.OrderBy(x => x.EnqueueTime) .Where((x, i) => transactionCount <= 0 || i < transactionCount).Select(x => x.Transaction)); return(output); }
public async Task <ExecutableTransactionSet> GetExecutableTransactionSetAsync(Hash blockHash, int transactionCount) { var output = new ExecutableTransactionSet { PreviousBlockHash = _bestChainHash, PreviousBlockHeight = _bestChainHeight }; if (transactionCount <= 0) { return(output); } if (blockHash != _bestChainHash) { Logger.LogWarning( $"Attempting to retrieve executable transactions while best chain records don't match."); return(output); } output.Transactions.AddRange(_validatedTransactions.Values.OrderBy(x => x.EnqueueTime) .Take(transactionCount) .Select(x => x.Transaction)); return(output); }
public async Task <ExecutableTransactionSet> GetExecutableTransactionSetAsync() { var chain = await _blockchainService.GetChainAsync(); if (chain.BestChainHash != _bestChainHash) { Logger.LogWarning($"Attempting to retrieve executable transactions while best chain records don't match."); return(new ExecutableTransactionSet { PreviousBlockHash = _bestChainHash, PreviousBlockHeight = _bestChainHeight }); } var output = new ExecutableTransactionSet() { PreviousBlockHash = _bestChainHash, PreviousBlockHeight = _bestChainHeight }; output.Transactions.AddRange(_validated.Values.Select(x => x.Transaction)); return(output); }