Ejemplo n.º 1
0
        public List <Transaction> GetMineableTransactions()
        {
            var allTransactions = GetTransactions(Count);

            var txBySource = new Dictionary <string, List <Transaction> >();

            foreach (var tx in allTransactions)
            {
                var senderHex = HexConverter.ToPrefixString(tx.Source);

                if (txBySource.ContainsKey(senderHex))
                {
                    txBySource[senderHex].Add(tx);
                }
                else
                {
                    txBySource.Add(senderHex, new List <Transaction>()
                    {
                        tx
                    });
                }
            }

            var ret = new List <Transaction>();

            foreach (var kvp in txBySource)
            {
                uint nextNonce;

                lock (GateKeeper.BalanceLedgerLock)
                {
                    nextNonce = _balanceLedger.GetTransactionCount(kvp.Value[0].Source);
                }

                var sortedByNonce = kvp.Value.OrderBy(x => x.Nonce).ToList();

                for (int i = 0; i < sortedByNonce.Count; i++)
                {
                    if (sortedByNonce[i].Nonce == nextNonce)
                    {
                        ret.Add(sortedByNonce[i]);
                    }
                    else
                    {
                        break;
                    }
                }
            }

            return(ret);
        }
Ejemplo n.º 2
0
 public LargeInteger GetTransactionCount(byte[] publicKey) => balanceLedger.GetTransactionCount(publicKey);
Ejemplo n.º 3
0
 public uint GetTransactionCount(byte[] publicKey) => balanceLedger.GetTransactionCount(publicKey);