mirror of
https://github.com/aljazceru/breez-lnd.git
synced 2025-12-18 06:34:27 +01:00
lnrpc: implement wallet balance RPC call
This commit is contained in:
@@ -7,6 +7,7 @@ service Lightning {
|
|||||||
rpc NewAddress(NewAddressRequest) returns (NewAddressResponse);
|
rpc NewAddress(NewAddressRequest) returns (NewAddressResponse);
|
||||||
|
|
||||||
rpc ConnectPeer(ConnectPeerRequest) returns (ConnectPeerResponse);
|
rpc ConnectPeer(ConnectPeerRequest) returns (ConnectPeerResponse);
|
||||||
|
rpc WalletBalance(WalletBalanceRequest) returns (WalletBalanceResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
message SendManyRequest {
|
message SendManyRequest {
|
||||||
@@ -36,4 +37,9 @@ message ConnectPeerRequest {
|
|||||||
|
|
||||||
message ConnectPeerResponse {
|
message ConnectPeerResponse {
|
||||||
bytes lnID = 1;
|
bytes lnID = 1;
|
||||||
|
message WalletBalanceRequest {
|
||||||
|
bool witness_only = 1;
|
||||||
|
}
|
||||||
|
message WalletBalanceResponse {
|
||||||
|
double balance = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
36
rpcserver.go
36
rpcserver.go
@@ -134,4 +134,40 @@ func (r *rpcServer) ConnectPeer(ctx context.Context,
|
|||||||
|
|
||||||
rpcsLog.Infof("Connected to peer: %v", peerAddr.String())
|
rpcsLog.Infof("Connected to peer: %v", peerAddr.String())
|
||||||
return &lnrpc.ConnectPeerResponse{[]byte(peerAddr.String())}, nil
|
return &lnrpc.ConnectPeerResponse{[]byte(peerAddr.String())}, nil
|
||||||
|
// WalletBalance returns the sum of all confirmed unspent outputs under control
|
||||||
|
// by the wallet. This method can be modified by having the request specify
|
||||||
|
// only witness outputs should be factored into the final output sum.
|
||||||
|
// TODO(roasbeef): split into total and confirmed/unconfirmed
|
||||||
|
func (r *rpcServer) WalletBalance(ctx context.Context,
|
||||||
|
in *lnrpc.WalletBalanceRequest) (*lnrpc.WalletBalanceResponse, error) {
|
||||||
|
|
||||||
|
var balance float64
|
||||||
|
|
||||||
|
if in.WitnessOnly {
|
||||||
|
witnessOutputs, err := r.server.lnwallet.ListUnspentWitness(1)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// We need to convert from BTC to satoshi here otherwise, and
|
||||||
|
// incorrect sum will be returned.
|
||||||
|
var outputSum btcutil.Amount
|
||||||
|
for _, witnessOutput := range witnessOutputs {
|
||||||
|
outputSum += btcutil.Amount(witnessOutput.Amount * 1e8)
|
||||||
|
}
|
||||||
|
|
||||||
|
balance = outputSum.ToBTC()
|
||||||
|
} else {
|
||||||
|
// TODO(roasbeef): make num confs a param
|
||||||
|
outputSum, err := r.server.lnwallet.CalculateBalance(1)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
balance = outputSum.ToBTC()
|
||||||
|
}
|
||||||
|
|
||||||
|
rpcsLog.Debugf("walletbalance query response: %v", balance)
|
||||||
|
|
||||||
|
return &lnrpc.WalletBalanceResponse{balance}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user