mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-20 13:54:36 +01:00
daemon: wire in payment.
This actually uses the accept-payment data to make payments. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
5027410ab1
commit
ba9df99770
2 changed files with 68 additions and 4 deletions
|
@ -10,6 +10,7 @@
|
|||
#include "lightningd.h"
|
||||
#include "log.h"
|
||||
#include "names.h"
|
||||
#include "payment.h"
|
||||
#include "peer.h"
|
||||
#include "permute_tx.h"
|
||||
#include "protobuf_convert.h"
|
||||
|
@ -2167,6 +2168,7 @@ void peer_both_committed_to(struct peer *peer,
|
|||
{
|
||||
size_t i, n = tal_count(changes);
|
||||
|
||||
/* All this, simply for debugging. */
|
||||
for (i = 0; i < n; i++) {
|
||||
u64 htlc_id;
|
||||
const char *type, *owner;
|
||||
|
@ -2213,6 +2215,44 @@ void peer_both_committed_to(struct peer *peer,
|
|||
log_debug(peer->log, "Both committed to %s of %s HTLC %"PRIu64,
|
||||
type, owner, htlc_id);
|
||||
}
|
||||
|
||||
/* We actually only respond to changes they made. */
|
||||
if (side == OURS)
|
||||
return;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
struct payment *payment;
|
||||
|
||||
switch (changes[i].type) {
|
||||
case HTLC_ADD:
|
||||
payment = find_payment(peer->dstate, &changes[i].add.htlc.rhash);
|
||||
if (payment) {
|
||||
if (changes[i].add.htlc.msatoshis != payment->msatoshis) {
|
||||
log_unusual(peer->log, "Got payment for %"PRIu64
|
||||
" not %"PRIu64 " satoshi!",
|
||||
changes[i].add.htlc.msatoshis,
|
||||
payment->msatoshis);
|
||||
command_htlc_fail(peer,
|
||||
changes[i].add.htlc.id);
|
||||
} else {
|
||||
log_info(peer->log,
|
||||
"Immediately resolving HTLC %"PRIu64,
|
||||
changes[i].add.htlc.id);
|
||||
command_htlc_fulfill(peer,
|
||||
changes[i].add.htlc.id,
|
||||
&payment->r);
|
||||
}
|
||||
}
|
||||
/* FIXME: Otherwise, route. */
|
||||
break;
|
||||
case HTLC_FULFILL:
|
||||
/* FIXME: resolve_one_htlc(peer, id, preimage); */
|
||||
break;
|
||||
case HTLC_FAIL:
|
||||
/* FIXME: Route failure. */
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Sets up the initial cstate and commit tx for both nodes: false if
|
||||
|
|
|
@ -416,10 +416,6 @@ EXPIRY=$(( $(date +%s) + 1000))
|
|||
SECRET=1de08917a61cb2b62ed5937d38577f6a7bfe59c176781c6d8128018e8b5ccdfd
|
||||
RHASH=`lcli1 dev-rhash $SECRET | sed 's/.*"\([0-9a-f]*\)".*/\1/'`
|
||||
|
||||
# Tell node2 about payment: hash should be the same.
|
||||
RHASH2=`lcli2 accept-payment $HTLC_AMOUNT $SECRET | sed 's/.*"\([0-9a-f]*\)".*/\1/'`
|
||||
[ "$RHASH" = "$RHASH2" ]
|
||||
|
||||
lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
|
||||
|
||||
if [ -n "$MANUALCOMMIT" ]; then
|
||||
|
@ -724,6 +720,34 @@ A_AMOUNT=$(($A_AMOUNT - $HTLC_AMOUNT * 2))
|
|||
B_AMOUNT=$(($B_AMOUNT + $HTLC_AMOUNT * 2))
|
||||
check_status $A_AMOUNT $A_FEE "" $B_AMOUNT $B_FEE ""
|
||||
|
||||
# Now, use automatic payment redemption
|
||||
RHASH3=`lcli2 accept-payment $HTLC_AMOUNT | sed 's/.*"\([0-9a-f]*\)".*/\1/'`
|
||||
|
||||
lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH3
|
||||
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||
|
||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
||||
|
||||
# We transferred amount from A to B.
|
||||
A_AMOUNT=$(($A_AMOUNT - $HTLC_AMOUNT))
|
||||
B_AMOUNT=$(($B_AMOUNT + $HTLC_AMOUNT))
|
||||
check_status $A_AMOUNT $A_FEE "" $B_AMOUNT $B_FEE ""
|
||||
|
||||
# Now, failed payment (didn't pay enough)
|
||||
RHASH4=`lcli2 accept-payment $HTLC_AMOUNT | sed 's/.*"\([0-9a-f]*\)".*/\1/'`
|
||||
|
||||
lcli1 newhtlc $ID2 $(($HTLC_AMOUNT - 1)) $EXPIRY $RHASH4
|
||||
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||
|
||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
||||
|
||||
check lcli2 "getlog | $FGREP 'Got payment for '$(($HTLC_AMOUNT - 1))' not '$HTLC_AMOUNT"
|
||||
check_status $A_AMOUNT $A_FEE "" $B_AMOUNT $B_FEE ""
|
||||
|
||||
lcli1 close $ID2
|
||||
|
||||
# They should be negotiating the close.
|
||||
|
|
Loading…
Add table
Reference in a new issue