@@ -5730,7 +5730,7 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
57305730 pub fn new<ES: Deref, F: Deref>(
57315731 fee_estimator: &LowerBoundedFeeEstimator<F>, entropy_source: &ES, signer_provider: &SP, counterparty_node_id: PublicKey, their_features: &InitFeatures,
57325732 channel_value_satoshis: u64, push_msat: u64, user_id: u128, config: &UserConfig, current_chain_height: u32,
5733- outbound_scid_alias: u64
5733+ outbound_scid_alias: u64, temporary_channel_id_opt: Option<ChannelId>
57345734 ) -> Result<OutboundV1Channel<SP>, APIError>
57355735 where ES::Target: EntropySource,
57365736 F::Target: FeeEstimator
@@ -5797,7 +5797,7 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
57975797 Err(_) => return Err(APIError::ChannelUnavailable { err: "Failed to get destination script".to_owned()}),
57985798 };
57995799
5800- let temporary_channel_id = ChannelId::temporary_from_entropy_source(entropy_source);
5800+ let temporary_channel_id = temporary_channel_id_opt.unwrap_or_else(|| ChannelId::temporary_from_entropy_source(entropy_source) );
58015801
58025802 Ok(Self {
58035803 context: ChannelContext {
@@ -7793,7 +7793,7 @@ mod tests {
77937793 let secp_ctx = Secp256k1::new();
77947794 let node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
77957795 let config = UserConfig::default();
7796- match OutboundV1Channel::<&TestKeysInterface>::new(&LowerBoundedFeeEstimator::new(&TestFeeEstimator { fee_est: 253 }), &&keys_provider, &&keys_provider, node_id, &features, 10000000, 100000, 42, &config, 0, 42) {
7796+ match OutboundV1Channel::<&TestKeysInterface>::new(&LowerBoundedFeeEstimator::new(&TestFeeEstimator { fee_est: 253 }), &&keys_provider, &&keys_provider, node_id, &features, 10000000, 100000, 42, &config, 0, 42, None ) {
77977797 Err(APIError::IncompatibleShutdownScript { script }) => {
77987798 assert_eq!(script.into_inner(), non_v0_segwit_shutdown_script.into_inner());
77997799 },
@@ -7816,7 +7816,7 @@ mod tests {
78167816
78177817 let node_a_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
78187818 let config = UserConfig::default();
7819- let node_a_chan = OutboundV1Channel::<&TestKeysInterface>::new(&bounded_fee_estimator, &&keys_provider, &&keys_provider, node_a_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42).unwrap();
7819+ let node_a_chan = OutboundV1Channel::<&TestKeysInterface>::new(&bounded_fee_estimator, &&keys_provider, &&keys_provider, node_a_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42, None ).unwrap();
78207820
78217821 // Now change the fee so we can check that the fee in the open_channel message is the
78227822 // same as the old fee.
@@ -7843,7 +7843,7 @@ mod tests {
78437843 // Create Node A's channel pointing to Node B's pubkey
78447844 let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
78457845 let config = UserConfig::default();
7846- let mut node_a_chan = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42).unwrap();
7846+ let mut node_a_chan = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42, None ).unwrap();
78477847
78487848 // Create Node B's channel by receiving Node A's open_channel message
78497849 // Make sure A's dust limit is as we expect.
@@ -7924,7 +7924,7 @@ mod tests {
79247924
79257925 let node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
79267926 let config = UserConfig::default();
7927- let mut chan = OutboundV1Channel::<&TestKeysInterface>::new(&fee_est, &&keys_provider, &&keys_provider, node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42).unwrap();
7927+ let mut chan = OutboundV1Channel::<&TestKeysInterface>::new(&fee_est, &&keys_provider, &&keys_provider, node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42, None ).unwrap();
79287928
79297929 let commitment_tx_fee_0_htlcs = commit_tx_fee_msat(chan.context.feerate_per_kw, 0, chan.context.get_channel_type());
79307930 let commitment_tx_fee_1_htlc = commit_tx_fee_msat(chan.context.feerate_per_kw, 1, chan.context.get_channel_type());
@@ -7973,7 +7973,7 @@ mod tests {
79737973 // Create Node A's channel pointing to Node B's pubkey
79747974 let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
79757975 let config = UserConfig::default();
7976- let mut node_a_chan = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42).unwrap();
7976+ let mut node_a_chan = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42, None ).unwrap();
79777977
79787978 // Create Node B's channel by receiving Node A's open_channel message
79797979 let open_channel_msg = node_a_chan.get_open_channel(chain_hash);
@@ -8036,12 +8036,12 @@ mod tests {
80368036 // Test that `OutboundV1Channel::new` creates a channel with the correct value for
80378037 // `holder_max_htlc_value_in_flight_msat`, when configured with a valid percentage value,
80388038 // which is set to the lower bound + 1 (2%) of the `channel_value`.
8039- let chan_1 = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, outbound_node_id, &channelmanager::provided_init_features(&config_2_percent), 10000000, 100000, 42, &config_2_percent, 0, 42).unwrap();
8039+ let chan_1 = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, outbound_node_id, &channelmanager::provided_init_features(&config_2_percent), 10000000, 100000, 42, &config_2_percent, 0, 42, None ).unwrap();
80408040 let chan_1_value_msat = chan_1.context.channel_value_satoshis * 1000;
80418041 assert_eq!(chan_1.context.holder_max_htlc_value_in_flight_msat, (chan_1_value_msat as f64 * 0.02) as u64);
80428042
80438043 // Test with the upper bound - 1 of valid values (99%).
8044- let chan_2 = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, outbound_node_id, &channelmanager::provided_init_features(&config_99_percent), 10000000, 100000, 42, &config_99_percent, 0, 42).unwrap();
8044+ let chan_2 = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, outbound_node_id, &channelmanager::provided_init_features(&config_99_percent), 10000000, 100000, 42, &config_99_percent, 0, 42, None ).unwrap();
80458045 let chan_2_value_msat = chan_2.context.channel_value_satoshis * 1000;
80468046 assert_eq!(chan_2.context.holder_max_htlc_value_in_flight_msat, (chan_2_value_msat as f64 * 0.99) as u64);
80478047
@@ -8061,14 +8061,14 @@ mod tests {
80618061
80628062 // Test that `OutboundV1Channel::new` uses the lower bound of the configurable percentage values (1%)
80638063 // if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a value less than 1.
8064- let chan_5 = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, outbound_node_id, &channelmanager::provided_init_features(&config_0_percent), 10000000, 100000, 42, &config_0_percent, 0, 42).unwrap();
8064+ let chan_5 = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, outbound_node_id, &channelmanager::provided_init_features(&config_0_percent), 10000000, 100000, 42, &config_0_percent, 0, 42, None ).unwrap();
80658065 let chan_5_value_msat = chan_5.context.channel_value_satoshis * 1000;
80668066 assert_eq!(chan_5.context.holder_max_htlc_value_in_flight_msat, (chan_5_value_msat as f64 * 0.01) as u64);
80678067
80688068 // Test that `OutboundV1Channel::new` uses the upper bound of the configurable percentage values
80698069 // (100%) if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a larger value
80708070 // than 100.
8071- let chan_6 = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, outbound_node_id, &channelmanager::provided_init_features(&config_101_percent), 10000000, 100000, 42, &config_101_percent, 0, 42).unwrap();
8071+ let chan_6 = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, outbound_node_id, &channelmanager::provided_init_features(&config_101_percent), 10000000, 100000, 42, &config_101_percent, 0, 42, None ).unwrap();
80728072 let chan_6_value_msat = chan_6.context.channel_value_satoshis * 1000;
80738073 assert_eq!(chan_6.context.holder_max_htlc_value_in_flight_msat, chan_6_value_msat);
80748074
@@ -8121,7 +8121,7 @@ mod tests {
81218121
81228122 let mut outbound_node_config = UserConfig::default();
81238123 outbound_node_config.channel_handshake_config.their_channel_reserve_proportional_millionths = (outbound_selected_channel_reserve_perc * 1_000_000.0) as u32;
8124- let chan = OutboundV1Channel::<&TestKeysInterface>::new(&&fee_est, &&keys_provider, &&keys_provider, outbound_node_id, &channelmanager::provided_init_features(&outbound_node_config), channel_value_satoshis, 100_000, 42, &outbound_node_config, 0, 42).unwrap();
8124+ let chan = OutboundV1Channel::<&TestKeysInterface>::new(&&fee_est, &&keys_provider, &&keys_provider, outbound_node_id, &channelmanager::provided_init_features(&outbound_node_config), channel_value_satoshis, 100_000, 42, &outbound_node_config, 0, 42, None ).unwrap();
81258125
81268126 let expected_outbound_selected_chan_reserve = cmp::max(MIN_THEIR_CHAN_RESERVE_SATOSHIS, (chan.context.channel_value_satoshis as f64 * outbound_selected_channel_reserve_perc) as u64);
81278127 assert_eq!(chan.context.holder_selected_channel_reserve_satoshis, expected_outbound_selected_chan_reserve);
@@ -8158,7 +8158,7 @@ mod tests {
81588158 // Create Node A's channel pointing to Node B's pubkey
81598159 let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
81608160 let config = UserConfig::default();
8161- let mut node_a_chan = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42).unwrap();
8161+ let mut node_a_chan = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42, None ).unwrap();
81628162
81638163 // Create Node B's channel by receiving Node A's open_channel message
81648164 // Make sure A's dust limit is as we expect.
@@ -9006,7 +9006,7 @@ mod tests {
90069006 let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
90079007 let config = UserConfig::default();
90089008 let node_a_chan = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider,
9009- node_b_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42).unwrap();
9009+ node_b_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42, None ).unwrap();
90109010
90119011 let mut channel_type_features = ChannelTypeFeatures::only_static_remote_key();
90129012 channel_type_features.set_zero_conf_required();
@@ -9041,7 +9041,7 @@ mod tests {
90419041 let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
90429042 &fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
90439043 &channelmanager::provided_init_features(&UserConfig::default()), 10000000, 100000, 42,
9044- &config, 0, 42
9044+ &config, 0, 42, None
90459045 ).unwrap();
90469046 assert!(!channel_a.context.channel_type.supports_anchors_zero_fee_htlc_tx());
90479047
@@ -9051,7 +9051,8 @@ mod tests {
90519051
90529052 let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
90539053 &fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
9054- &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42
9054+ &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42,
9055+ None
90559056 ).unwrap();
90569057
90579058 let open_channel_msg = channel_a.get_open_channel(ChainHash::using_genesis_block(network));
@@ -9088,7 +9089,8 @@ mod tests {
90889089
90899090 let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
90909091 &fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
9091- &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42
9092+ &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42,
9093+ None
90929094 ).unwrap();
90939095
90949096 // Set `channel_type` to `None` to force the implicit feature negotiation.
@@ -9134,7 +9136,8 @@ mod tests {
91349136 // B as it's not supported by LDK.
91359137 let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
91369138 &fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
9137- &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42
9139+ &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42,
9140+ None
91389141 ).unwrap();
91399142
91409143 let mut open_channel_msg = channel_a.get_open_channel(ChainHash::using_genesis_block(network));
@@ -9153,7 +9156,7 @@ mod tests {
91539156 // LDK.
91549157 let mut channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
91559158 &fee_estimator, &&keys_provider, &&keys_provider, node_id_b, &simple_anchors_init,
9156- 10000000, 100000, 42, &config, 0, 42
9159+ 10000000, 100000, 42, &config, 0, 42, None
91579160 ).unwrap();
91589161
91599162 let open_channel_msg = channel_a.get_open_channel(ChainHash::using_genesis_block(network));
@@ -9203,6 +9206,7 @@ mod tests {
92039206 &config,
92049207 0,
92059208 42,
9209+ None
92069210 ).unwrap();
92079211
92089212 let open_channel_msg = node_a_chan.get_open_channel(ChainHash::using_genesis_block(network));
0 commit comments