Skip to content

Commit eb2d5e1

Browse files
committed
Add logger as parameter in creating ChannelContext
1 parent df01208 commit eb2d5e1

File tree

3 files changed

+35
-26
lines changed

3 files changed

+35
-26
lines changed

lightning/src/ln/channel.rs

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1882,7 +1882,7 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
18821882
Ok(channel_context)
18831883
}
18841884

1885-
fn new_for_outbound_channel<'a, ES: Deref, F: Deref>(
1885+
fn new_for_outbound_channel<'a, ES: Deref, F: Deref, L: Deref>(
18861886
fee_estimator: &'a LowerBoundedFeeEstimator<F>,
18871887
entropy_source: &'a ES,
18881888
signer_provider: &'a SP,
@@ -1899,11 +1899,13 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
18991899
channel_keys_id: [u8; 32],
19001900
holder_signer: <SP::Target as SignerProvider>::EcdsaSigner,
19011901
pubkeys: ChannelPublicKeys,
1902+
logger: &L,
19021903
) -> Result<ChannelContext<SP>, APIError>
19031904
where
19041905
ES::Target: EntropySource,
19051906
F::Target: FeeEstimator,
19061907
SP::Target: SignerProvider,
1908+
L::Target: Logger,
19071909
{
19081910
// This will be updated with the counterparty contribution if this is a dual-funded channel
19091911
let channel_value_satoshis = funding_satoshis;
@@ -7372,13 +7374,14 @@ pub(super) struct OutboundV1Channel<SP: Deref> where SP::Target: SignerProvider
73727374
}
73737375

