@@ -87,7 +87,7 @@ pub(crate) const WALLET_KEYS_SEED_LEN: usize = 64;
8787/// | `log_dir_path` | None |
8888/// | `network` | Bitcoin |
8989/// | `listening_addresses` | None |
90- /// | `node_alias` | None |
90+ /// | `node_alias` | None |
9191/// | `default_cltv_expiry_delta` | 144 |
9292/// | `onchain_wallet_sync_interval_secs` | 80 |
9393/// | `wallet_sync_interval_secs` | 30 |
@@ -113,12 +113,14 @@ pub struct Config {
113113 pub network : Network ,
114114 /// The addresses on which the node will listen for incoming connections.
115115 ///
116- /// **Note**: Node announcements will only be broadcast if the `node_alias` and the
116+ /// **Note**: We will only allow opening and accepting public channels if the `node_alias` and the
117117 /// `listening_addresses` are set.
118118 pub listening_addresses : Option < Vec < SocketAddress > > ,
119- /// The node alias to be used in announcements.
119+ /// The node alias that will be used when broadcasting announcements to the gossip network .
120120 ///
121- /// **Note**: Node announcements will only be broadcast if the `node_alias` and the
121+ /// The provided alias must be a valid UTF-8 string and no longer than 32 bytes in total.
122+ ///
123+ /// **Note**: We will only allow opening and accepting public channels if the `node_alias` and the
122124 /// `listening_addresses` are set.
123125 pub node_alias : Option < NodeAlias > ,
124126 /// The time in-between background sync attempts of the onchain wallet, in seconds.
@@ -276,47 +278,9 @@ pub fn default_config() -> Config {
276278 Config :: default ( )
277279}
278280
279- /// Specifies reasons why a channel cannot be announced.
280- #[ derive( Debug , PartialEq ) ]
281- pub ( crate ) enum ChannelAnnouncementBlocker {
282- /// The node alias is not set.
283- MissingNodeAlias ,
284- /// The listening addresses are not set.
285- MissingListeningAddresses ,
286- // This listening addresses is set but the vector is empty.
287- EmptyListeningAddresses ,
288- }
289-
290- /// Enumeration defining the announcement status of a channel.
291- #[ derive( Debug , PartialEq ) ]
292- pub ( crate ) enum ChannelAnnouncementStatus {
293- /// The channel is announceable.
294- Announceable ,
295- /// The channel is not announceable.
296- Unannounceable ( ChannelAnnouncementBlocker ) ,
297- }
298-
299- /// Checks if a node is can announce a channel based on the configured values of both the node's
300- /// alias and its listening addresses.
301- ///
302- /// If either of them is unset, the node cannot announce the channel. This ability to announce/
303- /// unannounce a channel is codified with `ChannelAnnouncementStatus`
304- pub ( crate ) fn can_announce_channel ( config : & Config ) -> ChannelAnnouncementStatus {
305- if config. node_alias . is_none ( ) {
306- return ChannelAnnouncementStatus :: Unannounceable (
307- ChannelAnnouncementBlocker :: MissingNodeAlias ,
308- ) ;
309- }
310-
311- match & config. listening_addresses {
312- None => ChannelAnnouncementStatus :: Unannounceable (
313- ChannelAnnouncementBlocker :: MissingListeningAddresses ,
314- ) ,
315- Some ( addresses) if addresses. is_empty ( ) => ChannelAnnouncementStatus :: Unannounceable (
316- ChannelAnnouncementBlocker :: EmptyListeningAddresses ,
317- ) ,
318- Some ( _) => ChannelAnnouncementStatus :: Announceable ,
319- }
281+ pub ( crate ) fn may_announce_channel ( config : & Config ) -> bool {
282+ config. node_alias . is_some ( )
283+ && config. listening_addresses . as_ref ( ) . map_or ( false , |addrs| !addrs. is_empty ( ) )
320284}
321285
322286pub ( crate ) fn default_user_config ( config : & Config ) -> UserConfig {
@@ -331,13 +295,10 @@ pub(crate) fn default_user_config(config: &Config) -> UserConfig {
331295 user_config. channel_handshake_config . negotiate_anchors_zero_fee_htlc_tx =
332296 config. anchor_channels_config . is_some ( ) ;
333297
334- match can_announce_channel ( config) {
335- ChannelAnnouncementStatus :: Announceable => ( ) ,
336- ChannelAnnouncementStatus :: Unannounceable ( _) => {
337- user_config. accept_forwards_to_priv_channels = false ;
338- user_config. channel_handshake_config . announced_channel = false ;
339- user_config. channel_handshake_limits . force_announced_channel_preference = true ;
340- } ,
298+ if !may_announce_channel ( config) {
299+ user_config. accept_forwards_to_priv_channels = false ;
300+ user_config. channel_handshake_config . announced_channel = false ;
301+ user_config. channel_handshake_limits . force_announced_channel_preference = true ;
341302 }
342303
343304 user_config
@@ -347,23 +308,16 @@ pub(crate) fn default_user_config(config: &Config) -> UserConfig {
347308mod tests {
348309 use std:: str:: FromStr ;
349310
350- use crate :: config:: ChannelAnnouncementStatus ;
351-
352- use super :: can_announce_channel;
311+ use super :: may_announce_channel;
353312 use super :: Config ;
354313 use super :: NodeAlias ;
355314 use super :: SocketAddress ;
356315
357316 #[ test]
358- fn node_can_announce_channel ( ) {
317+ fn node_announce_channel ( ) {
359318 // Default configuration with node alias and listening addresses unset
360319 let mut node_config = Config :: default ( ) ;
361- assert_eq ! (
362- can_announce_channel( & node_config) ,
363- ChannelAnnouncementStatus :: Unannounceable (
364- crate :: config:: ChannelAnnouncementBlocker :: MissingNodeAlias
365- )
366- ) ;
320+ assert ! ( !may_announce_channel( & node_config) ) ;
367321
368322 // Set node alias with listening addresses unset
369323 let alias_frm_str = |alias : & str | {
@@ -372,28 +326,18 @@ mod tests {
372326 NodeAlias ( bytes)
373327 } ;
374328 node_config. node_alias = Some ( alias_frm_str ( "LDK_Node" ) ) ;
375- assert_eq ! (
376- can_announce_channel( & node_config) ,
377- ChannelAnnouncementStatus :: Unannounceable (
378- crate :: config:: ChannelAnnouncementBlocker :: MissingListeningAddresses
379- )
380- ) ;
329+ assert ! ( !may_announce_channel( & node_config) ) ;
381330
382331 // Set node alias with an empty list of listening addresses
383332 node_config. listening_addresses = Some ( vec ! [ ] ) ;
384- assert_eq ! (
385- can_announce_channel( & node_config) ,
386- ChannelAnnouncementStatus :: Unannounceable (
387- crate :: config:: ChannelAnnouncementBlocker :: EmptyListeningAddresses
388- )
389- ) ;
333+ assert ! ( !may_announce_channel( & node_config) ) ;
390334
391335 // Set node alias with a non-empty list of listening addresses
392336 let socket_address =
393337 SocketAddress :: from_str ( "localhost:8000" ) . expect ( "Socket address conversion failed." ) ;
394338 if let Some ( ref mut addresses) = node_config. listening_addresses {
395339 addresses. push ( socket_address) ;
396340 }
397- assert_eq ! ( can_announce_channel ( & node_config) , ChannelAnnouncementStatus :: Announceable ) ;
341+ assert ! ( may_announce_channel ( & node_config) ) ;
398342 }
399343}
0 commit comments