From 5fec40e38126c0f394869888beea9abde17c205f Mon Sep 17 00:00:00 2001 From: bluezdot <72647326+bluezdot@users.noreply.github.com> Date: Thu, 20 Jun 2024 15:07:12 +0700 Subject: [PATCH] [Issue-196] optimize speed get bitcoin balance --- .../balance-service/helpers/balance/bitcoin.ts | 13 +++---------- .../handler/bitcoin/strategy/BlockStream/types.ts | 6 +++++- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/extension-base/src/services/balance-service/helpers/balance/bitcoin.ts b/packages/extension-base/src/services/balance-service/helpers/balance/bitcoin.ts index f07a085e37c..342d0b85424 100644 --- a/packages/extension-base/src/services/balance-service/helpers/balance/bitcoin.ts +++ b/packages/extension-base/src/services/balance-service/helpers/balance/bitcoin.ts @@ -9,7 +9,6 @@ import { _BitcoinApi } from '@subwallet/extension-base/services/chain-service/ty import { _getChainNativeTokenSlug, _getRuneId } from '@subwallet/extension-base/services/chain-service/utils'; import { BalanceItem, UtxoResponseItem } from '@subwallet/extension-base/types'; import { filterAssetsByChainAndType, filteredOutTxsUtxos, getInscriptionUtxos, getRuneUtxos } from '@subwallet/extension-base/utils'; -import BigN from 'bignumber.js'; // todo: update bitcoin params function subscribeRuneBalance (bitcoinApi: _BitcoinApi, addresses: string[], assetMap: Record, chainInfo: _ChainInfo, callback: (rs: BalanceItem[]) => void) { @@ -161,17 +160,11 @@ export const getTransferableBitcoinUtxos = async (bitcoinApi: _BitcoinApi, addre async function getBitcoinBalance (bitcoinApi: _BitcoinApi, addresses: string[]) { return await Promise.all(addresses.map(async (address) => { try { - const filteredUtxos = await getTransferableBitcoinUtxos(bitcoinApi, address); + const addressInfo = await bitcoinApi.api.getAddressSummaryInfo(address); - let balanceValue = new BigN(0); - - filteredUtxos.forEach((utxo) => { - balanceValue = balanceValue.plus(utxo.value); - }); - - return balanceValue.toString(); + return addressInfo.balance.toString(); } catch (error) { - console.log('Error while fetching Bitcoin balances', error); + console.log(`Error while fetching Bitcoin balances for address ${address}`, error); return '0'; } diff --git a/packages/extension-base/src/services/chain-service/handler/bitcoin/strategy/BlockStream/types.ts b/packages/extension-base/src/services/chain-service/handler/bitcoin/strategy/BlockStream/types.ts index 77647c8a385..48c4bbbc16e 100644 --- a/packages/extension-base/src/services/chain-service/handler/bitcoin/strategy/BlockStream/types.ts +++ b/packages/extension-base/src/services/chain-service/handler/bitcoin/strategy/BlockStream/types.ts @@ -32,7 +32,11 @@ export interface BitcoinAddressSummaryInfo { spent_txo_count: number, spent_txo_sum: number, tx_count: number - } + }, + balance: number, + balance_inscription: number, + balance_rune: number, + total_inscription: number } // todo: combine RunesByAddressResponse & RunesCollectionInfoResponse