|
|
|
#! /bin/sh -e
|
|
|
|
|
|
|
|
# Wherever we are, we want to be in daemon/test dir.
|
|
|
|
cd `git rev-parse --show-toplevel`/daemon/test
|
|
|
|
|
|
|
|
. scripts/vars.sh
|
|
|
|
. scripts/helpers.sh
|
|
|
|
|
|
|
|
parse_cmdline 2 "$@"
|
|
|
|
setup_lightning 2
|
|
|
|
start_lightningd 2
|
|
|
|
fund_lightningd
|
|
|
|
|
|
|
|
lcli1 connect localhost $PORT2 $FUND_INPUT_TX &
|
|
|
|
|
|
|
|
# Now make it pass anchor (should be in mempool: one block to bury it)
|
|
|
|
check_tx_spend
|
|
|
|
$CLI generate 1
|
|
|
|
|
|
|
|
DO_RECONNECT=$RECONNECT
|
|
|
|
|
|
|
|
check_peerstate lcli1 STATE_NORMAL
|
|
|
|
check_peerstate lcli2 STATE_NORMAL
|
|
|
|
|
|
|
|
A_AMOUNT=$(($AMOUNT - $NO_HTLCS_FEE))
|
|
|
|
A_FEE=$NO_HTLCS_FEE
|
|
|
|
B_AMOUNT=0
|
|
|
|
B_FEE=0
|
|
|
|
check_status $A_AMOUNT $A_FEE "" $B_AMOUNT $B_FEE ""
|
|
|
|
|
|
|
|
# 100k satoshi should cover fees.
|
|
|
|
HTLC_AMOUNT=100000000
|
|
|
|
EXPIRY=$(( $(blockheight) + 10))
|
|
|
|
RHASH3=`lcli2 invoice $HTLC_AMOUNT RHASH3 | sed 's/.*"\([0-9a-f]*\)".*/\1/'`
|
|
|
|
|
|
|
|
lcli2 listinvoice
|
|
|
|
[ "`lcli2 listinvoice | tr -s '\012\011\" ' ' '`" = "[ { label : RHASH3 , rhash : $RHASH3 , msatoshi : $HTLC_AMOUNT, complete : false } ] " ]
|
|
|
|
|
|
|
|
HTLCID3=`lcli1 dev-newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH3 | extract_id`
|
|
|
|
|
|
|
|
# We transferred amount from A to B, but fee now split evenly.
|
|
|
|
A_AMOUNT=$(($A_AMOUNT - $HTLC_AMOUNT + $NO_HTLCS_FEE / 2))
|
|
|
|
B_AMOUNT=$(($B_AMOUNT + $HTLC_AMOUNT - $NO_HTLCS_FEE / 2))
|
|
|
|
A_FEE=$(($NO_HTLCS_FEE / 2))
|
|
|
|
B_FEE=$(($NO_HTLCS_FEE / 2))
|
|
|
|
check_status $A_AMOUNT $A_FEE "" $B_AMOUNT $B_FEE ""
|
|
|
|
|
|
|
|
[ "`lcli2 listinvoice | tr -s '\012\011\" ' ' '`" = "[ { label : RHASH3 , rhash : $RHASH3 , msatoshi : $HTLC_AMOUNT, complete : true } ] " ]
|
|
|
|
|
|
|
|
# Now, failed payment (didn't pay enough)
|
|
|
|
RHASH4=`lcli2 invoice $HTLC_AMOUNT RHASH4 | sed 's/.*"\([0-9a-f]*\)".*/\1/'`
|
|
|
|
|
|
|
|
# Shouldn't have this already.
|
|
|
|
if lcli2 getlog | $FGREP 'Short payment for'; then exit 1; fi
|
|
|
|
|
|
|
|
# Test listinvoice with both, or subset (either order possible!)
|
|
|
|
INVOICES=`lcli2 listinvoice | tr -s '\012\011\" ' ' '`
|
|
|
|
[ "$INVOICES" = "[ { label : RHASH3 , rhash : $RHASH3 , msatoshi : $HTLC_AMOUNT, complete : true }, { label : RHASH4 , rhash : $RHASH4 , msatoshi : $HTLC_AMOUNT, complete : false } ] " ] || [ "$INVOICES" = "[ { label : RHASH4 , rhash : $RHASH4 , msatoshi : $HTLC_AMOUNT, complete : false }, { label : RHASH3 , rhash : $RHASH3 , msatoshi : $HTLC_AMOUNT, complete : true } ] " ]
|
|
|
|
[ "`lcli2 listinvoice RHASH3 | tr -s '\012\011\" ' ' '`" = "[ { label : RHASH3 , rhash : $RHASH3 , msatoshi : $HTLC_AMOUNT, complete : true } ] " ]
|
|
|
|
[ "`lcli2 listinvoice RHASH4 | tr -s '\012\011\" ' ' '`" = "[ { label : RHASH4 , rhash : $RHASH4 , msatoshi : $HTLC_AMOUNT, complete : false } ] " ]
|
|
|
|
|
|
|
|
HTLCID4=`lcli1 dev-newhtlc $ID2 $(($HTLC_AMOUNT - 1)) $EXPIRY $RHASH4 | extract_id`
|
|
|
|
|
|
|
|
check lcli2 "getlog | $FGREP 'Short payment for'"
|
|
|
|
check_status $A_AMOUNT $A_FEE "" $B_AMOUNT $B_FEE ""
|
|
|
|
|
|
|
|
lcli2 delinvoice RHASH4
|
|
|
|
if lcli2 delinvoice RHASH3 >/dev/null; then
|
|
|
|
echo "Should not be able to delete completed invoice!" >&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
lcli1 close $ID2
|
|
|
|
|
|
|
|
# They should be negotiate the close.
|
|
|
|
check_tx_spend
|
|
|
|
|
|
|
|
# Bury it in "forever" blocks.
|
|
|
|
$CLI generate 10
|
|
|
|
|
|
|
|
check_no_peers lcli1
|
|
|
|
check_no_peers lcli2
|
|
|
|
|
|
|
|
lcli1 stop
|
|
|
|
lcli2 stop
|
|
|
|
|
|
|
|
all_ok
|