Skip to content

Commit 2e343e7

Browse files
Merge pull request #1797 from arik-so/2022-10-channel-manager-deparameterization
Deparametrize `ChannelManager` to infer `Signer` from its `KeysInterface`.
2 parents 3b2f694 + 22c367b commit 2e343e7

File tree

14 files changed

+130
-131
lines changed

14 files changed

+130
-131
lines changed

fuzz/src/chanmon_consistency.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ fn check_payment_err(send_err: PaymentSendFailure) {
292292
}
293293
}
294294

295-
type ChanMan = ChannelManager<EnforcingSigner, Arc<TestChainMonitor>, Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>;
295+
type ChanMan = ChannelManager<Arc<TestChainMonitor>, Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>;
296296

297297
#[inline]
298298
fn get_payment_secret_hash(dest: &ChanMan, payment_id: &mut u8) -> Option<(PaymentSecret, PaymentHash)> {

fuzz/src/full_stack.rs

-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ impl<'a> std::hash::Hash for Peer<'a> {
163163
}
164164

165165
type ChannelMan = ChannelManager<
166-
EnforcingSigner,
167166
Arc<chainmonitor::ChainMonitor<EnforcingSigner, Arc<dyn chain::Filter>, Arc<TestBroadcaster>, Arc<FuzzEstimator>, Arc<dyn Logger>, Arc<TestPersister>>>,
168167
Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>;
169168
type PeerMan<'a> = PeerManager<Peer<'a>, Arc<ChannelMan>, Arc<P2PGossipSync<Arc<NetworkGraph<Arc<dyn Logger>>>, Arc<dyn chain::Access>, Arc<dyn Logger>>>, IgnoringMessageHandler, Arc<dyn Logger>, IgnoringMessageHandler>;

lightning-background-processor/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ pub async fn process_events_async<
382382
EH: 'static + EventHandler + Send,
383383
PS: 'static + Deref + Send,
384384
M: 'static + Deref<Target = ChainMonitor<Signer, CF, T, F, L, P>> + Send + Sync,
385-
CM: 'static + Deref<Target = ChannelManager<Signer, CW, T, K, F, L>> + Send + Sync,
385+
CM: 'static + Deref<Target = ChannelManager<CW, T, K, F, L>> + Send + Sync,
386386
PGS: 'static + Deref<Target = P2PGossipSync<G, CA, L>> + Send + Sync,
387387
RGS: 'static + Deref<Target = RapidGossipSync<G, L>> + Send,
388388
UMH: 'static + Deref + Send + Sync,
@@ -488,7 +488,7 @@ impl BackgroundProcessor {
488488
EH: 'static + EventHandler + Send,
489489
PS: 'static + Deref + Send,
490490
M: 'static + Deref<Target = ChainMonitor<Signer, CF, T, F, L, P>> + Send + Sync,
491-
CM: 'static + Deref<Target = ChannelManager<Signer, CW, T, K, F, L>> + Send + Sync,
491+
CM: 'static + Deref<Target = ChannelManager<CW, T, K, F, L>> + Send + Sync,
492492
PGS: 'static + Deref<Target = P2PGossipSync<G, CA, L>> + Send + Sync,
493493
RGS: 'static + Deref<Target = RapidGossipSync<G, L>> + Send,
494494
UMH: 'static + Deref + Send + Sync,

lightning-block-sync/src/init.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ BlockSourceResult<ValidatedBlockHeader> where B::Target: BlockSource {
9595
/// config,
9696
/// vec![&mut monitor],
9797
/// );
98-
/// <(BlockHash, ChannelManager<S, &ChainMonitor<S, &C, &T, &F, &L, &P>, &T, &K, &F, &L>)>::read(
98+
/// <(BlockHash, ChannelManager<&ChainMonitor<S, &C, &T, &F, &L, &P>, &T, &K, &F, &L>)>::read(
9999
/// &mut Cursor::new(&serialized_manager), read_args).unwrap()
100100
/// };
101101
///

lightning-invoice/src/utils.rs

+23-23
Original file line numberDiff line numberDiff line change
@@ -235,14 +235,14 @@ where
235235
///
236236
/// `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
237237
/// in excess of the current time.
238-
pub fn create_invoice_from_channelmanager<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
239-
channelmanager: &ChannelManager<Signer, M, T, K, F, L>, keys_manager: K, logger: L,
238+
pub fn create_invoice_from_channelmanager<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
239+
channelmanager: &ChannelManager<M, T, K, F, L>, keys_manager: K, logger: L,
240240
network: Currency, amt_msat: Option<u64>, description: String, invoice_expiry_delta_secs: u32
241241
) -> Result<Invoice, SignOrCreationError<()>>
242242
where
243-
M::Target: chain::Watch<Signer>,
243+
M::Target: chain::Watch<<K::Target as KeysInterface>::Signer>,
244244
T::Target: BroadcasterInterface,
245-
K::Target: KeysInterface<Signer = Signer>,
245+
K::Target: KeysInterface,
246246
F::Target: FeeEstimator,
247247
L::Target: Logger,
248248
{
@@ -265,15 +265,15 @@ where
265265
///
266266
/// `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
267267
/// in excess of the current time.
268-
pub fn create_invoice_from_channelmanager_with_description_hash<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
269-
channelmanager: &ChannelManager<Signer, M, T, K, F, L>, keys_manager: K, logger: L,
268+
pub fn create_invoice_from_channelmanager_with_description_hash<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
269+
channelmanager: &ChannelManager<M, T, K, F, L>, keys_manager: K, logger: L,
270270
network: Currency, amt_msat: Option<u64>, description_hash: Sha256,
271271
invoice_expiry_delta_secs: u32
272272
) -> Result<Invoice, SignOrCreationError<()>>
273273
where
274-
M::Target: chain::Watch<Signer>,
274+
M::Target: chain::Watch<<K::Target as KeysInterface>::Signer>,
275275
T::Target: BroadcasterInterface,
276-
K::Target: KeysInterface<Signer = Signer>,
276+
K::Target: KeysInterface,
277277
F::Target: FeeEstimator,
278278
L::Target: Logger,
279279
{
@@ -292,15 +292,15 @@ where
292292
/// See [`create_invoice_from_channelmanager_with_description_hash`]
293293
/// This version can be used in a `no_std` environment, where [`std::time::SystemTime`] is not
294294
/// available and the current time is supplied by the caller.
295-
pub fn create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
296-
channelmanager: &ChannelManager<Signer, M, T, K, F, L>, keys_manager: K, logger: L,
295+
pub fn create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
296+
channelmanager: &ChannelManager<M, T, K, F, L>, keys_manager: K, logger: L,
297297
network: Currency, amt_msat: Option<u64>, description_hash: Sha256,
298298
duration_since_epoch: Duration, invoice_expiry_delta_secs: u32
299299
) -> Result<Invoice, SignOrCreationError<()>>
300300
where
301-
M::Target: chain::Watch<Signer>,
301+
M::Target: chain::Watch<<K::Target as KeysInterface>::Signer>,
302302
T::Target: BroadcasterInterface,
303-
K::Target: KeysInterface<Signer = Signer>,
303+
K::Target: KeysInterface,
304304
F::Target: FeeEstimator,
305305
L::Target: Logger,
306306
{
@@ -314,15 +314,15 @@ where
314314
/// See [`create_invoice_from_channelmanager`]
315315
/// This version can be used in a `no_std` environment, where [`std::time::SystemTime`] is not
316316
/// available and the current time is supplied by the caller.
317-
pub fn create_invoice_from_channelmanager_and_duration_since_epoch<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
318-
channelmanager: &ChannelManager<Signer, M, T, K, F, L>, keys_manager: K, logger: L,
317+
pub fn create_invoice_from_channelmanager_and_duration_since_epoch<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
318+
channelmanager: &ChannelManager<M, T, K, F, L>, keys_manager: K, logger: L,
319319
network: Currency, amt_msat: Option<u64>, description: String, duration_since_epoch: Duration,
320320
invoice_expiry_delta_secs: u32
321321
) -> Result<Invoice, SignOrCreationError<()>>
322322
where
323-
M::Target: chain::Watch<Signer>,
323+
M::Target: chain::Watch<<K::Target as KeysInterface>::Signer>,
324324
T::Target: BroadcasterInterface,
325-
K::Target: KeysInterface<Signer = Signer>,
325+
K::Target: KeysInterface,
326326
F::Target: FeeEstimator,
327327
L::Target: Logger,
328328
{
@@ -335,15 +335,15 @@ where
335335
)
336336
}
337337

338-
fn _create_invoice_from_channelmanager_and_duration_since_epoch<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
339-
channelmanager: &ChannelManager<Signer, M, T, K, F, L>, keys_manager: K, logger: L,
338+
fn _create_invoice_from_channelmanager_and_duration_since_epoch<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>(
339+
channelmanager: &ChannelManager<M, T, K, F, L>, keys_manager: K, logger: L,
340340
network: Currency, amt_msat: Option<u64>, description: InvoiceDescription,
341341
duration_since_epoch: Duration, invoice_expiry_delta_secs: u32
342342
) -> Result<Invoice, SignOrCreationError<()>>
343343
where
344-
M::Target: chain::Watch<Signer>,
344+
M::Target: chain::Watch<<K::Target as KeysInterface>::Signer>,
345345
T::Target: BroadcasterInterface,
346-
K::Target: KeysInterface<Signer = Signer>,
346+
K::Target: KeysInterface,
347347
F::Target: FeeEstimator,
348348
L::Target: Logger,
349349
{
@@ -585,11 +585,11 @@ impl<G: Deref<Target = NetworkGraph<L>>, L: Deref, S: Deref> Router for DefaultR
585585
}
586586
}
587587

