@ -139,6 +139,21 @@ check()
done
}
check_balance_single( )
{
lcli = " $1 "
us_pay = $2
us_fee = $3
them_pay = $4
them_fee = $5
if check " $lcli getpeers | tr -s '\012\011\" ' ' ' | $FGREP \"our_amount : $us_pay , our_fee : $us_fee , their_amount : $them_pay , their_fee : $them_fee ,\" " ; then :; else
echo Cannot find $lcli output: " our_amount : $us_pay , our_fee : $us_fee , their_amount : $them_pay , their_fee : $them_fee , " >& 2
$lcli getpeers | tr -s '\012\011" ' ' ' >& 2
return 1
fi
}
check_status_single( )
{
lcli = " $1 "
@ -149,9 +164,11 @@ check_status_single()
them_fee = $6
them_htlcs = " $7 "
if check " $lcli getpeers | tr -s '\012\011\" ' ' ' | $FGREP \"our_amount : $us_pay , our_fee : $us_fee , their_amount : $them_pay , their_fee : $them_fee , our_htlcs : [ $us_htlcs ], their_htlcs : [ $them_htlcs ]\" " ; then :; else
echo Cannot find $lcli output: '"our_amount" : ' $us_pay ', "our_fee" : ' $us_fee ', "their_amount" : ' $them_pay ', "their_fee" : ' $them_fee ', "our_htlcs" : [ ' " $us_htlcs " '], "their_htlcs" : [ ' " $them_htlcs " ']' >& 2
$lcli getpeers | tr -s '\012\011 ' ' ' >& 2
check_balance_single " $lcli " $us_pay $us_fee $them_pay $them_fee
if $lcli getpeers | tr -s '\012\011" ' ' ' | $FGREP " our_htlcs : [ $us_htlcs ], their_htlcs : [ $them_htlcs ] " ; then :; else
echo Cannot find $lcli output: " our_htlcs : [ $us_htlcs ], their_htlcs : [ $them_htlcs ] " >& 2
$lcli getpeers | tr -s '\012\011" ' ' ' >& 2
return 1
fi
}
@ -409,7 +426,7 @@ if [ -n "$DIFFERENT_FEES" ]; then
lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
[ ! -n " $MANUALCOMMIT " ] || lcli1 commit $ID2
[ ! -n " $MANUALCOMMIT " ] || lcli2 commit $ID1
check_status_single lcli2 0 0 "" $(( $AMOUNT - $HTLC_AMOUNT - $ONE_HTLCS_FEE2 )) $(( $ONE_HTLCS_FEE2 )) '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH '" } '
check_status_single lcli2 0 0 "" $(( $AMOUNT - $HTLC_AMOUNT - $ONE_HTLCS_FEE2 )) $(( $ONE_HTLCS_FEE2 )) " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH } "
lcli2 fulfillhtlc $ID1 $SECRET
[ ! -n " $MANUALCOMMIT " ] || lcli2 commit $ID1
[ ! -n " $MANUALCOMMIT " ] || lcli1 commit $ID2
@ -470,7 +487,7 @@ if [ -n "$MANUALCOMMIT" ]; then
A_FEE = $(( $A_FEE + $EXTRA_FEE ))
# Node 2 has it committed.
check_status_single lcli2 $B_AMOUNT $B_FEE "" $A_AMOUNT $A_FEE '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH '" } '
check_status_single lcli2 $B_AMOUNT $B_FEE "" $A_AMOUNT $A_FEE " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH } "
# There should be no "both committed" here yet
if lcli1 getlog debug | $FGREP "Both committed" ; then
@ -494,7 +511,7 @@ else
fi
# Both should have committed tx.
check_status $A_AMOUNT $A_FEE '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH '" } ' $B_AMOUNT $B_FEE ""
check_status $A_AMOUNT $A_FEE " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH } " $B_AMOUNT $B_FEE ""
if [ -n " $STEAL " ] ; then
STEAL_TX = ` $LCLI1 dev-signcommit $ID2 | cut -d\" -f4`
@ -515,7 +532,7 @@ if [ -n "$DUMP_ONCHAIN" ]; then
check_peerstate lcli2 STATE_CLOSE_ONCHAIN_THEIR_UNILATERAL
# both still know about htlc
check_status $A_AMOUNT $A_FEE '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH '" } ' $B_AMOUNT $B_FEE ""
check_status $A_AMOUNT $A_FEE " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH } " $B_AMOUNT $B_FEE ""
# Generate 6 blocks so CSV timeout has expired.
$CLI generate 6
@ -579,7 +596,7 @@ lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
# Check channel status
A_AMOUNT = $(( $A_AMOUNT - $EXTRA_FEE - $HTLC_AMOUNT ))
A_FEE = $(( $A_FEE + $EXTRA_FEE ))
check_status $A_AMOUNT $A_FEE '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH '" } ' $B_AMOUNT $B_FEE ""
check_status $A_AMOUNT $A_FEE " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH } " $B_AMOUNT $B_FEE ""
lcli2 failhtlc $ID1 $RHASH
[ ! -n " $MANUALCOMMIT " ] || lcli2 commit $ID1
@ -599,7 +616,7 @@ lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
# Check channel status
A_AMOUNT = $(( $A_AMOUNT - $EXTRA_FEE - $HTLC_AMOUNT ))
A_FEE = $(( $A_FEE + $EXTRA_FEE ))
check_status $A_AMOUNT $A_FEE '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH '" } ' $B_AMOUNT $B_FEE ""
check_status $A_AMOUNT $A_FEE " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH } " $B_AMOUNT $B_FEE ""
# Make sure node1 accepts the expiry packet.
while [ $( blockheight) != $EXPIRY ] ; do
@ -650,7 +667,7 @@ lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
[ ! -n " $MANUALCOMMIT " ] || lcli1 commit $ID2
[ ! -n " $MANUALCOMMIT " ] || lcli2 commit $ID1
check_status $(( $A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE )) $(( $A_FEE + $EXTRA_FEE )) '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH '" } ' $B_AMOUNT $B_FEE ""
check_status $(( $A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE )) $(( $A_FEE + $EXTRA_FEE )) " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH } " $B_AMOUNT $B_FEE ""
lcli2 fulfillhtlc $ID1 $SECRET
[ ! -n " $MANUALCOMMIT " ] || lcli2 commit $ID1
@ -676,7 +693,7 @@ lcli2 newhtlc $ID1 $HTLC_AMOUNT $EXPIRY $RHASH2
[ ! -n " $MANUALCOMMIT " ] || lcli2 commit $ID1
[ ! -n " $MANUALCOMMIT " ] || lcli1 commit $ID2
check_status $(( $A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE )) $(( $A_FEE + $EXTRA_FEE )) '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH '" } ' $(( $B_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE )) $(( $B_FEE + $EXTRA_FEE )) '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH2 '" } '
check_status $(( $A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE )) $(( $A_FEE + $EXTRA_FEE )) " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH } " $(( $B_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE )) $(( $B_FEE + $EXTRA_FEE )) " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH2 } "
if [ -n " $CLOSE_WITH_HTLCS " ] ; then
# Now begin close
@ -731,7 +748,7 @@ lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
# Make sure node1 sends commit (in the background, since it will block!)
[ ! -n " $MANUALCOMMIT " ] || lcli1 commit $ID2 &
# node2 will consider this committed.
check_status_single lcli2 $(( $B_AMOUNT - $EXTRA_FEE / 2 )) $(( $B_FEE + $EXTRA_FEE / 2 )) "" $(( $A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE / 2 )) $(( $A_FEE + $EXTRA_FEE / 2 )) '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH '" } '
check_status_single lcli2 $(( $B_AMOUNT - $EXTRA_FEE / 2 )) $(( $B_FEE + $EXTRA_FEE / 2 )) "" $(( $A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE / 2 )) $(( $A_FEE + $EXTRA_FEE / 2 )) " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH } "
# Now send another offer, and enable node2 output.
lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH2
@ -742,7 +759,7 @@ lcli2 dev-output $ID1 true
[ ! -n " $MANUALCOMMIT " ] || lcli2 commit $ID1
# Both sides should be committed to htlcs
check_status $(( $A_AMOUNT - $HTLC_AMOUNT * 2 - $EXTRA_FEE )) $(( $A_FEE + $EXTRA_FEE )) '{ "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH '" }, { "msatoshis" : ' $HTLC_AMOUNT ', "expiry" : { "block" : ' $EXPIRY ' }, "rhash" : "' $RHASH2 '" } ' $(( $B_AMOUNT - $EXTRA_FEE )) $(( $B_FEE + $EXTRA_FEE )) ""
check_status $(( $A_AMOUNT - $HTLC_AMOUNT * 2 - $EXTRA_FEE )) $(( $A_FEE + $EXTRA_FEE )) " { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH }, { msatoshis : $HTLC_AMOUNT , expiry : { block : $EXPIRY }, rhash : $RHASH2 } " $(( $B_AMOUNT - $EXTRA_FEE )) $(( $B_FEE + $EXTRA_FEE )) ""
# Node2 collects the HTLCs.
lcli2 fulfillhtlc $ID1 $SECRET