From d545afa5fe44385022a1e0da0b95e1b6ca28455a Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Fri, 11 Nov 2016 15:48:15 -0800 Subject: [PATCH] rpcserver: fetch balance for ChannelBalance from disk This commit modifies the ChannelBalance RPC to fetch the balance from disk since channels are now able to efficiently retrieved from disk due to recent index that have been added. Previously this RPC would only return accurate information if we had an active connection to the counter party for each channel. --- rpcserver.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/rpcserver.go b/rpcserver.go index 02665457..e6834418 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -479,11 +479,14 @@ func (r *rpcServer) WalletBalance(ctx context.Context, func (r *rpcServer) ChannelBalance(ctx context.Context, in *lnrpc.ChannelBalanceRequest) (*lnrpc.ChannelBalanceResponse, error) { + channels, err := r.server.chanDB.FetchAllChannels() + if err != nil { + return nil, err + } + var balance btcutil.Amount - for _, peer := range r.server.Peers() { - for _, snapshot := range peer.ChannelSnapshots() { - balance += snapshot.LocalBalance - } + for _, channel := range channels { + balance += channel.OurBalance } return &lnrpc.ChannelBalanceResponse{Balance: int64(balance)}, nil