X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Fchan_utils.rs;h=fd27d2308664469034564691395c263adb1808bb;hb=b66e3c53768f6bc7bc43064f1818051d22477c63;hp=d570347fef879af540cdfea9f5a68e9b22f3f57f;hpb=1d9a70952958bc02f426f1a04a1cfcc4bc6b0cff;p=rust-lightning diff --git a/lightning/src/ln/chan_utils.rs b/lightning/src/ln/chan_utils.rs index d570347f..fd27d230 100644 --- a/lightning/src/ln/chan_utils.rs +++ b/lightning/src/ln/chan_utils.rs @@ -829,7 +829,6 @@ pub fn get_anchor_redeemscript(funding_pubkey: &PublicKey) -> Script { .into_script() } -#[cfg(anchors)] /// Locates the output with an anchor script paying to `funding_pubkey` within `commitment_tx`. pub(crate) fn get_anchor_output<'a>(commitment_tx: &'a Transaction, funding_pubkey: &PublicKey) -> Option<(u32, &'a TxOut)> { let anchor_script = chan_utils::get_anchor_redeemscript(funding_pubkey).to_v0_p2wsh(); @@ -939,7 +938,7 @@ impl Readable for ChannelTransactionParameters { let mut is_outbound_from_holder = RequiredWrapper(None); let mut counterparty_parameters = None; let mut funding_outpoint = None; - let mut legacy_deserialization_prevention_marker: Option<()> = None; + let mut _legacy_deserialization_prevention_marker: Option<()> = None; let mut channel_type_features = None; read_tlv_fields!(reader, { @@ -948,10 +947,14 @@ impl Readable for ChannelTransactionParameters { (4, is_outbound_from_holder, required), (6, counterparty_parameters, option), (8, funding_outpoint, option), - (10, legacy_deserialization_prevention_marker, option), + (10, _legacy_deserialization_prevention_marker, option), (11, channel_type_features, option), }); + let mut additional_features = ChannelTypeFeatures::empty(); + additional_features.set_anchors_nonzero_fee_htlc_tx_required(); + chain::package::verify_channel_type_features(&channel_type_features, Some(&additional_features))?; + Ok(Self { holder_pubkeys: holder_pubkeys.0.unwrap(), holder_selected_contest_delay: holder_selected_contest_delay.0.unwrap(), @@ -1360,7 +1363,7 @@ impl Readable for CommitmentTransaction { let mut keys = RequiredWrapper(None); let mut built = RequiredWrapper(None); _init_tlv_field_var!(htlcs, vec_type); - let mut legacy_deserialization_prevention_marker: Option<()> = None; + let mut _legacy_deserialization_prevention_marker: Option<()> = None; let mut channel_type_features = None; read_tlv_fields!(reader, { @@ -1371,10 +1374,14 @@ impl Readable for CommitmentTransaction { (8, keys, required), (10, built, required), (12, htlcs, vec_type), - (14, legacy_deserialization_prevention_marker, option), + (14, _legacy_deserialization_prevention_marker, option), (15, channel_type_features, option), }); + let mut additional_features = ChannelTypeFeatures::empty(); + additional_features.set_anchors_nonzero_fee_htlc_tx_required(); + chain::package::verify_channel_type_features(&channel_type_features, Some(&additional_features))?; + Ok(Self { commitment_number: commitment_number.0.unwrap(), to_broadcaster_value_sat: to_broadcaster_value_sat.0.unwrap(),