Indiciate if a channel is outbound/confirmed in ChannelDetails
authorMatt Corallo <git@bluematt.me>
Wed, 5 May 2021 16:15:11 +0000 (16:15 +0000)
committerMatt Corallo <git@bluematt.me>
Thu, 6 May 2021 20:49:20 +0000 (20:49 +0000)
fuzz/src/router.rs
lightning/src/ln/channelmanager.rs
lightning/src/routing/router.rs

index 42c97f4e44d782c153a91c5eb34e895acdd7b2ac..585ae9b354fbcfca12a1a4c4e754522b32030c37 100644 (file)
@@ -213,6 +213,8 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
                                                                channel_value_satoshis: slice_to_be64(get_slice!(8)),
                                                                user_id: 0,
                                                                inbound_capacity_msat: 0,
+                                                               is_outbound: true,
+                                                               is_funding_locked: true,
                                                                is_live: true,
                                                                is_public: true,
                                                                outbound_capacity_msat: 0,
index 8c9c702b79e0c2767320652626d9065257d41b45..a970c52de6f22b762c648ce52a7ea0e0d74ba731 100644 (file)
@@ -634,8 +634,18 @@ pub struct ChannelDetails {
        /// Note that there are some corner cases not fully handled here, so the actual available
        /// inbound capacity may be slightly higher than this.
        pub inbound_capacity_msat: u64,
+       /// True if the channel was initiated (and thus funded) by us.
+       pub is_outbound: bool,
+       /// True if the channel is confirmed, funding_locked messages have been exchanged, and the
+       /// channel is not currently being shut down. `funding_locked` message exchange implies the
+       /// required confirmation count has been reached (and we were connected to the peer at some
+       /// point after the funding transaction received enough confirmations).
+       pub is_funding_locked: bool,
        /// True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
-       /// the peer is connected, and (c) no monitor update failure is pending resolution.
+       /// the peer is connected, (c) no monitor update failure is pending resolution, and (d) the
+       /// channel is not currently negotiating a shutdown.
+       ///
+       /// This is a strict superset of `is_funding_locked`.
        pub is_live: bool,
        /// True if this channel is (or will be) publicly-announced.
        pub is_public: bool,
@@ -969,6 +979,8 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
                                        inbound_capacity_msat,
                                        outbound_capacity_msat,
                                        user_id: channel.get_user_id(),
+                                       is_outbound: channel.is_outbound(),
+                                       is_funding_locked: channel.is_usable(),
                                        is_live: channel.is_live(),
                                        is_public: channel.should_announce(),
                                        counterparty_forwarding_info: channel.counterparty_forwarding_info(),
index 795780f48d2c4caba497aa1c0b082411f2144293..87214b8f5f6b7fd9b7a3eeac79cd4cef8b9133d1 100644 (file)
@@ -1634,6 +1634,7 @@ mod tests {
                        user_id: 0,
                        outbound_capacity_msat: 100000,
                        inbound_capacity_msat: 100000,
+                       is_outbound: true, is_funding_locked: true,
                        is_live: true, is_public: true,
                        counterparty_forwarding_info: None,
                }];
@@ -1953,6 +1954,7 @@ mod tests {
                        user_id: 0,
                        outbound_capacity_msat: 250_000_000,
                        inbound_capacity_msat: 0,
+                       is_outbound: true, is_funding_locked: true,
                        is_live: true, is_public: true,
                        counterparty_forwarding_info: None,
                }];
@@ -2002,6 +2004,7 @@ mod tests {
                        user_id: 0,
                        outbound_capacity_msat: 250_000_000,
                        inbound_capacity_msat: 0,
+                       is_outbound: true, is_funding_locked: true,
                        is_live: true, is_public: true,
                        counterparty_forwarding_info: None,
                }];
@@ -2068,6 +2071,7 @@ mod tests {
                        user_id: 0,
                        outbound_capacity_msat: 250_000_000,
                        inbound_capacity_msat: 0,
+                       is_outbound: true, is_funding_locked: true,
                        is_live: true, is_public: true,
                        counterparty_forwarding_info: None,
                }];
@@ -2206,6 +2210,7 @@ mod tests {
                        user_id: 0,
                        outbound_capacity_msat: 250_000_000,
                        inbound_capacity_msat: 0,
+                       is_outbound: true, is_funding_locked: true,
                        is_live: true, is_public: true,
                        counterparty_forwarding_info: None,
                }];
@@ -2336,6 +2341,7 @@ mod tests {
                        user_id: 0,
                        outbound_capacity_msat: 100000,
                        inbound_capacity_msat: 100000,
+                       is_outbound: true, is_funding_locked: true,
                        is_live: true, is_public: true,
                        counterparty_forwarding_info: None,
                }];
@@ -2469,6 +2475,7 @@ mod tests {
                        user_id: 0,
                        outbound_capacity_msat: 200_000_000,
                        inbound_capacity_msat: 0,
+                       is_outbound: true, is_funding_locked: true,
                        is_live: true, is_public: true,
                        counterparty_forwarding_info: None,
                }];