diff --git a/src/services/lnd/lnd.ts b/src/services/lnd/lnd.ts index e1128e1b..f7b437d4 100644 --- a/src/services/lnd/lnd.ts +++ b/src/services/lnd/lnd.ts @@ -326,7 +326,8 @@ export default class { const channelsBalance = response.channels.map(c => ({ channelId: c.chanId, localBalanceSats: Number(c.localBalance), - remoteBalanceSats: Number(c.remoteBalance) + remoteBalanceSats: Number(c.remoteBalance), + htlcs: c.pendingHtlcs.map(htlc => ({ incoming: htlc.incoming, amount: Number(htlc.amount) })) })) return { confirmedBalance: Number(confirmedBalance), unconfirmedBalance: Number(unconfirmedBalance), totalBalance: Number(totalBalance), channelsBalance } } diff --git a/src/services/lnd/settings.ts b/src/services/lnd/settings.ts index 7965abdc..41f6ab49 100644 --- a/src/services/lnd/settings.ts +++ b/src/services/lnd/settings.ts @@ -24,6 +24,7 @@ export type BalanceInfo = { channelId: string; localBalanceSats: number; remoteBalanceSats: number; + htlcs: { incoming: boolean, amount: number }[] }[]; } diff --git a/src/services/main/watchdog.ts b/src/services/main/watchdog.ts index e1d783db..1e3f774f 100644 --- a/src/services/main/watchdog.ts +++ b/src/services/main/watchdog.ts @@ -48,8 +48,18 @@ export class Watchdog { } getTotalLndBalance = async () => { - const { channelsBalance, confirmedBalance } = await this.lnd.GetBalance() - return confirmedBalance + channelsBalance.reduce((acc, { localBalanceSats }) => acc + localBalanceSats, 0) + const { confirmedBalance, channelsBalance } = await this.lnd.GetBalance() + let total = confirmedBalance + channelsBalance.forEach(c => { + let outgoingSats = 0 + c.htlcs.forEach(htlc => { + if (!htlc.incoming) { + outgoingSats += Number(htlc.amount) + } + }) + total += Number(c.localBalanceSats) - outgoingSats + }) + return total } checkBalanceUpdate = (deltaLnd: number, deltaUsers: number) => {