diff --git a/src/services/lnd/lnd.ts b/src/services/lnd/lnd.ts index 33e2ed1e..daf7b411 100644 --- a/src/services/lnd/lnd.ts +++ b/src/services/lnd/lnd.ts @@ -55,6 +55,7 @@ export default class { liquidProvider: LiquidityProvider utils: Utils unlockLnd: () => Promise + addressesCache: Record = {} constructor(getSettings: () => { lndSettings: LndSettings, lndNodeSettings: LndNodeSettings }, liquidProvider: LiquidityProvider, unlockLnd: () => Promise, utils: Utils, addressPaidCb: AddressPaidCb, invoicePaidCb: InvoicePaidCb, newBlockCb: NewBlockCb, htlcCb: HtlcCb, channelEventCb: ChannelEventCb) { this.getSettings = getSettings this.utils = utils @@ -334,6 +335,10 @@ export default class { } async IsChangeAddress(address: string): Promise { + const cached = this.addressesCache[address] + if (cached) { + return cached.isChange + } const addresses = await this.ListAddresses() const addr = addresses.find(a => a.address === address) if (!addr) { @@ -345,6 +350,7 @@ export default class { async ListAddresses(): Promise { const res = await this.walletKit.listAddresses({ accountName: "", showCustomAccounts: false }, DeadLineMetadata()) const addresses = res.response.accountWithAddresses.map(a => a.addresses.map(a => ({ address: a.address, change: a.isInternal }))).flat() + addresses.forEach(a => this.addressesCache[a.address] = { isChange: a.change }) return addresses }