コード例 #1
0
        public async Task <AddressItem> GetRemainder(string[] addresses, CancellationToken cancellationToken)
        {
            var allAddressItems = addressesModel.GetAddressItems();

            foreach (var addressItem in allAddressItems)
            {
                if (addresses.Contains(addressItem.Address))
                {
                    continue;
                }

                if (addressItem.TransactionCount == 0)
                {
                    return(addressItem);
                }

                var transactions = transactionCollection.Where(t => t.IsOwn && t.Address == addressItem.Address).ToArray();
                if (transactions.All(t => t.Balance >= 0))
                {
                    return(addressItem);
                }
            }

            var lastIndex = allAddressItems.Max(a => a.Index);
            var api       = CreateIotaClient();
            var seed      = walletConfiguration.PrivateKey;
            var reminder  = await api.FindReminderAddress(seed, lastIndex + 1, cancellationToken);

            return(reminder);
        }