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); }
public LargeInteger GetTransactionCount(byte[] publicKey) => balanceLedger.GetTransactionCount(publicKey);
public uint GetTransactionCount(byte[] publicKey) => balanceLedger.GetTransactionCount(publicKey);