lnrpc: add new locked balance field for WalletBalance

In this commit, we add a new field to the WalletBalance call that
permits users to account for the set of outputs that may be locked due
to a pending transaction. Without this field any time users locked
outputs for things like PSBT signing, then they disappear from the
WalletBalance call, which may cause a panic.
This commit is contained in:
Olaoluwa Osuntokun committed 2022-03-17 16:36:44 -07:00
1 parent d287884ff4
commit 4ecd153be2
4 files changed
+1561 -1517

No files matched your search

+22
View File
@@ -3087,6 +3087,27 @@ func (r *rpcServer) WalletBalance(ctx context.Context,
}
}
// Now that we have the base balance accounted for with each account,
// we'll look at the set of locked UTXOs to tally that as well. If we
// don't display this, then anytime we attempt a funding reservation,
// the outputs will chose as being "gone" until they're confirmed on
// chain.
var lockedBalance btcutil.Amount
leases, err := r.server.cc.Wallet.ListLeasedOutputs()
if err != nil {
return nil, err
}
for _, leasedOutput := range leases {
utxoInfo, err := r.server.cc.Wallet.FetchInputInfo(
&leasedOutput.Outpoint,
)
if err != nil {
return nil, err
}
lockedBalance += utxoInfo.Value
}
rpcsLog.Debugf("[walletbalance] Total balance=%v (confirmed=%v, "+
"unconfirmed=%v)", totalBalance, confirmedBalance,
unconfirmedBalance)
@@ -3095,6 +3116,7 @@ func (r *rpcServer) WalletBalance(ctx context.Context,
TotalBalance: int64(totalBalance),
ConfirmedBalance: int64(confirmedBalance),
UnconfirmedBalance: int64(unconfirmedBalance),
LockedBalance: int64(lockedBalance),
AccountBalance: rpcAccountBalances,
}, nil
}