Skip to content

Commit 7269fa2

Browse files
authored
Merge pull request #1855 from tnull/2022-11-inbound-user-channel-id-randomization-fixup
Inbound `user_channel_id` randomization follow-up
2 parents d6aa1bc + 7f6713c commit 7269fa2

File tree

4 files changed

+11
-7
lines changed

4 files changed

+11
-7
lines changed

lightning/src/ln/channelmanager.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1087,7 +1087,8 @@ pub struct ChannelDetails {
10871087
/// [`outbound_capacity_msat`]: ChannelDetails::outbound_capacity_msat
10881088
pub unspendable_punishment_reserve: Option<u64>,
10891089
/// The `user_channel_id` passed in to create_channel, or a random value if the channel was
1090-
/// inbound.
1090+
/// inbound. This may be zero for inbound channels serialized with LDK versions prior to
1091+
/// 0.0.113.
10911092
pub user_channel_id: u128,
10921093
/// Our total balance. This is the amount we would get if we close the channel.
10931094
/// This value is not exact. Due to various in-flight changes and feerate changes, exactly this
@@ -4653,7 +4654,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
46534654
}
46544655
channel_state.pending_msg_events.push(events::MessageSendEvent::SendAcceptChannel {
46554656
node_id: counterparty_node_id.clone(),
4656-
msg: channel.accept_inbound_channel(0),
4657+
msg: channel.accept_inbound_channel(user_channel_id),
46574658
});
46584659
} else {
46594660
let mut pending_events = self.pending_events.lock().unwrap();

lightning/src/ln/functional_test_utils.rs

+2
Original file line numberDiff line numberDiff line change
@@ -806,10 +806,12 @@ pub fn create_chan_between_nodes_with_value_init<'a, 'b, 'c>(node_a: &Node<'a, '
806806
let create_chan_id = node_a.node.create_channel(node_b.node.get_our_node_id(), channel_value, push_msat, 42, None).unwrap();
807807
let open_channel_msg = get_event_msg!(node_a, MessageSendEvent::SendOpenChannel, node_b.node.get_our_node_id());
808808
assert_eq!(open_channel_msg.temporary_channel_id, create_chan_id);
809+
assert_eq!(node_a.node.list_channels().iter().find(|channel| channel.channel_id == create_chan_id).unwrap().user_channel_id, 42);
809810
node_b.node.handle_open_channel(&node_a.node.get_our_node_id(), a_flags, &open_channel_msg);
810811
let accept_channel_msg = get_event_msg!(node_b, MessageSendEvent::SendAcceptChannel, node_a.node.get_our_node_id());
811812
assert_eq!(accept_channel_msg.temporary_channel_id, create_chan_id);
812813
node_a.node.handle_accept_channel(&node_b.node.get_our_node_id(), b_flags, &accept_channel_msg);
814+
assert_ne!(node_b.node.list_channels().iter().find(|channel| channel.channel_id == create_chan_id).unwrap().user_channel_id, 0);
813815

814816
sign_funding_transaction(node_a, node_b, channel_value, create_chan_id)
815817
}

lightning/src/onion_message/functional_tests.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ use crate::chain::keysinterface::{KeysInterface, Recipient};
1313
use crate::ln::features::InitFeatures;
1414
use crate::ln::msgs::{self, DecodeError, OnionMessageHandler};
1515
use super::{BlindedRoute, CustomOnionMessageContents, CustomOnionMessageHandler, Destination, OnionMessageContents, OnionMessenger, SendError};
16-
use crate::util::enforcing_trait_impls::EnforcingSigner;
17-
use crate::util::ser::{ Writeable, Writer};
16+
use crate::util::ser::{Writeable, Writer};
1817
use crate::util::test_utils;
1918

2019
use bitcoin::network::constants::Network;

lightning/src/util/events.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,8 @@ pub enum Event {
319319
/// The script which should be used in the transaction output.
320320
output_script: Script,
321321
/// The `user_channel_id` value passed in to [`ChannelManager::create_channel`], or a
322-
/// random value for an inbound channel.
322+
/// random value for an inbound channel. This may be zero for objects serialized with LDK
323+
/// versions prior to 0.0.113.
323324
///
324325
/// [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel
325326
user_channel_id: u128,
@@ -632,8 +633,9 @@ pub enum Event {
632633
/// The `user_channel_id` value passed in to [`ChannelManager::create_channel`] for outbound
633634
/// channels, or to [`ChannelManager::accept_inbound_channel`] for inbound channels if
634635
/// [`UserConfig::manually_accept_inbound_channels`] config flag is set to true. Otherwise
635-
/// `user_channel_id` will be randomized for an inbound channel.
636-
/// This will always be zero for objects serialized with LDK versions prior to 0.0.102.
636+
/// `user_channel_id` will be randomized for inbound channels.
637+
/// This may be zero for inbound channels serialized prior to 0.0.113 and will always be
638+
/// zero for objects serialized with LDK versions prior to 0.0.102.
637639
///
638640
/// [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel
639641
/// [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel

0 commit comments

Comments
 (0)