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:
4 files changed
+1561
-1517
No files matched your search
@@ -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
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user