588-
impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> Payer for ChannelManager<Signer, M, T, K, F, L>
588+
impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> Payer for ChannelManager<M, T, K, F, L>
589589
where
590-
M::Target: chain::Watch<Signer>,
590+
M::Target: chain::Watch<<K::Target as KeysInterface>::Signer>,
591591
T::Target: BroadcasterInterface,
592-
K::Target: KeysInterface<Signer = Signer>,
592+
K::Target: KeysInterface,
593593
F::Target: FeeEstimator,
594594
L::Target: Logger,
595595
{

lightning/src/ln/chanmon_update_fail_tests.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -2231,7 +2231,7 @@ fn do_channel_holding_cell_serialize(disconnect: bool, reload_a: bool) {
22312231
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
22322232
let persister: test_utils::TestPersister;
22332233
let new_chain_monitor: test_utils::TestChainMonitor;
2234-
let nodes_0_deserialized: ChannelManager<EnforcingSigner, &test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>;
2234+
let nodes_0_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>;
22352235
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
22362236

22372237
let chan_id = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 15_000_000, 7_000_000_000, channelmanager::provided_init_features(), channelmanager::provided_init_features()).2;
@@ -2305,7 +2305,7 @@ fn do_channel_holding_cell_serialize(disconnect: bool, reload_a: bool) {
23052305
nodes_0_deserialized = {
23062306
let mut channel_monitors = HashMap::new();
23072307
channel_monitors.insert(chan_0_monitor.get_funding_txo().0, &mut chan_0_monitor);
2308-
<(BlockHash, ChannelManager<EnforcingSigner, &test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>)>::read(&mut nodes_0_read, ChannelManagerReadArgs {
2308+
<(BlockHash, ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>)>::read(&mut nodes_0_read, ChannelManagerReadArgs {
23092309
default_config: config,
23102310
keys_manager,
23112311
fee_estimator: node_cfgs[0].fee_estimator,
@@ -2756,7 +2756,7 @@ fn do_test_outbound_reload_without_init_mon(use_0conf: bool) {
27562756

27572757
let persister: test_utils::TestPersister;
27582758
let new_chain_monitor: test_utils::TestChainMonitor;
2759-
let nodes_0_deserialized: ChannelManager<EnforcingSigner, &test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>;
2759+
let nodes_0_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>;
27602760

27612761
let mut chan_config = test_default_channel_config();
27622762
chan_config.manually_accept_inbound_channels = true;
@@ -2834,7 +2834,7 @@ fn do_test_outbound_reload_without_init_mon(use_0conf: bool) {
28342834
let mut nodes_0_read = &nodes_0_serialized[..];
28352835
let config = UserConfig::default();
28362836
nodes_0_deserialized = {
2837-
<(BlockHash, ChannelManager<EnforcingSigner, &test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>)>::read(&mut nodes_0_read, ChannelManagerReadArgs {
2837+
<(BlockHash, ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>)>::read(&mut nodes_0_read, ChannelManagerReadArgs {
28382838
default_config: config,
28392839
keys_manager,
28402840
fee_estimator: node_cfgs[0].fee_estimator,
@@ -2866,7 +2866,7 @@ fn do_test_inbound_reload_without_init_mon(use_0conf: bool, lock_commitment: boo
28662866

28672867
let persister: test_utils::TestPersister;
28682868
let new_chain_monitor: test_utils::TestChainMonitor;
2869-
let nodes_1_deserialized: ChannelManager<EnforcingSigner, &test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>;
2869+
let nodes_1_deserialized: ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>;
28702870

28712871
let mut chan_config = test_default_channel_config();
28722872
chan_config.manually_accept_inbound_channels = true;
@@ -2940,7 +2940,7 @@ fn do_test_inbound_reload_without_init_mon(use_0conf: bool, lock_commitment: boo
29402940
let mut nodes_1_read = &nodes_1_serialized[..];
29412941
let config = UserConfig::default();
29422942
nodes_1_deserialized = {
2943-
<(BlockHash, ChannelManager<EnforcingSigner, &test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>)>::read(&mut nodes_1_read, ChannelManagerReadArgs {
2943+
<(BlockHash, ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestLogger>)>::read(&mut nodes_1_read, ChannelManagerReadArgs {
29442944
default_config: config,
29452945
keys_manager,
29462946
fee_estimator: node_cfgs[1].fee_estimator,

0 commit comments

Comments
 (0)