@@ -1000,9 +1000,10 @@ impl<Signer: ChannelSigner> ChannelContext<Signer> {
1000
1000
}
1001
1001
1002
1002
/// Only allowed immediately after deserialization if get_outbound_scid_alias returns 0,
1003
- /// indicating we were written by LDK prior to 0.0.106 which did not set outbound SCID aliases.
1003
+ /// indicating we were written by LDK prior to 0.0.106 which did not set outbound SCID aliases
1004
+ /// or prior to any channel actions during `Channel` initialization.
1004
1005
pub fn set_outbound_scid_alias(&mut self, outbound_scid_alias: u64) {
1005
- assert_eq !(self.outbound_scid_alias, 0);
1006
+ debug_assert_eq !(self.outbound_scid_alias, 0);
1006
1007
self.outbound_scid_alias = outbound_scid_alias;
1007
1008
}
1008
1009
@@ -6006,7 +6007,7 @@ impl<Signer: WriteableEcdsaChannelSigner> InboundV1Channel<Signer> {
6006
6007
fee_estimator: &LowerBoundedFeeEstimator<F>, entropy_source: &ES, signer_provider: &SP,
6007
6008
counterparty_node_id: PublicKey, our_supported_features: &ChannelTypeFeatures,
6008
6009
their_features: &InitFeatures, msg: &msgs::OpenChannel, user_id: u128, config: &UserConfig,
6009
- current_chain_height: u32, logger: &L, outbound_scid_alias: u64, is_0conf: bool,
6010
+ current_chain_height: u32, logger: &L, is_0conf: bool,
6010
6011
) -> Result<InboundV1Channel<Signer>, ChannelError>
6011
6012
where ES::Target: EntropySource,
6012
6013
SP::Target: SignerProvider<Signer = Signer>,
@@ -6316,7 +6317,7 @@ impl<Signer: WriteableEcdsaChannelSigner> InboundV1Channel<Signer> {
6316
6317
sent_message_awaiting_response: None,
6317
6318
6318
6319
latest_inbound_scid_alias: None,
6319
- outbound_scid_alias,
6320
+ outbound_scid_alias: 0 ,
6320
6321
6321
6322
channel_pending_event_emitted: false,
6322
6323
channel_ready_event_emitted: false,
@@ -7582,7 +7583,7 @@ mod tests {
7582
7583
// Make sure A's dust limit is as we expect.
7583
7584
let open_channel_msg = node_a_chan.get_open_channel(genesis_block(network).header.block_hash());
7584
7585
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[7; 32]).unwrap());
7585
- let mut node_b_chan = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_channel_type_features(&config), &channelmanager::provided_init_features(&config), &open_channel_msg, 7, &config, 0, &&logger, 42, /*is_0conf=*/false).unwrap();
7586
+ let mut node_b_chan = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_channel_type_features(&config), &channelmanager::provided_init_features(&config), &open_channel_msg, 7, &config, 0, &&logger, /*is_0conf=*/false).unwrap();
7586
7587
7587
7588
// Node B --> Node A: accept channel, explicitly setting B's dust limit.
7588
7589
let mut accept_channel_msg = node_b_chan.accept_inbound_channel();
@@ -7711,7 +7712,7 @@ mod tests {
7711
7712
// Create Node B's channel by receiving Node A's open_channel message
7712
7713
let open_channel_msg = node_a_chan.get_open_channel(chain_hash);
7713
7714
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[7; 32]).unwrap());
7714
- let mut node_b_chan = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_channel_type_features(&config), &channelmanager::provided_init_features(&config), &open_channel_msg, 7, &config, 0, &&logger, 42, /*is_0conf=*/false).unwrap();
7715
+ let mut node_b_chan = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_channel_type_features(&config), &channelmanager::provided_init_features(&config), &open_channel_msg, 7, &config, 0, &&logger, /*is_0conf=*/false).unwrap();
7715
7716
7716
7717
// Node B --> Node A: accept channel
7717
7718
let accept_channel_msg = node_b_chan.accept_inbound_channel();
@@ -7783,12 +7784,12 @@ mod tests {
7783
7784
// Test that `InboundV1Channel::new` creates a channel with the correct value for
7784
7785
// `holder_max_htlc_value_in_flight_msat`, when configured with a valid percentage value,
7785
7786
// which is set to the lower bound - 1 (2%) of the `channel_value`.
7786
- let chan_3 = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&config_2_percent), &channelmanager::provided_init_features(&config_2_percent), &chan_1_open_channel_msg, 7, &config_2_percent, 0, &&logger, 42, /*is_0conf=*/false).unwrap();
7787
+ let chan_3 = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&config_2_percent), &channelmanager::provided_init_features(&config_2_percent), &chan_1_open_channel_msg, 7, &config_2_percent, 0, &&logger, /*is_0conf=*/false).unwrap();
7787
7788
let chan_3_value_msat = chan_3.context.channel_value_satoshis * 1000;
7788
7789
assert_eq!(chan_3.context.holder_max_htlc_value_in_flight_msat, (chan_3_value_msat as f64 * 0.02) as u64);
7789
7790
7790
7791
// Test with the upper bound - 1 of valid values (99%).
7791
- let chan_4 = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&config_99_percent), &channelmanager::provided_init_features(&config_99_percent), &chan_1_open_channel_msg, 7, &config_99_percent, 0, &&logger, 42, /*is_0conf=*/false).unwrap();
7792
+ let chan_4 = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&config_99_percent), &channelmanager::provided_init_features(&config_99_percent), &chan_1_open_channel_msg, 7, &config_99_percent, 0, &&logger, /*is_0conf=*/false).unwrap();
7792
7793
let chan_4_value_msat = chan_4.context.channel_value_satoshis * 1000;
7793
7794
assert_eq!(chan_4.context.holder_max_htlc_value_in_flight_msat, (chan_4_value_msat as f64 * 0.99) as u64);
7794
7795
@@ -7807,14 +7808,14 @@ mod tests {
7807
7808
7808
7809
// Test that `InboundV1Channel::new` uses the lower bound of the configurable percentage values (1%)
7809
7810
// if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a value less than 1.
7810
- let chan_7 = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&config_0_percent), &channelmanager::provided_init_features(&config_0_percent), &chan_1_open_channel_msg, 7, &config_0_percent, 0, &&logger, 42, /*is_0conf=*/false).unwrap();
7811
+ let chan_7 = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&config_0_percent), &channelmanager::provided_init_features(&config_0_percent), &chan_1_open_channel_msg, 7, &config_0_percent, 0, &&logger, /*is_0conf=*/false).unwrap();
7811
7812
let chan_7_value_msat = chan_7.context.channel_value_satoshis * 1000;
7812
7813
assert_eq!(chan_7.context.holder_max_htlc_value_in_flight_msat, (chan_7_value_msat as f64 * 0.01) as u64);
7813
7814
7814
7815
// Test that `InboundV1Channel::new` uses the upper bound of the configurable percentage values
7815
7816
// (100%) if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a larger value
7816
7817
// than 100.
7817
- let chan_8 = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&config_101_percent), &channelmanager::provided_init_features(&config_101_percent), &chan_1_open_channel_msg, 7, &config_101_percent, 0, &&logger, 42, /*is_0conf=*/false).unwrap();
7818
+ let chan_8 = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&config_101_percent), &channelmanager::provided_init_features(&config_101_percent), &chan_1_open_channel_msg, 7, &config_101_percent, 0, &&logger, /*is_0conf=*/false).unwrap();
7818
7819
let chan_8_value_msat = chan_8.context.channel_value_satoshis * 1000;
7819
7820
assert_eq!(chan_8.context.holder_max_htlc_value_in_flight_msat, chan_8_value_msat);
7820
7821
}
@@ -7864,15 +7865,15 @@ mod tests {
7864
7865
inbound_node_config.channel_handshake_config.their_channel_reserve_proportional_millionths = (inbound_selected_channel_reserve_perc * 1_000_000.0) as u32;
7865
7866
7866
7867
if outbound_selected_channel_reserve_perc + inbound_selected_channel_reserve_perc < 1.0 {
7867
- let chan_inbound_node = InboundV1Channel::<EnforcingSigner>::new(&&fee_est, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&inbound_node_config), &channelmanager::provided_init_features(&outbound_node_config), &chan_open_channel_msg, 7, &inbound_node_config, 0, &&logger, 42, /*is_0conf=*/false).unwrap();
7868
+ let chan_inbound_node = InboundV1Channel::<EnforcingSigner>::new(&&fee_est, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&inbound_node_config), &channelmanager::provided_init_features(&outbound_node_config), &chan_open_channel_msg, 7, &inbound_node_config, 0, &&logger, /*is_0conf=*/false).unwrap();
7868
7869
7869
7870
let expected_inbound_selected_chan_reserve = cmp::max(MIN_THEIR_CHAN_RESERVE_SATOSHIS, (chan.context.channel_value_satoshis as f64 * inbound_selected_channel_reserve_perc) as u64);
7870
7871
7871
7872
assert_eq!(chan_inbound_node.context.holder_selected_channel_reserve_satoshis, expected_inbound_selected_chan_reserve);
7872
7873
assert_eq!(chan_inbound_node.context.counterparty_selected_channel_reserve_satoshis.unwrap(), expected_outbound_selected_chan_reserve);
7873
7874
} else {
7874
7875
// Channel Negotiations failed
7875
- let result = InboundV1Channel::<EnforcingSigner>::new(&&fee_est, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&inbound_node_config), &channelmanager::provided_init_features(&outbound_node_config), &chan_open_channel_msg, 7, &inbound_node_config, 0, &&logger, 42, /*is_0conf=*/false);
7876
+ let result = InboundV1Channel::<EnforcingSigner>::new(&&fee_est, &&keys_provider, &&keys_provider, inbound_node_id, &channelmanager::provided_channel_type_features(&inbound_node_config), &channelmanager::provided_init_features(&outbound_node_config), &chan_open_channel_msg, 7, &inbound_node_config, 0, &&logger, /*is_0conf=*/false);
7876
7877
assert!(result.is_err());
7877
7878
}
7878
7879
}
@@ -7897,7 +7898,7 @@ mod tests {
7897
7898
// Make sure A's dust limit is as we expect.
7898
7899
let open_channel_msg = node_a_chan.get_open_channel(genesis_block(network).header.block_hash());
7899
7900
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[7; 32]).unwrap());
7900
- let mut node_b_chan = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_channel_type_features(&config), &channelmanager::provided_init_features(&config), &open_channel_msg, 7, &config, 0, &&logger, 42, /*is_0conf=*/false).unwrap();
7901
+ let mut node_b_chan = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_channel_type_features(&config), &channelmanager::provided_init_features(&config), &open_channel_msg, 7, &config, 0, &&logger, /*is_0conf=*/false).unwrap();
7901
7902
7902
7903
// Node B --> Node A: accept channel, explicitly setting B's dust limit.
7903
7904
let mut accept_channel_msg = node_b_chan.accept_inbound_channel();
@@ -8735,7 +8736,7 @@ mod tests {
8735
8736
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[7; 32]).unwrap());
8736
8737
let res = InboundV1Channel::<EnforcingSigner>::new(&feeest, &&keys_provider, &&keys_provider,
8737
8738
node_b_node_id, &channelmanager::provided_channel_type_features(&config),
8738
- &channelmanager::provided_init_features(&config), &open_channel_msg, 7, &config, 0, &&logger, 42, /*is_0conf=*/false);
8739
+ &channelmanager::provided_init_features(&config), &open_channel_msg, 7, &config, 0, &&logger, /*is_0conf=*/false);
8739
8740
assert!(res.is_ok());
8740
8741
}
8741
8742
@@ -8777,7 +8778,7 @@ mod tests {
8777
8778
let channel_b = InboundV1Channel::<EnforcingSigner>::new(
8778
8779
&fee_estimator, &&keys_provider, &&keys_provider, node_id_a,
8779
8780
&channelmanager::provided_channel_type_features(&config), &channelmanager::provided_init_features(&config),
8780
- &open_channel_msg, 7, &config, 0, &&logger, 42, /*is_0conf=*/false
8781
+ &open_channel_msg, 7, &config, 0, &&logger, /*is_0conf=*/false
8781
8782
).unwrap();
8782
8783
8783
8784
assert_eq!(channel_a.context.channel_type, expected_channel_type);
@@ -8819,7 +8820,7 @@ mod tests {
8819
8820
let channel_b = InboundV1Channel::<EnforcingSigner>::new(
8820
8821
&fee_estimator, &&keys_provider, &&keys_provider, node_id_a,
8821
8822
&channelmanager::provided_channel_type_features(&config), &init_features_with_simple_anchors,
8822
- &open_channel_msg, 7, &config, 0, &&logger, 42, /*is_0conf=*/false
8823
+ &open_channel_msg, 7, &config, 0, &&logger, /*is_0conf=*/false
8823
8824
);
8824
8825
assert!(channel_b.is_err());
8825
8826
}
@@ -8862,7 +8863,7 @@ mod tests {
8862
8863
let res = InboundV1Channel::<EnforcingSigner>::new(
8863
8864
&fee_estimator, &&keys_provider, &&keys_provider, node_id_a,
8864
8865
&channelmanager::provided_channel_type_features(&config), &simple_anchors_init,
8865
- &open_channel_msg, 7, &config, 0, &&logger, 42, /*is_0conf=*/false
8866
+ &open_channel_msg, 7, &config, 0, &&logger, /*is_0conf=*/false
8866
8867
);
8867
8868
assert!(res.is_err());
8868
8869
@@ -8880,7 +8881,7 @@ mod tests {
8880
8881
let channel_b = InboundV1Channel::<EnforcingSigner>::new(
8881
8882
&fee_estimator, &&keys_provider, &&keys_provider, node_id_a,
8882
8883
&channelmanager::provided_channel_type_features(&config), &channelmanager::provided_init_features(&config),
8883
- &open_channel_msg, 7, &config, 0, &&logger, 42, /*is_0conf=*/false
8884
+ &open_channel_msg, 7, &config, 0, &&logger, /*is_0conf=*/false
8884
8885
).unwrap();
8885
8886
8886
8887
let mut accept_channel_msg = channel_b.get_accept_channel_message();
0 commit comments