mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2025-02-24 14:51:03 +01:00
132 lines
6.7 KiB
Bash
Executable file
132 lines
6.7 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# SOURCE: https://github.com/gcomte/ln-gems/blob/master/showTotalLightningBalance.sh
|
|
# LATEST COMMIT: 14a5ec6fca020be9fc0951eb78ac727ecb1be247
|
|
|
|
##############################################################################
|
|
# COLORING
|
|
##############################################################################
|
|
|
|
YELLOW=`tput setaf 3`
|
|
CYAN=`tput setaf 6`
|
|
GREEN=`tput setaf 2`
|
|
RED=`tput setaf 1`
|
|
RESET=`tput sgr0`
|
|
|
|
##############################################################################
|
|
# CALCULATIONS
|
|
##############################################################################
|
|
|
|
LN_REMOTE_BALANCE=$(lncli listchannels | jq -r '.[][].remote_balance' | awk '{s+=$1} END {print s}')
|
|
LN_LOCAL_BALANCE=$(lncli listchannels | jq -r '.[][].local_balance' | awk '{s+=$1} END {print s}')
|
|
LN_TOTAL_BALANCE=$((LN_REMOTE_BALANCE + LN_LOCAL_BALANCE))
|
|
LN_COMMIT_FEES=$(lncli listchannels | jq -r '.[][] | select(.initiator==true) | .commit_fee' | awk '{s+=$1} END {print s}')
|
|
LN_INVOICES=$(lncli listinvoices | jq -r '.invoices[] | select(.settled==true) | .value' | awk '{s+=$1} END {print s}')
|
|
LN_PAYMENTS=$(lncli listpayments | jq -r '.payments[] | select(.status=="SUCCEEDED") | .value' | awk '{s+=$1} END {print s}')
|
|
LN_PAYMENTS_FEES=$(lncli listpayments | jq -r '.payments[] | select(.status=="SUCCEEDED") | .fee' | awk '{s+=$1} END {print s}')
|
|
LN_EARNED_FEES_IN_MSATS=$(lncli fwdinghistory 0 --max_events 50000 | jq -r '.forwarding_events[] | .fee_msat' | awk '{s+=$1} END {print s}')
|
|
LN_EARNED_FEES_IN_SATS=$((LN_EARNED_FEES_IN_MSATS / 1000))
|
|
|
|
ONCHAIN_FUNDS_CONFIRMED=$(lncli walletbalance | jq -r '.confirmed_balance')
|
|
ONCHAIN_FUNDS_UNCONFIRMED=$(lncli walletbalance | jq -r '.unconfirmed_balance')
|
|
ONCHAIN_FUNDS_TOTAL=$(lncli walletbalance | jq -r '.total_balance')
|
|
|
|
ONCHAIN_FUNDS_CONFIRMED_BTC=$(printf %.8f\\n "$((ONCHAIN_FUNDS_CONFIRMED))e-8")
|
|
ONCHAIN_FUNDS_UNCONFIRMED_BTC=$(printf %.8f\\n "$((ONCHAIN_FUNDS_UNCONFIRMED))e-8")
|
|
ONCHAIN_FUNDS_TOTAL_BTC=$(printf %.8f\\n "$((ONCHAIN_FUNDS_TOTAL))e-8")
|
|
ONCHAIN_TX_FEES=$(lncli listchaintxns | jq -r '.transactions[] | .total_fees' | awk '{s+=$1} END {print s}')
|
|
|
|
TOTAL_BALANCE_PERCENTAGE=100
|
|
|
|
if [ $LN_TOTAL_BALANCE -ne 0 ]; then # prevent division by zero error
|
|
LN_LOCAL_BALANCE_PERCENTAGE=$((100 * LN_LOCAL_BALANCE / LN_TOTAL_BALANCE))
|
|
LN_REMOTE_BALANCE_PERCENTAGE=$((100 * LN_REMOTE_BALANCE / LN_TOTAL_BALANCE))
|
|
fi
|
|
|
|
if [ $ONCHAIN_FUNDS_TOTAL -ne 0 ]; then # prevent division by zero error
|
|
ONCHAIN_FUNDS_CONFIRMED_PERCENTAGE=$((100 * ONCHAIN_FUNDS_CONFIRMED / ONCHAIN_FUNDS_TOTAL))
|
|
ONCHAIN_FUNDS_UNCONFIRMED_PERCENTAGE=$((100 * ONCHAIN_FUNDS_UNCONFIRMED / ONCHAIN_FUNDS_TOTAL))
|
|
fi
|
|
|
|
TOTAL_BALANCE=$((ONCHAIN_FUNDS_TOTAL + LN_LOCAL_BALANCE))
|
|
|
|
CONTROL_SUM=$((\
|
|
ONCHAIN_FUNDS_TOTAL \
|
|
+ ONCHAIN_TX_FEES \
|
|
+ LN_LOCAL_BALANCE \
|
|
+ LN_COMMIT_FEES \
|
|
- LN_INVOICES \
|
|
+ LN_PAYMENTS \
|
|
+ LN_PAYMENTS_FEES \
|
|
- LN_EARNED_FEES_IN_SATS
|
|
))
|
|
|
|
PROFIT_AND_LOSS=$((LN_EARNED_FEES_IN_SATS - ONCHAIN_TX_FEES))
|
|
LN_SPEND=$((LN_PAYMENTS + LN_PAYMENTS_FEES))
|
|
|
|
##############################################################################
|
|
# Sats to BTC
|
|
##############################################################################
|
|
|
|
TOTAL_BALANCE_BTC=$(printf %.8f\\n "$((TOTAL_BALANCE))e-8")
|
|
LN_LOCAL_BALANCE_BTC=$(printf %.8f\\n "$((LN_LOCAL_BALANCE))e-8")
|
|
LN_REMOTE_BALANCE_BTC=$(printf %.8f\\n "$((LN_REMOTE_BALANCE))e-8")
|
|
LN_TOTAL_BALANCE_BTC=$(printf %.8f\\n "$((LN_TOTAL_BALANCE))e-8")
|
|
|
|
##############################################################################
|
|
# PRINT
|
|
##############################################################################
|
|
|
|
echo -e "\n${YELLOW}LN BALANCE${RESET}"
|
|
echo -e "LOCAL REMOTE TOTAL "
|
|
echo -e "---------------- ---------------- ----------------"
|
|
echo -e "$(printf %11s "$LN_LOCAL_BALANCE") sats $(printf %11s "$LN_REMOTE_BALANCE") sats $(printf %11s $LN_TOTAL_BALANCE) sats"
|
|
if [ $LN_TOTAL_BALANCE -ne 0 ]; then
|
|
echo -e "$(printf %11s "$LN_LOCAL_BALANCE_BTC") BTC $(printf %11s "$LN_REMOTE_BALANCE_BTC") BTC $(printf %11s "$LN_TOTAL_BALANCE_BTC") BTC"
|
|
echo -e "$(printf %11s $LN_LOCAL_BALANCE_PERCENTAGE) % $(printf %11s $LN_REMOTE_BALANCE_PERCENTAGE) % $(printf %11s $TOTAL_BALANCE_PERCENTAGE) %"
|
|
fi
|
|
|
|
echo -e "\n${YELLOW}ON-CHAIN BALANCE${RESET}"
|
|
echo -e "CONFIRMED UNCONFIRMED TOTAL "
|
|
echo -e "---------------- ---------------- ----------------"
|
|
echo -e "$(printf %11s "$ONCHAIN_FUNDS_CONFIRMED") sats $(printf %11s "$ONCHAIN_FUNDS_UNCONFIRMED") sats $(printf %11s "$ONCHAIN_FUNDS_TOTAL") sats"
|
|
if [ $ONCHAIN_FUNDS_TOTAL -ne 0 ]; then
|
|
echo -e "$(printf %11s "$ONCHAIN_FUNDS_CONFIRMED_BTC") BTC $(printf %11s "$ONCHAIN_FUNDS_UNCONFIRMED_BTC") BTC $(printf %11s "$ONCHAIN_FUNDS_TOTAL_BTC") BTC"
|
|
echo -e "$(printf %11s $ONCHAIN_FUNDS_CONFIRMED_PERCENTAGE) % $(printf %11s $ONCHAIN_FUNDS_UNCONFIRMED_PERCENTAGE) % $(printf %11s $TOTAL_BALANCE_PERCENTAGE) %"
|
|
fi
|
|
|
|
echo -e "\n${YELLOW}OWNED BALANCE [LN + ON-CHAIN]${RESET}"
|
|
echo -e "$(printf %11s "$TOTAL_BALANCE") sats"
|
|
echo -e "$(printf %11s "$TOTAL_BALANCE_BTC") BTC"
|
|
echo -e ""
|
|
|
|
echo -e "\n${YELLOW}AUDIT${CYAN}*${RESET}"
|
|
echo -e "---------------------------------------------"
|
|
echo -e "ON-CHAIN CONFIRMED $(printf %10s "$ONCHAIN_FUNDS_CONFIRMED") sats"
|
|
echo -e "ON-CHAIN UNCONFIRMED $(printf %10s "$ONCHAIN_FUNDS_UNCONFIRMED") sats"
|
|
echo -e "ON-CHAIN FEES ${RED}$(printf %10s "-$ONCHAIN_TX_FEES")${RESET} sats"
|
|
echo -e "---------------------------------------------"
|
|
echo -e "LN LOCAL BALANCE $(printf %10s "$LN_LOCAL_BALANCE") sats"
|
|
echo -e "LN LOCKED IN COMMIT FEES $(printf %10s "$LN_COMMIT_FEES") sats"
|
|
echo -e "LN INVOICES (RECEIVED) $(printf %10s "$LN_INVOICES") sats"
|
|
echo -e "LN PAYMENTS (PAID) $(printf %10s "-$LN_PAYMENTS") sats"
|
|
echo -e "LN PAYMENTS FEES $(printf %10s "-$LN_PAYMENTS_FEES") sats"
|
|
echo -e "LN EARNED (FORWARD) FEES ${GREEN}$(printf %10s $LN_EARNED_FEES_IN_SATS)${RESET} sats"
|
|
echo -e "---------------------------------------------"
|
|
|
|
if [ $PROFIT_AND_LOSS -gt 0 ]; then
|
|
COLORED_PNL=${GREEN}$(printf %10s "$PROFIT_AND_LOSS")${RESET}
|
|
else
|
|
COLORED_PNL=${RED}$(printf %10s "$PROFIT_AND_LOSS")${RESET}
|
|
fi
|
|
|
|
echo -e "${YELLOW}PROFIT AND LOSS${RESET} $COLORED_PNL sats"
|
|
echo -e "---------------------------------------------"
|
|
echo -e "CONTROL SUM${CYAN}**${RESET} $(printf %10s $CONTROL_SUM) sats"
|
|
echo -e "LN SPEND $(printf %10s $LN_SPEND) sats"
|
|
echo -e ""
|
|
echo -e "${CYAN} * Pending channels are ignored.${RESET}"
|
|
echo -e "${CYAN}** CONTROL SUM is supposed to match amount"
|
|
echo -e " of funds that had been put onto this node"
|
|
echo -e " (can be off few sats due rounding).\e${RESET}"
|
|
echo -e ""
|