From f4fe42e9771158db32ada8d46ace20c4de1b195f Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 18 Aug 2016 14:25:13 +0930 Subject: [PATCH] commit_tx: more debugging. Sometimes you need a bigger hammer. Signed-off-by: Rusty Russell --- daemon/commit_tx.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/daemon/commit_tx.c b/daemon/commit_tx.c index 1816f0783..2e4058fe2 100644 --- a/daemon/commit_tx.c +++ b/daemon/commit_tx.c @@ -7,11 +7,14 @@ #include "commit_tx.h" #include "htlc.h" #include "lightningd.h" +#include "log.h" #include "overflows.h" #include "peer.h" #include "permute_tx.h" #include "remove_dust.h" +#include "utils.h" #include +#include u8 *wscript_for_htlc(const tal_t *ctx, const struct peer *peer, @@ -142,6 +145,17 @@ struct bitcoin_tx *create_commit_tx(const tal_t *ctx, /* Now create commitment tx: one input, two outputs (plus htlcs) */ tx = bitcoin_tx(ctx, 1, 2 + count_htlcs(&peer->htlcs, committed_flag)); + log_debug(peer->log, "Creating commitment tx:"); + log_add_struct(peer->log, " rhash = %s", struct sha256, rhash); + log_add_struct(peer->log, " My finalkey = %s", struct pubkey, + &peer->local.finalkey); + log_add_struct(peer->log, " Their finalkey = %s", struct pubkey, + &peer->remote.finalkey); + log_add_struct(peer->log, " My locktime = %s", struct rel_locktime, + &peer->local.locktime); + log_add_struct(peer->log, " Their locktime = %s", struct rel_locktime, + &peer->remote.locktime); + /* Our input spends the anchor tx output. */ tx->input[0].txid = peer->anchor.txid; tx->input[0].index = peer->anchor.index; @@ -152,10 +166,26 @@ struct bitcoin_tx *create_commit_tx(const tal_t *ctx, side, NULL), cstate->side[OURS].pay_msat / 1000, &total); + if (pays_to[LOCAL]) + log_debug(peer->log, "Pays %u to local: %s", + cstate->side[OURS].pay_msat / 1000, + tal_hexstr(tx, tx->output[tx->output_count-1].script, + tx->output[tx->output_count-1].script_length)); + else + log_debug(peer->log, "DOES NOT pay %u to local", + cstate->side[OURS].pay_msat / 1000); pays_to[REMOTE] = add_output(tx, commit_output_to_them(tx, peer, rhash, side, NULL), cstate->side[THEIRS].pay_msat / 1000, &total); + if (pays_to[REMOTE]) + log_debug(peer->log, "Pays %u to remote: %s", + cstate->side[THEIRS].pay_msat / 1000, + tal_hexstr(tx, tx->output[tx->output_count-1].script, + tx->output[tx->output_count-1].script_length)); + else + log_debug(peer->log, "DOES NOT pay %u to remote", + cstate->side[THEIRS].pay_msat / 1000); /* If their tx doesn't pay to them, or our tx doesn't pay to us... */ *otherside_only = !pays_to[side]; @@ -171,8 +201,19 @@ struct bitcoin_tx *create_commit_tx(const tal_t *ctx, wscript = wscript_for_htlc(tx, peer, h, rhash, side); /* If we pay any HTLC, it's txout is not just to other side. */ if (add_output(tx, scriptpubkey_p2wsh(tx, wscript), - h->msatoshis / 1000, &total)) + h->msatoshis / 1000, &total)) { *otherside_only = false; + log_debug(peer->log, "Pays %"PRIu64" to htlc %"PRIu64, + h->msatoshis / 1000, h->id); + log_add_struct(peer->log, " expiry %s", + struct abs_locktime, &h->expiry); + log_add_struct(peer->log, " rhash %s", struct sha256, + &h->rhash); + log_debug(peer->log, "Script: %s", + tal_hexstr(tx, wscript, tal_count(wscript))); + } else + log_debug(peer->log, "DOES NOT pay %"PRIu64" to htlc %"PRIu64, + h->msatoshis / 1000, h->id); } assert(total <= peer->anchor.satoshis);