Fix: use our_to_self_delay in check_spend_remote_htlc
authorAntoine Riard <ariard@student.42.fr>
Fri, 19 Jul 2019 21:57:17 +0000 (17:57 -0400)
committerAntoine Riard <ariard@student.42.fr>
Tue, 23 Jul 2019 20:23:34 +0000 (16:23 -0400)
We were previously using their_to_self_delay to regenerate scripts for
spending remote revoked htlc transactions, and that's a bug.

Their_to_self_delay is delay enforced by peer upon outputs returning
funds back to us.

Our_to_self_delay is delay enforced by us upon outputs returning funds
back to peer.

src/ln/channelmonitor.rs

index 5dddd1e1557db9e9300ba9cf8d65c086bf2702bc..2c0a058043d580889acf20f278bc3a9ef8b71219 100644 (file)
@@ -1768,7 +1768,7 @@ impl ChannelMonitor {
                        None => return (None, None),
                        Some(their_delayed_payment_base_key) => ignore_error!(chan_utils::derive_public_key(&self.secp_ctx, &per_commitment_point, &their_delayed_payment_base_key)),
                };
-               let redeemscript = chan_utils::get_revokeable_redeemscript(&revocation_pubkey, self.their_to_self_delay.unwrap(), &delayed_key);
+               let redeemscript = chan_utils::get_revokeable_redeemscript(&revocation_pubkey, self.our_to_self_delay, &delayed_key);
                let revokeable_p2wsh = redeemscript.to_v0_p2wsh();
                let htlc_txid = tx.txid(); //TODO: This is gonna be a performance bottleneck for watchtowers!