public async Task <AddressBalance> GetAddressBalanceAsync(string address, Fees fees = null) { var accountDetails = await _horizonService.GetAccountDetails(address); if (accountDetails == null) { // address not found return(null); } var result = new AddressBalance { Address = address }; result.Sequence = Int64.Parse(accountDetails.Sequence); var nativeBalance = accountDetails.Balances.Single(b => Core.Domain.Asset.Stellar.TypeName.Equals(b.AssetType, StringComparison.OrdinalIgnoreCase)); result.Balance = Convert.ToInt64(Decimal.Parse(nativeBalance.Balance) * One.Value); if (fees != null) { long entries = accountDetails.Signers.Length + accountDetails.SubentryCount; var minBalance = (2 + entries) * fees.BaseReserve; result.MinBalance = Convert.ToInt64(minBalance); } return(result); }
public async Task <AddressBalance> GetAddressBalanceAsync(string address, Fees fees = null) { var baseAddress = GetBaseAddress(address); var result = new AddressBalance { Address = baseAddress }; var accountDetails = await _horizonService.GetAccountDetails(baseAddress); if (accountDetails == null) { // address not found return(result); } result.Sequence = accountDetails.SequenceNumber; var addressExtension = GetPublicAddressExtension(address); if (string.IsNullOrEmpty(addressExtension)) { var nativeBalance = accountDetails.Balances.Single(b => _blockchainAssetsService.GetNativeAsset().TypeName.Equals(b.AssetType, StringComparison.OrdinalIgnoreCase)); result.Balance = Convert.ToInt64(decimal.Parse(nativeBalance.BalanceString, CultureInfo.InvariantCulture) * One.Value); } else { var walletBalance = await _walletBalanceRepository.GetAsync(_blockchainAssetsService.GetNativeAsset().Id, address); if (walletBalance != null) { result.Balance = walletBalance.Balance; } } if (fees == null) { return(result); } var entries = accountDetails.Signers.Length + accountDetails.SubentryCount; var minBalance = (2 + entries) * fees.BaseReserve; result.MinBalance = Convert.ToInt64(minBalance); return(result); }