73747376
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>(
73767378
fee_estimator: &LowerBoundedFeeEstimator<F>, entropy_source: &ES, signer_provider: &SP, counterparty_node_id: PublicKey, their_features: &InitFeatures,
73777379
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
73797381
) -> Result<OutboundV1Channel<SP>, APIError>
73807382
where ES::Target: EntropySource,
7381-
F::Target: FeeEstimator
7383+
F::Target: FeeEstimator,
7384+
L::Target: Logger,
73827385
{
73837386
let holder_selected_channel_reserve_satoshis = get_holder_selected_channel_reserve_satoshis(channel_value_satoshis, config);
73847387
if holder_selected_channel_reserve_satoshis < MIN_CHAN_DUST_LIMIT_SATOSHIS {
@@ -7410,6 +7413,7 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
74107413
channel_keys_id,
74117414
holder_signer,
74127415
pubkeys,
7416+
logger,
74137417
)?,
74147418
unfunded_context: UnfundedChannelContext { unfunded_channel_age_ticks: 0 }
74157419
};
@@ -9523,11 +9527,12 @@ mod tests {
95239527
keys_provider.expect(OnGetShutdownScriptpubkey {
95249528
returns: non_v0_segwit_shutdown_script.clone(),
95259529
});
9530+
let logger = test_utils::TestLogger::new();
95269531

95279532
let secp_ctx = Secp256k1::new();
95289533
let node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
95299534
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) {
95319536
Err(APIError::IncompatibleShutdownScript { script }) => {
95329537
assert_eq!(script.into_inner(), non_v0_segwit_shutdown_script.into_inner());
95339538
},
@@ -9547,10 +9552,11 @@ mod tests {
95479552
let seed = [42; 32];
95489553
let network = Network::Testnet;
95499554
let keys_provider = test_utils::TestKeysInterface::new(&seed, network);
9555+
let logger = test_utils::TestLogger::new();
95509556

95519557
let node_a_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
95529558
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();
95549560

95559561
// Now change the fee so we can check that the fee in the open_channel message is the
95569562
// same as the old fee.
@@ -9577,7 +9583,7 @@ mod tests {
95779583
// Create Node A's channel pointing to Node B's pubkey
95789584
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
95799585
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();
95819587

95829588
// Create Node B's channel by receiving Node A's open_channel message
95839589
// Make sure A's dust limit is as we expect.
@@ -9657,10 +9663,11 @@ mod tests {
96579663
let seed = [42; 32];
96589664
let network = Network::Testnet;
96599665
let keys_provider = test_utils::TestKeysInterface::new(&seed, network);
9666+
let logger = test_utils::TestLogger::new();
96609667

96619668
let node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
96629669
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();
96649671

96659672
let commitment_tx_fee_0_htlcs = commit_tx_fee_msat(chan.context.feerate_per_kw, 0, chan.context.get_channel_type());
96669673
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 {
97099716
// Create Node A's channel pointing to Node B's pubkey
97109717
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
97119718
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();
97139720

97149721
// Create Node B's channel by receiving Node A's open_channel message
97159722
let open_channel_msg = node_a_chan.get_open_channel(chain_hash);
@@ -9773,12 +9780,12 @@ mod tests {
97739780
// Test that `OutboundV1Channel::new` creates a channel with the correct value for
97749781
// `holder_max_htlc_value_in_flight_msat`, when configured with a valid percentage value,
97759782
// 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();
97779784
let chan_1_value_msat = chan_1.context.channel_value_satoshis * 1000;
97789785
assert_eq!(chan_1.context.holder_max_htlc_value_in_flight_msat, (chan_1_value_msat as f64 * 0.02) as u64);
97799786

97809787
// 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();
97829789
let chan_2_value_msat = chan_2.context.channel_value_satoshis * 1000;
97839790
assert_eq!(chan_2.context.holder_max_htlc_value_in_flight_msat, (chan_2_value_msat as f64 * 0.99) as u64);
97849791

@@ -9798,14 +9805,14 @@ mod tests {
97989805

97999806
// Test that `OutboundV1Channel::new` uses the lower bound of the configurable percentage values (1%)
98009807
// 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();
98029809
let chan_5_value_msat = chan_5.context.channel_value_satoshis * 1000;
98039810
assert_eq!(chan_5.context.holder_max_htlc_value_in_flight_msat, (chan_5_value_msat as f64 * 0.01) as u64);
98049811

98059812
// Test that `OutboundV1Channel::new` uses the upper bound of the configurable percentage values
98069813
// (100%) if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a larger value
98079814
// 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();
98099816
let chan_6_value_msat = chan_6.context.channel_value_satoshis * 1000;
98109817
assert_eq!(chan_6.context.holder_max_htlc_value_in_flight_msat, chan_6_value_msat);
98119818

@@ -9858,7 +9865,7 @@ mod tests {
98589865

98599866
let mut outbound_node_config = UserConfig::default();
98609867
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();
98629869

98639870
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);
98649871
assert_eq!(chan.context.holder_selected_channel_reserve_satoshis, expected_outbound_selected_chan_reserve);
@@ -9895,7 +9902,7 @@ mod tests {
98959902
// Create Node A's channel pointing to Node B's pubkey
98969903
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
98979904
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();
98999906

99009907
// Create Node B's channel by receiving Node A's open_channel message
99019908
// Make sure A's dust limit is as we expect.
@@ -9971,7 +9978,7 @@ mod tests {
99719978
let config = UserConfig::default();
99729979
let features = channelmanager::provided_init_features(&config);
99739980
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
99759982
).unwrap();
99769983
let inbound_chan = InboundV1Channel::<&TestKeysInterface>::new(
99779984
&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_channel_type_features(&config),
@@ -10872,7 +10879,7 @@ mod tests {
1087210879
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
1087310880
let config = UserConfig::default();
1087410881
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();
1087610883

1087710884
let mut channel_type_features = ChannelTypeFeatures::only_static_remote_key();
1087810885
channel_type_features.set_zero_conf_required();
@@ -10907,7 +10914,7 @@ mod tests {
1090710914
let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
1090810915
&fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
1090910916
&channelmanager::provided_init_features(&UserConfig::default()), 10000000, 100000, 42,
10910-
&config, 0, 42, None
10917+
&config, 0, 42, None, &&logger
1091110918
).unwrap();
1091210919
assert!(!channel_a.context.channel_type.supports_anchors_zero_fee_htlc_tx());
1091310920

@@ -10918,7 +10925,7 @@ mod tests {
1091810925
let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
1091910926
&fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
1092010927
&channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42,
10921-
None
10928+
None, &&logger
1092210929
).unwrap();
1092310930

1092410931
let open_channel_msg = channel_a.get_open_channel(ChainHash::using_genesis_block(network));
@@ -10956,7 +10963,7 @@ mod tests {
1095610963
let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
1095710964
&fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
1095810965
&channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42,
10959-
None
10966+
None, &&logger
1096010967
).unwrap();
1096110968

1096210969
// Set `channel_type` to `None` to force the implicit feature negotiation.
@@ -11003,7 +11010,7 @@ mod tests {
1100311010
let channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
1100411011
&fee_estimator, &&keys_provider, &&keys_provider, node_id_b,
1100511012
&channelmanager::provided_init_features(&config), 10000000, 100000, 42, &config, 0, 42,
11006-
None
11013+
None, &&logger
1100711014
).unwrap();
1100811015

1100911016
let mut open_channel_msg = channel_a.get_open_channel(ChainHash::using_genesis_block(network));
@@ -11022,7 +11029,7 @@ mod tests {
1102211029
// LDK.
1102311030
let mut channel_a = OutboundV1Channel::<&TestKeysInterface>::new(
1102411031
&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
1102611033
).unwrap();
1102711034

1102811035
let open_channel_msg = channel_a.get_open_channel(ChainHash::using_genesis_block(network));
@@ -11072,7 +11079,8 @@ mod tests {
1107211079
&config,
1107311080
0,
1107411081
42,
11075-
None
11082+
None,
11083+
&&logger
1107611084
).unwrap();
1107711085

1107811086
let open_channel_msg = node_a_chan.get_open_channel(ChainHash::using_genesis_block(network));

lightning/src/ln/channelmanager.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3283,7 +3283,7 @@ where
32833283
let config = if override_config.is_some() { override_config.as_ref().unwrap() } else { &self.default_configuration };
32843284
match OutboundV1Channel::new(&self.fee_estimator, &self.entropy_source, &self.signer_provider, their_network_key,
32853285
their_features, channel_value_satoshis, push_msat, user_channel_id, config,
3286-
self.best_block.read().unwrap().height, outbound_scid_alias, temporary_channel_id)
3286+
self.best_block.read().unwrap().height, outbound_scid_alias, temporary_channel_id, &self.logger)
32873287
{
32883288
Ok(res) => res,
32893289
Err(e) => {

lightning/src/ln/functional_tests.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use crate::ln::features::{ChannelFeatures, ChannelTypeFeatures, NodeFeatures};
3131
use crate::ln::msgs;
3232
use crate::ln::msgs::{ChannelMessageHandler, RoutingMessageHandler, ErrorAction};
3333
use crate::util::test_channel_signer::TestChannelSigner;
34-
use crate::util::test_utils::{self, WatchtowerPersister};
34+
use crate::util::test_utils::{self, TestLogger, WatchtowerPersister};
3535
use crate::util::errors::APIError;
3636
use crate::util::ser::{Writeable, ReadableArgs};
3737
use crate::util::string::UntrustedString;
@@ -7233,11 +7233,12 @@ fn test_user_configurable_csv_delay() {
72337233
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
72347234
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &user_cfgs);
72357235
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
7236+
let logger = TestLogger::new();
72367237

72377238
// We test config.our_to_self > BREAKDOWN_TIMEOUT is enforced in OutboundV1Channel::new()
72387239
if let Err(error) = OutboundV1Channel::new(&LowerBoundedFeeEstimator::new(&test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) }),
72397240
&nodes[0].keys_manager, &nodes[0].keys_manager, nodes[1].node.get_our_node_id(), &nodes[1].node.init_features(), 1000000, 1000000, 0,
7240-
&low_our_to_self_config, 0, 42, None)
7241+
&low_our_to_self_config, 0, 42, None, &&logger)
72417242
{
72427243
match error {
72437244
APIError::APIMisuseError { err } => { assert!(regex::Regex::new(r"Configured with an unreasonable our_to_self_delay \(\d+\) putting user funds at risks").unwrap().is_match(err.as_str())); },

0 commit comments

Comments
 (0)