diff --git a/lightning/src/ln/channel.rs b/lightning/src/ln/channel.rs index 6d1d939aff4..a19d7295f82 100644 --- a/lightning/src/ln/channel.rs +++ b/lightning/src/ln/channel.rs @@ -1778,7 +1778,10 @@ impl Channel { assert!(self.shutdown_scriptpubkey.is_some()); let holder_shutdown_script = self.get_closing_scriptpubkey(); let counterparty_shutdown_script = self.counterparty_shutdown_scriptpubkey.clone().unwrap(); - let funding_outpoint = self.funding_outpoint().into_bitcoin_outpoint(); + + // The closing transaction should always spend from the _original_ funding outpoint + // (NOT the `glue_transaction`). + let funding_outpoint = self.original_funding_outpoint().into_bitcoin_outpoint(); let closing_transaction = ClosingTransaction::new(value_to_holder as u64, value_to_counterparty as u64, holder_shutdown_script, counterparty_shutdown_script, funding_outpoint); (closing_transaction, total_fee_satoshis) @@ -1788,6 +1791,13 @@ impl Channel { self.channel_transaction_parameters.funding_outpoint.unwrap() } + fn original_funding_outpoint(&self) -> OutPoint { + match self.channel_transaction_parameters.original_funding_outpoint { + Some(outpoint) => outpoint, + None => self.funding_outpoint(), + } + } + #[inline] /// Creates a set of keys for build_commitment_transaction to generate a transaction which our /// counterparty will sign (ie DO NOT send signatures over a transaction created by this to