You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
4.2 KiB
120 lines
4.2 KiB
#!/bin/bash
|
|
_temp="./download/dialog.$$"
|
|
_error="./.error.out"
|
|
|
|
echo "please wait ..."
|
|
|
|
# load raspiblitz config data (with backup from old config)
|
|
source /mnt/hdd/raspiblitz.conf 2>/dev/null
|
|
if [ ${#network} -eq 0 ]; then network=`cat .network`; fi
|
|
if [ ${#chain} -eq 0 ]; then
|
|
chain=$(${network}-cli -datadir=/home/bitcoin/.${network} getblockchaininfo | jq -r '.chain')
|
|
fi
|
|
|
|
# check if user has money in lightning channels - info about close all
|
|
openChannels=$(lncli --chain=${network} --network=${chain}net listchannels 2>/dev/null | jq '.[] | length')
|
|
if [ ${#openChannels} -eq 0 ]; then
|
|
clear
|
|
echo "*** IMPORTANT **********************************"
|
|
echo "It looks like LND is not responding."
|
|
echo "Still starting up, is locked or is not running?"
|
|
echo "Try later, try reboot or check ./XXdebugLogs.sh"
|
|
echo "************************************************"
|
|
exit 1
|
|
fi
|
|
if [ ${openChannels} -gt 0 ]; then
|
|
dialog --title 'Info' --msgbox 'You still have funds in open Lightning Channels.\nUse CLOSEALL first if you want to cashout all funds.\nNOTICE: Just confirmed on-chain funds can be moved.' 7 58
|
|
echo "please wait ..."
|
|
fi
|
|
|
|
# check if money is waiting to get confirmed
|
|
unconfirmed=$(lncli --chain=${network} --network=${chain}net walletbalance | grep '"unconfirmed_balance"' | cut -d '"' -f4)
|
|
if [ ${unconfirmed} -gt 0 ]; then
|
|
dialog --title 'Info' --msgbox "Still waiting confirmation for ${unconfirmed} sat.\nNOTICE: Just confirmed on-chain funds can be moved." 6 58
|
|
echo "please wait ..."
|
|
fi
|
|
|
|
# get available amount in on-chain wallet
|
|
maxAmount=$(lncli --chain=${network} --network=${chain}net walletbalance | grep '"confirmed_balance"' | cut -d '"' -f4)
|
|
if [ ${maxAmount} -eq 0 ]; then
|
|
dialog --title 'Info' --msgbox "You have 0 moveable funds available.\nNOTICE: Just confirmed on-chain funds can be moved." 6 58
|
|
exit 1
|
|
fi
|
|
|
|
# let user enter the address
|
|
l1="Enter on-chain address to send confirmed funds to:"
|
|
l2="You will send: ${maxAmount} sat"
|
|
l3="Maximal fee: 20000 sat (wil be subtracted)"
|
|
dialog --title "Where to send funds?" \
|
|
--inputbox "$l1\n$l2\n$l3" 8 75 2>$_temp
|
|
if test $? -eq 0
|
|
then
|
|
echo "ok pressed"
|
|
else
|
|
echo "cancel pressed"
|
|
exit 1
|
|
fi
|
|
address=$(cat $_temp | xargs)
|
|
shred $_temp
|
|
if [ ${#address} -eq 0 ]; then
|
|
echo "FAIL - not a valid address (${address})"
|
|
exit 1
|
|
fi
|
|
|
|
# TODO: check address is valid for network and chain
|
|
|
|
clear
|
|
echo "******************************"
|
|
echo "Send on-chain Funds"
|
|
echo "******************************"
|
|
tryAgain=1
|
|
count=1
|
|
while [ ${tryAgain} -eq 1 ]
|
|
do
|
|
sleep 1
|
|
fee=$(($count * 1000))
|
|
amount=$(($maxAmount - $fee))
|
|
echo ""
|
|
echo "TRY #${count} ---> with max fee ${fee} sat:"
|
|
|
|
# execute command
|
|
command="lncli --chain=${network} --network=${chain}net sendcoins --addr ${address} --amt ${amount} --conf_target 3"
|
|
echo "$command"
|
|
result=$($command 2>$_error)
|
|
error=`cat ${_error}`
|
|
#error="sim error: insufficient funds available to construct transaction"
|
|
#result=""
|
|
|
|
if [ ${#result} -eq 0 ]; then
|
|
# fail - retry on 'insufficient funds available to construct transaction'
|
|
echo "FAIL: $error"
|
|
tryAgain=$(echo "${error}" | grep -c 'insufficient funds available to construct transaction')
|
|
if [ ${tryAgain} -eq 0 ]; then
|
|
echo ""
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
echo "FINAL FAIL --> Was not able to send transaction (see error above)"
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
fi
|
|
else
|
|
# success
|
|
echo "$result"
|
|
echo ""
|
|
echo "********************************************************************"
|
|
echo "OK --> send ${amount} sat to address + ${fee} sat fees max"
|
|
echo "********************************************************************"
|
|
tryAgain=0
|
|
fi
|
|
|
|
# abort aftzer 20 tries
|
|
count=$(($count + 1))
|
|
if [ ${count} -gt 20 ]; then
|
|
echo ""
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
echo "FINAL FAIL --> Was not able to send transaction with max 20000 sat"
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
tryAgain=0
|
|
fi
|
|
|
|
done
|
|
exit 1
|
|
echo ""
|
|
|