From 5cc321594d8a2fa2970dc53dac8a7ef022123ac9 Mon Sep 17 00:00:00 2001 From: Elias Rohrer Date: Wed, 27 Mar 2024 11:43:55 +0100 Subject: [PATCH] Pull anchor check into helper function --- lightning/src/ln/chan_utils.rs | 5 +++++ lightning/src/sign/mod.rs | 9 +++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lightning/src/ln/chan_utils.rs b/lightning/src/ln/chan_utils.rs index c002dfaea..b7676ddff 100644 --- a/lightning/src/ln/chan_utils.rs +++ b/lightning/src/ln/chan_utils.rs @@ -852,6 +852,11 @@ impl ChannelTransactionParameters { self.counterparty_parameters.is_some() && self.funding_outpoint.is_some() } + /// Whether the channel supports zero-fee HTLC transaction anchors. + pub(crate) fn supports_anchors(&self) -> bool { + self.channel_type_features.supports_anchors_zero_fee_htlc_tx() + } + /// Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters, /// given that the holder is the broadcaster. /// diff --git a/lightning/src/sign/mod.rs b/lightning/src/sign/mod.rs index 2a5d19efd..7b9dba0dc 100644 --- a/lightning/src/sign/mod.rs +++ b/lightning/src/sign/mod.rs @@ -156,7 +156,7 @@ impl StaticPaymentOutputDescriptor { pub fn witness_script(&self) -> Option { self.channel_transaction_parameters.as_ref() .and_then(|channel_params| - if channel_params.channel_type_features.supports_anchors_zero_fee_htlc_tx() { + if channel_params.supports_anchors() { let payment_point = channel_params.holder_pubkeys.payment_point; Some(chan_utils::get_to_countersignatory_with_anchors_redeemscript(&payment_point)) } else { @@ -169,9 +169,7 @@ impl StaticPaymentOutputDescriptor { /// Note: If you have the grind_signatures feature enabled, this will be at least 1 byte /// shorter. pub fn max_witness_length(&self) -> u64 { - if self.channel_transaction_parameters.as_ref() - .map(|channel_params| channel_params.channel_type_features.supports_anchors_zero_fee_htlc_tx()) - .unwrap_or(false) + if self.channel_transaction_parameters.as_ref().map_or(false, |p| p.supports_anchors()) { let witness_script_weight = 1 /* pubkey push */ + 33 /* pubkey */ + 1 /* OP_CHECKSIGVERIFY */ + 1 /* OP_1 */ + 1 /* OP_CHECKSEQUENCEVERIFY */; @@ -356,8 +354,7 @@ impl SpendableOutputDescriptor { if !output_set.insert(descriptor.outpoint) { return Err(()); } let sequence = if descriptor.channel_transaction_parameters.as_ref() - .map(|channel_params| channel_params.channel_type_features.supports_anchors_zero_fee_htlc_tx()) - .unwrap_or(false) + .map_or(false, |p| p.supports_anchors()) { Sequence::from_consensus(1) } else { -- 2.39.5