From: Matt Corallo Date: Fri, 13 May 2022 18:30:12 +0000 (+0000) Subject: Define a crate-public constant for max fake SCID in blocks offset X-Git-Tag: v0.0.107~13^2~8 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=168b3a51ae024e3abf73112c2acf9f60523c5674;p=rust-lightning Define a crate-public constant for max fake SCID in blocks offset --- diff --git a/lightning/src/util/scid_utils.rs b/lightning/src/util/scid_utils.rs index 8552358c3..676c303bf 100644 --- a/lightning/src/util/scid_utils.rs +++ b/lightning/src/util/scid_utils.rs @@ -79,6 +79,10 @@ pub(crate) mod fake_scid { const MAX_NAMESPACES: u8 = 8; // We allocate 3 bits for the namespace identifier. const NAMESPACE_ID_BITMASK: u8 = 0b111; + const BLOCKS_PER_MONTH: u32 = 144 /* blocks per day */ * 30 /* days per month */; + pub(crate) const MAX_SCID_BLOCKS_FROM_NOW: u32 = BLOCKS_PER_MONTH; + + /// Fake scids are divided into namespaces, with each namespace having its own identifier between /// [0..7]. This allows us to identify what namespace a fake scid corresponds to upon HTLC /// receipt, and handle the HTLC accordingly. The namespace identifier is encrypted when encoded @@ -100,7 +104,6 @@ pub(crate) mod fake_scid { // Ensure we haven't created a namespace that doesn't fit into the 3 bits we've allocated for // namespaces. assert!((*self as u8) < MAX_NAMESPACES); - const BLOCKS_PER_MONTH: u32 = 144 /* blocks per day */ * 30 /* days per month */; let rand_bytes = keys_manager.get_secure_random_bytes(); let segwit_activation_height = segwit_activation_height(genesis_hash); @@ -109,7 +112,7 @@ pub(crate) mod fake_scid { // We want to ensure that this fake channel won't conflict with any transactions we haven't // seen yet, in case `highest_seen_blockheight` is updated before we get full information // about transactions confirmed in the given block. - blocks_since_segwit_activation = blocks_since_segwit_activation.saturating_sub(BLOCKS_PER_MONTH); + blocks_since_segwit_activation = blocks_since_segwit_activation.saturating_sub(MAX_SCID_BLOCKS_FROM_NOW); let rand_for_height = u32::from_be_bytes(rand_bytes[..4].try_into().unwrap()); let fake_scid_height = segwit_activation_height + rand_for_height % (blocks_since_segwit_activation + 1);