コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }