From: Antoine Riard Date: Thu, 10 Nov 2022 16:01:20 +0000 (-0500) Subject: Increase visibility of protocol-level consts X-Git-Tag: v0.0.113~23^2~2 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=2e4fab028b3d67369c2def60e48d5665a2620ad8;p=rust-lightning Increase visibility of protocol-level consts --- diff --git a/lightning/src/ln/chan_utils.rs b/lightning/src/ln/chan_utils.rs index a8c9dcc82..1af0aae30 100644 --- a/lightning/src/ln/chan_utils.rs +++ b/lightning/src/ln/chan_utils.rs @@ -41,13 +41,20 @@ use core::ops::Deref; use crate::chain; use crate::util::crypto::sign; -pub(crate) const MAX_HTLCS: u16 = 483; -pub(crate) const OFFERED_HTLC_SCRIPT_WEIGHT: usize = 133; -pub(crate) const OFFERED_HTLC_SCRIPT_WEIGHT_ANCHORS: usize = 136; -// The weight of `accepted_htlc_script` can vary in function of its CLTV argument value. We define a -// range that encompasses both its non-anchors and anchors variants. +/// Maximum number of one-way in-flight HTLC (protocol-level value). +pub const MAX_HTLCS: u16 = 483; +/// The weight of a BIP141 witnessScript for a BOLT3's "offered HTLC output" on a commitment transaction, non-anchor variant. +pub const OFFERED_HTLC_SCRIPT_WEIGHT: usize = 133; +/// The weight of a BIP141 witnessScript for a BOLT3's "offered HTLC output" on a commitment transaction, anchor variant. +pub const OFFERED_HTLC_SCRIPT_WEIGHT_ANCHORS: usize = 136; + +/// The weight of a BIP141 witnessScript for a BOLT3's "received HTLC output" can vary in function of its CLTV argument value. +/// We define a range that encompasses both its non-anchors and anchors variants. pub(crate) const MIN_ACCEPTED_HTLC_SCRIPT_WEIGHT: usize = 136; -pub(crate) const MAX_ACCEPTED_HTLC_SCRIPT_WEIGHT: usize = 143; +/// The weight of a BIP141 witnessScript for a BOLT3's "received HTLC output" can vary in function of its CLTV argument value. +/// We define a range that encompasses both its non-anchors and anchors variants. +/// This is the maximum post-anchor value. +pub const MAX_ACCEPTED_HTLC_SCRIPT_WEIGHT: usize = 143; /// Gets the weight for an HTLC-Success transaction. #[inline] @@ -65,18 +72,24 @@ pub fn htlc_timeout_tx_weight(opt_anchors: bool) -> u64 { if opt_anchors { HTLC_TIMEOUT_ANCHOR_TX_WEIGHT } else { HTLC_TIMEOUT_TX_WEIGHT } } +/// Describes the type of HTLC claim as determined by analyzing the witness. #[derive(PartialEq, Eq)] -pub(crate) enum HTLCClaim { +pub enum HTLCClaim { + /// Claims an offered output on a commitment transaction through the timeout path. OfferedTimeout, + /// Claims an offered output on a commitment transaction through the success path. OfferedPreimage, + /// Claims an accepted output on a commitment transaction through the timeout path. AcceptedTimeout, + /// Claims an accepted output on a commitment transaction through the success path. AcceptedPreimage, + /// Claims an offered/accepted output on a commitment transaction through the revocation path. Revocation, } impl HTLCClaim { /// Check if a given input witness attempts to claim a HTLC. - pub(crate) fn from_witness(witness: &Witness) -> Option { + pub fn from_witness(witness: &Witness) -> Option { debug_assert_eq!(OFFERED_HTLC_SCRIPT_WEIGHT_ANCHORS, MIN_ACCEPTED_HTLC_SCRIPT_WEIGHT); if witness.len() < 2 { return None;