@@ -1882,7 +1882,7 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
1882
1882
Ok(channel_context)
1883
1883
}
1884
1884
1885
- fn new_for_outbound_channel<'a, ES: Deref, F: Deref>(
1885
+ fn new_for_outbound_channel<'a, ES: Deref, F: Deref, L: Deref >(
1886
1886
fee_estimator: &'a LowerBoundedFeeEstimator<F>,
1887
1887
entropy_source: &'a ES,
1888
1888
signer_provider: &'a SP,
@@ -1899,11 +1899,13 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
1899
1899
channel_keys_id: [u8; 32],
1900
1900
holder_signer: <SP::Target as SignerProvider>::EcdsaSigner,
1901
1901
pubkeys: ChannelPublicKeys,
1902
+ logger: &L,
1902
1903
) -> Result<ChannelContext<SP>, APIError>
1903
1904
where
1904
1905
ES::Target: EntropySource,
1905
1906
F::Target: FeeEstimator,
1906
1907
SP::Target: SignerProvider,
1908
+ L::Target: Logger,
1907
1909
{
1908
1910
// This will be updated with the counterparty contribution if this is a dual-funded channel
1909
1911
let channel_value_satoshis = funding_satoshis;
@@ -7372,13 +7374,14 @@ pub(super) struct OutboundV1Channel<SP: Deref> where SP::Target: SignerProvider
7372
7374
}
7373
7375
7374
7376
impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
7375
- pub fn new<ES: Deref, F: Deref>(
7377
+ pub fn new<ES: Deref, F: Deref, L: Deref >(
7376
7378
fee_estimator: &LowerBoundedFeeEstimator<F>, entropy_source: &ES, signer_provider: &SP, counterparty_node_id: PublicKey, their_features: &InitFeatures,
7377
7379
channel_value_satoshis: u64, push_msat: u64, user_id: u128, config: &UserConfig, current_chain_height: u32,
7378
- outbound_scid_alias: u64, temporary_channel_id: Option<ChannelId>
7380
+ outbound_scid_alias: u64, temporary_channel_id: Option<ChannelId>, logger: &L
7379
7381
) -> Result<OutboundV1Channel<SP>, APIError>
7380
7382
where ES::Target: EntropySource,
7381
- F::Target: FeeEstimator
7383
+ F::Target: FeeEstimator,
7384
+ L::Target: Logger,
7382
7385
{
7383
7386
let holder_selected_channel_reserve_satoshis = get_holder_selected_channel_reserve_satoshis(channel_value_satoshis, config);
7384
7387
if holder_selected_channel_reserve_satoshis < MIN_CHAN_DUST_LIMIT_SATOSHIS {
@@ -7410,6 +7413,7 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
7410
7413
channel_keys_id,
7411
7414
holder_signer,
7412
7415
pubkeys,
7416
+ logger,
7413
7417
)?,
7414
7418
unfunded_context: UnfundedChannelContext { unfunded_channel_age_ticks: 0 }
7415
7419
};
@@ -9523,11 +9527,12 @@ mod tests {
9523
9527
keys_provider.expect(OnGetShutdownScriptpubkey {
9524
9528
returns: non_v0_segwit_shutdown_script.clone(),
9525
9529
});
9530
+ let logger = test_utils::TestLogger::new();
9526
9531
9527
9532
let secp_ctx = Secp256k1::new();
9528
9533
let node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
9529
9534
let config = UserConfig::default();
9530
- match OutboundV1Channel::<&TestKeysInterface>::new(&LowerBoundedFeeEstimator::new(&TestFeeEstimator { fee_est: 253 }), &&keys_provider, &&keys_provider, node_id, &features, 10000000, 100000, 42, &config, 0, 42, None) {
9535
+ match OutboundV1Channel::<&TestKeysInterface>::new(&LowerBoundedFeeEstimator::new(&TestFeeEstimator { fee_est: 253 }), &&keys_provider, &&keys_provider, node_id, &features, 10000000, 100000, 42, &config, 0, 42, None, &&logger ) {
9531
9536
Err(APIError::IncompatibleShutdownScript { script }) => {
9532
9537
assert_eq!(script.into_inner(), non_v0_segwit_shutdown_script.into_inner());
9533
9538
},
@@ -9547,10 +9552,11 @@ mod tests {
9547
9552
let seed = [42; 32];
9548
9553
let network = Network::Testnet;
9549
9554
let keys_provider = test_utils::TestKeysInterface::new(&seed, network);
9555
+ let logger = test_utils::TestLogger::new();
9550
9556
9551
9557
let node_a_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
9552
9558
let config = UserConfig::default();
9553
- 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();
9559
+ 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, &&logger ).unwrap();
9554
9560
9555
9561
// Now change the fee so we can check that the fee in the open_channel message is the
9556
9562
// same as the old fee.
@@ -9577,7 +9583,7 @@ mod tests {
9577
9583
// Create Node A's channel pointing to Node B's pubkey
9578
9584
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
9579
9585
let config = UserConfig::default();
9580
- 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();
9586
+ 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, &&logger ).unwrap();
9581
9587
9582
9588
// Create Node B's channel by receiving Node A's open_channel message
9583
9589
// Make sure A's dust limit is as we expect.
@@ -9657,10 +9663,11 @@ mod tests {
9657
9663
let seed = [42; 32];
9658
9664
let network = Network::Testnet;
9659
9665
let keys_provider = test_utils::TestKeysInterface::new(&seed, network);
9666
+ let logger = test_utils::TestLogger::new();
9660
9667
9661
9668
let node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
9662
9669
let config = UserConfig::default();
9663
- 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();
9670
+ 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, &&logger ).unwrap();
9664
9671
9665
9672
let commitment_tx_fee_0_htlcs = commit_tx_fee_msat(chan.context.feerate_per_kw, 0, chan.context.get_channel_type());
9666
9673
let commitment_tx_fee_1_htlc = commit_tx_fee_msat(chan.context.feerate_per_kw, 1, chan.context.get_channel_type());
@@ -9709,7 +9716,7 @@ mod tests {
9709
9716
// Create Node A's channel pointing to Node B's pubkey
9710
9717
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
9711
9718
let config = UserConfig::default();
9712
- 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();
9719
+ 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, &&logger ).unwrap();
9713
9720
9714
9721
// Create Node B's channel by receiving Node A's open_channel message
9715
9722
let open_channel_msg = node_a_chan.get_open_channel(chain_hash);
@@ -9773,12 +9780,12 @@ mod tests {
9773
9780
// Test that `OutboundV1Channel::new` creates a channel with the correct value for
9774
9781
// `holder_max_htlc_value_in_flight_msat`, when configured with a valid percentage value,
9775
9782
// which is set to the lower bound + 1 (2%) of the `channel_value`.
9776
- 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();
9783
+ 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, &&logger ).unwrap();
9777
9784
let chan_1_value_msat = chan_1.context.channel_value_satoshis * 1000;
9778
9785
assert_eq!(chan_1.context.holder_max_htlc_value_in_flight_msat, (chan_1_value_msat as f64 * 0.02) as u64);
9779
9786
9780
9787
// Test with the upper bound - 1 of valid values (99%).
9781
- 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();
9788
+ 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, &&logger ).unwrap();
9782
9789
let chan_2_value_msat = chan_2.context.channel_value_satoshis * 1000;
9783
9790
assert_eq!(chan_2.context.holder_max_htlc_value_in_flight_msat, (chan_2_value_msat as f64 * 0.99) as u64);
9784
9791
@@ -9798,14 +9805,14 @@ mod tests {
9798
9805
9799
9806
// Test that `OutboundV1Channel::new` uses the lower bound of the configurable percentage values (1%)
9800
9807
// if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a value less than 1.
9801
- 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();
9808
+ 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, &&logger ).unwrap();
9802
9809
let chan_5_value_msat = chan_5.context.channel_value_satoshis * 1000;
9803
9810
assert_eq!(chan_5.context.holder_max_htlc_value_in_flight_msat, (chan_5_value_msat as f64 * 0.01) as u64);
9804
9811
9805
9812
// Test that `OutboundV1Channel::new` uses the upper bound of the configurable percentage values
9806
9813
// (100%) if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a larger value
9807
9814
// than 100.
9808
- 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();
9815
+ 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, &&logger ).unwrap();
9809
9816
let chan_6_value_msat = chan_6.context.channel_value_satoshis * 1000;
9810
9817
assert_eq!(chan_6.context.holder_max_htlc_value_in_flight_msat, chan_6_value_msat);
9811
9818
@@ -9858,7 +9865,7 @@ mod tests {
9858
9865
9859
9866
let mut outbound_node_config = UserConfig::default();
9860
9867
outbound_node_config.channel_handshake_config.their_channel_reserve_proportional_millionths = (outbound_selected_channel_reserve_perc * 1_000_000.0) as u32;
9861
- 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();
9868
+ 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, &&logger ).unwrap();
9862
9869
9863
9870
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);
9864
9871
assert_eq!(chan.context.holder_selected_channel_reserve_satoshis, expected_outbound_selected_chan_reserve);
@@ -9895,7 +9902,7 @@ mod tests {
9895
9902
// Create Node A's channel pointing to Node B's pubkey
9896
9903
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
9897
9904
let config = UserConfig::default();
9898
- 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();
9905
+ 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, &&logger ).unwrap();
9899
9906
9900
9907
// Create Node B's channel by receiving Node A's open_channel message
9901
9908
// Make sure A's dust limit is as we expect.
@@ -9971,7 +9978,7 @@ mod tests {
9971
9978
let config = UserConfig::default();
9972
9979
let features = channelmanager::provided_init_features(&config);
9973
9980
let mut outbound_chan = OutboundV1Channel::<&TestKeysInterface>::new(
9974
- &feeest, &&keys_provider, &&keys_provider, node_b_node_id, &features, 10000000, 100000, 42, &config, 0, 42, None
9981
+ &feeest, &&keys_provider, &&keys_provider, node_b_node_id, &features, 10000000, 100000, 42, &config, 0, 42, None, &&logger
9975
9982
).unwrap();
9976
9983
let inbound_chan = InboundV1Channel::<&TestKeysInterface>::new(
9977
9984
&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_channel_type_features(&config),
@@ -10872,7 +10879,7 @@ mod tests {
10872
10879
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
10873
10880
let config = UserConfig::default();
10874
10881
let node_a_chan = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider,
10875
- node_b_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42, None).unwrap();
10882
+ node_b_node_id, &channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42, None, &&logger ).unwrap();
10876
10883
10877
10884
let mut channel_type_features = ChannelTypeFeatures::only_static_remote_key();
10878
10885
channel_type_features.set_zero_conf_required();
@@ -10907,7 +10914,7 @@ mod tests {
10907
10914
let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
10908
10915
&fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
10909
10916
&channelmanager::provided_init_features(&UserConfig::default()), 10000000, 100000, 42,
10910
- &config, 0, 42, None
10917
+ &config, 0, 42, None, &&logger
10911
10918
).unwrap();
10912
10919
assert!(!channel_a.context.channel_type.supports_anchors_zero_fee_htlc_tx());
10913
10920
@@ -10918,7 +10925,7 @@ mod tests {
10918
10925
let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
10919
10926
&fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
10920
10927
&channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42,
10921
- None
10928
+ None, &&logger
10922
10929
).unwrap();
10923
10930
10924
10931
let open_channel_msg = channel_a.get_open_channel(ChainHash::using_genesis_block(network));
@@ -10956,7 +10963,7 @@ mod tests {
10956
10963
let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
10957
10964
&fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
10958
10965
&channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42,
10959
- None
10966
+ None, &&logger
10960
10967
).unwrap();
10961
10968
10962
10969
// Set `channel_type` to `None` to force the implicit feature negotiation.
@@ -11003,7 +11010,7 @@ mod tests {
11003
11010
let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
11004
11011
&fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
11005
11012
&channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42,
11006
- None
11013
+ None, &&logger
11007
11014
).unwrap();
11008
11015
11009
11016
let mut open_channel_msg = channel_a.get_open_channel(ChainHash::using_genesis_block(network));
@@ -11022,7 +11029,7 @@ mod tests {
11022
11029
// LDK.
11023
11030
let mut channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
11024
11031
&fee_estimator, &&keys_provider, &&keys_provider, node_id_b, &simple_anchors_init,
11025
- 10000000, 100000, 42, &config, 0, 42, None
11032
+ 10000000, 100000, 42, &config, 0, 42, None, &&logger
11026
11033
).unwrap();
11027
11034
11028
11035
let open_channel_msg = channel_a.get_open_channel(ChainHash::using_genesis_block(network));
@@ -11072,7 +11079,8 @@ mod tests {
11072
11079
&config,
11073
11080
0,
11074
11081
42,
11075
- None
11082
+ None,
11083
+ &&logger
11076
11084
).unwrap();
11077
11085
11078
11086
let open_channel_msg = node_a_chan.get_open_channel(ChainHash::using_genesis_block(network));
0 commit comments