Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }