Skip to content

Commit bf39507

Browse files
committed
Added temporary_channel_id to create_channel.
By default, LDK will generate the initial temporary channel ID for you. However, in certain cases, it's desirable to have a temporary channel ID specified by the caller in case of any pre-negotiation that needs to happen between peers prior to the channel open message. For example, LND has a `FundingShim` API that allows for advanced funding flows based on the temporary channel ID of the channel. This patch adds support for optionally specifying the temporary channel ID of the channel through the `create_channel` API.
1 parent 281a0ae commit bf39507

File tree

14 files changed

+109
-94
lines changed

14 files changed

+109
-94
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
526526
features: $source.init_features(), networks: None, remote_network_address: None
527527
}, false).unwrap();
528528

529-
$source.create_channel($dest.get_our_node_id(), 100_000, 42, 0, None).unwrap();
529+
$source.create_channel($dest.get_our_node_id(), 100_000, 42, 0, None, None).unwrap();
530530
let open_channel = {
531531
let events = $source.get_and_clear_pending_msg_events();
532532
assert_eq!(events.len(), 1);

fuzz/src/full_stack.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
571571
let their_key = get_pubkey!();
572572
let chan_value = slice_to_be24(get_slice!(3)) as u64;
573573
let push_msat_value = slice_to_be24(get_slice!(3)) as u64;
574-
if channelmanager.create_channel(their_key, chan_value, push_msat_value, 0, None).is_err() { return; }
574+
if channelmanager.create_channel(their_key, chan_value, push_msat_value, 0, None, None).is_err() { return; }
575575
},
576576
6 => {
577577
let mut channels = channelmanager.list_channels();

lightning-background-processor/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1241,7 +1241,7 @@ mod tests {
12411241

12421242
macro_rules! begin_open_channel {
12431243
($node_a: expr, $node_b: expr, $channel_value: expr) => {{
1244-
$node_a.node.create_channel($node_b.node.get_our_node_id(), $channel_value, 100, 42, None).unwrap();
1244+
$node_a.node.create_channel($node_b.node.get_our_node_id(), $channel_value, 100, 42, None, None).unwrap();
12451245
$node_b.node.handle_open_channel(&$node_a.node.get_our_node_id(), &get_event_msg!($node_a, MessageSendEvent::SendOpenChannel, $node_b.node.get_our_node_id()));
12461246
$node_a.node.handle_accept_channel(&$node_b.node.get_our_node_id(), &get_event_msg!($node_b, MessageSendEvent::SendAcceptChannel, $node_a.node.get_our_node_id()));
12471247
}}

lightning-invoice/src/utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,7 +1141,7 @@ mod test {
11411141
// is never handled, the `channel.counterparty.forwarding_info` is never assigned.
11421142
let mut private_chan_cfg = UserConfig::default();
11431143
private_chan_cfg.channel_handshake_config.announced_channel = false;
1144-
let temporary_channel_id = nodes[2].node.create_channel(nodes[0].node.get_our_node_id(), 1_000_000, 500_000_000, 42, Some(private_chan_cfg)).unwrap();
1144+
let temporary_channel_id = nodes[2].node.create_channel(nodes[0].node.get_our_node_id(), 1_000_000, 500_000_000, 42, None, Some(private_chan_cfg)).unwrap();
11451145
let open_channel = get_event_msg!(nodes[2], MessageSendEvent::SendOpenChannel, nodes[0].node.get_our_node_id());
11461146
nodes[0].node.handle_open_channel(&nodes[2].node.get_our_node_id(), &open_channel);
11471147
let accept_channel = get_event_msg!(nodes[0], MessageSendEvent::SendAcceptChannel, nodes[2].node.get_our_node_id());
@@ -1547,7 +1547,7 @@ mod test {
15471547
// is never handled, the `channel.counterparty.forwarding_info` is never assigned.
15481548
let mut private_chan_cfg = UserConfig::default();
15491549
private_chan_cfg.channel_handshake_config.announced_channel = false;
1550-
let temporary_channel_id = nodes[1].node.create_channel(nodes[3].node.get_our_node_id(), 1_000_000, 500_000_000, 42, Some(private_chan_cfg)).unwrap();
1550+
let temporary_channel_id = nodes[1].node.create_channel(nodes[3].node.get_our_node_id(), 1_000_000, 500_000_000, 42, None, Some(private_chan_cfg)).unwrap();
15511551
let open_channel = get_event_msg!(nodes[1], MessageSendEvent::SendOpenChannel, nodes[3].node.get_our_node_id());
15521552
nodes[3].node.handle_open_channel(&nodes[1].node.get_our_node_id(), &open_channel);
15531553
let accept_channel = get_event_msg!(nodes[3], MessageSendEvent::SendAcceptChannel, nodes[1].node.get_our_node_id());

lightning/src/ln/async_signer_tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ fn test_async_commitment_signature_for_funding_created() {
2323
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
2424
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
2525

26-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None).unwrap();
26+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None, None).unwrap();
2727

2828
// nodes[0] --- open_channel --> nodes[1]
2929
let mut open_chan_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
@@ -74,7 +74,7 @@ fn test_async_commitment_signature_for_funding_signed() {
7474
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
7575
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
7676

77-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None).unwrap();
77+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None, None).unwrap();
7878

7979
// nodes[0] --- open_channel --> nodes[1]
8080
let mut open_chan_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
@@ -177,7 +177,7 @@ fn test_async_commitment_signature_for_funding_signed_0conf() {
177177
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
178178

179179
// nodes[0] --- open_channel --> nodes[1]
180-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None).unwrap();
180+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None, None).unwrap();
181181
let open_channel = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
182182

183183
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &open_channel);

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1850,7 +1850,7 @@ fn do_during_funding_monitor_fail(confirm_a_first: bool, restore_b_before_conf:
18501850
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
18511851
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
18521852

1853-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 43, None).unwrap();
1853+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 43, None, None).unwrap();
18541854
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id()));
18551855
nodes[0].node.handle_accept_channel(&nodes[1].node.get_our_node_id(), &get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, nodes[0].node.get_our_node_id()));
18561856

@@ -2768,7 +2768,7 @@ fn do_test_outbound_reload_without_init_mon(use_0conf: bool) {
27682768

27692769
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
27702770

2771-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 43, None).unwrap();
2771+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 43, None, None).unwrap();
27722772
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id()));
27732773

27742774
let events = nodes[1].node.get_and_clear_pending_events();
@@ -2859,7 +2859,7 @@ fn do_test_inbound_reload_without_init_mon(use_0conf: bool, lock_commitment: boo
28592859

28602860
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
28612861

2862-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 43, None).unwrap();
2862+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 43, None, None).unwrap();
28632863
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id()));
28642864

28652865
let events = nodes[1].node.get_and_clear_pending_events();

0 commit comments

Comments
 (0)