2018-08-23 17:59:35 +02:00
#!/bin/bash
2018-08-23 18:13:31 +02:00
_temp = " ./download/dialog. $$ "
_error = "./.error.out"
2018-08-23 17:59:35 +02:00
2018-12-03 17:02:32 +01:00
echo "please wait ..."
2018-12-03 16:16:12 +01:00
# 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
2019-01-25 21:56:24 +01:00
if [ ${# network } -eq 0 ] ; then network = "bitcoin" ; fi
2018-12-03 16:16:12 +01:00
if [ ${# chain } -eq 0 ] ; then
chain = $( ${ network } -cli -datadir= /home/bitcoin/.${ network } getblockchaininfo | jq -r '.chain' )
fi
2018-08-23 17:59:35 +02:00
2018-12-03 16:16:12 +01:00
# check if user has money in lightning channels - info about close all
2018-12-20 20:11:02 +01:00
openChannels = $( lncli --chain= ${ network } --network= ${ chain } net listchannels 2>/dev/null | jq '.[] | length' )
2018-12-03 16:16:12 +01:00
if [ ${# openChannels } -eq 0 ] ; then
2018-12-03 17:02:32 +01:00
clear
2018-12-03 16:16:12 +01:00
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
2018-12-03 17:02:32 +01:00
echo "please wait ..."
2018-12-03 16:16:12 +01:00
fi
2018-08-23 17:59:35 +02:00
2018-12-03 16:16:12 +01:00
# check if money is waiting to get confirmed
2018-12-20 20:11:02 +01:00
unconfirmed = $( lncli --chain= ${ network } --network= ${ chain } net walletbalance | grep '"unconfirmed_balance"' | cut -d '"' -f4)
2018-12-03 16:16:12 +01:00
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
2018-12-03 17:02:32 +01:00
echo "please wait ..."
2018-12-03 16:16:12 +01:00
fi
2018-08-23 17:59:35 +02:00
2018-12-03 16:16:12 +01:00
# get available amount in on-chain wallet
2018-12-20 20:11:02 +01:00
maxAmount = $( lncli --chain= ${ network } --network= ${ chain } net walletbalance | grep '"confirmed_balance"' | cut -d '"' -f4)
2018-12-03 16:44:41 +01:00
if [ ${ maxAmount } -eq 0 ] ; then
2018-12-03 16:16:12 +01:00
dialog --title 'Info' --msgbox "You have 0 moveable funds available.\nNOTICE: Just confirmed on-chain funds can be moved." 6 58
exit 1
fi
2018-08-23 17:59:35 +02:00
# let user enter the address
2018-12-03 20:41:16 +01:00
l1 = "Enter on-chain address to send confirmed funds to:"
2018-12-03 22:09:15 +01:00
l2 = " You will send: ${ maxAmount } sat "
2018-12-03 21:10:36 +01:00
l3 = "Maximal fee: 20000 sat (wil be subtracted)"
2018-08-23 17:59:35 +02:00
dialog --title "Where to send funds?" \
2019-01-16 13:23:54 +01:00
--inputbox " $l1 \n $l2 \n $l3 " 9 75 2>$_temp
2018-12-03 16:59:45 +01:00
if test $? -eq 0
then
echo "ok pressed"
else
echo "cancel pressed"
exit 1
fi
2018-08-23 17:59:35 +02:00
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
2018-08-23 18:29:38 +02:00
2018-08-23 17:59:35 +02:00
clear
echo "******************************"
2018-08-23 18:11:40 +02:00
echo "Send on-chain Funds"
2018-08-23 17:59:35 +02:00
echo "******************************"
2018-12-03 21:10:36 +01:00
tryAgain = 1
count = 1
while [ ${ tryAgain } -eq 1 ]
do
2018-12-03 21:32:29 +01:00
sleep 1
2018-12-03 21:24:02 +01:00
fee = $(( $count * 1000 ))
amount = $(( $maxAmount - $fee ))
echo ""
echo " TRY # ${ count } ---> with max fee ${ fee } sat: "
2018-12-03 21:32:29 +01:00
# execute command
2018-12-20 20:11:02 +01:00
command = " lncli --chain= ${ network } --network= ${ chain } net sendcoins --addr ${ address } --amt ${ amount } --conf_target 3 "
2018-12-03 21:32:29 +01:00
echo " $command "
result = $( $command 2>$_error )
error = ` cat ${ _error } `
#error="sim error: insufficient funds available to construct transaction"
#result=""
2018-12-03 21:10:36 +01:00
if [ ${# result } -eq 0 ] ; then
# fail - retry on 'insufficient funds available to construct transaction'
2018-12-03 21:24:02 +01:00
echo " FAIL: $error "
2018-12-03 21:10:36 +01:00
tryAgain = $( echo " ${ error } " | grep -c 'insufficient funds available to construct transaction' )
2018-12-03 21:24:02 +01:00
if [ ${ tryAgain } -eq 0 ] ; then
2018-12-03 21:34:41 +01:00
echo ""
2018-12-03 21:24:02 +01:00
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "FINAL FAIL --> Was not able to send transaction (see error above)"
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
fi
2018-12-03 21:10:36 +01:00
else
# success
echo " $result "
2018-12-03 21:34:41 +01:00
echo ""
2018-12-03 21:24:02 +01:00
echo "********************************************************************"
echo " OK --> send ${ amount } sat to address + ${ fee } sat fees max "
echo "********************************************************************"
2018-12-03 21:10:36 +01:00
tryAgain = 0
fi
# abort aftzer 20 tries
2018-12-03 21:24:02 +01:00
count = $(( $count + 1 ))
2018-12-03 21:10:36 +01:00
if [ ${ count } -gt 20 ] ; then
echo ""
2018-12-03 21:24:02 +01:00
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
2018-12-03 21:10:36 +01:00
echo "FINAL FAIL --> Was not able to send transaction with max 20000 sat"
2018-12-03 21:24:02 +01:00
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
2018-12-03 21:10:36 +01:00
tryAgain = 0
fi
2018-08-23 17:59:35 +02:00
2018-12-03 21:10:36 +01:00
done
exit 1
2018-08-23 17:59:35 +02:00
echo ""