Skip to content

Commit eafdaa2

Browse files
committed
Split up generic parameters that used to comprise KeysInterface.
1 parent cfdb113 commit eafdaa2

27 files changed

+554
-447
lines changed

fuzz/src/chanmon_consistency.rs

+7-5
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ impl chain::Watch<EnforcingSigner> for TestChainMonitor {
141141
hash_map::Entry::Vacant(_) => panic!("Didn't have monitor on update call"),
142142
};
143143
let deserialized_monitor = <(BlockHash, channelmonitor::ChannelMonitor<EnforcingSigner>)>::
144-
read(&mut Cursor::new(&map_entry.get().1), &*self.keys).unwrap().1;
144+
read(&mut Cursor::new(&map_entry.get().1), (&*self.keys, &*self.keys)).unwrap().1;
145145
deserialized_monitor.update_monitor(&update, &&TestBroadcaster{}, &FuzzEstimator { ret_val: atomic::AtomicU32::new(253) }, &self.logger).unwrap();
146146
let mut ser = VecWriter(Vec::new());
147147
deserialized_monitor.write(&mut ser).unwrap();
@@ -308,7 +308,7 @@ fn check_payment_err(send_err: PaymentSendFailure) {
308308
}
309309
}
310310

311-
type ChanMan = ChannelManager<Arc<TestChainMonitor>, Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>;
311+
type ChanMan = ChannelManager<Arc<TestChainMonitor>, Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<KeyProvider>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>;
312312

313313
#[inline]
314314
fn get_payment_secret_hash(dest: &ChanMan, payment_id: &mut u8) -> Option<(PaymentSecret, PaymentHash)> {
@@ -397,7 +397,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
397397
network,
398398
best_block: BestBlock::from_genesis(network),
399399
};
400-
(ChannelManager::new($fee_estimator.clone(), monitor.clone(), broadcast.clone(), Arc::clone(&logger), keys_manager.clone(), config, params),
400+
(ChannelManager::new($fee_estimator.clone(), monitor.clone(), broadcast.clone(), Arc::clone(&logger), keys_manager.clone(), keys_manager.clone(), keys_manager.clone(), config, params),
401401
monitor, keys_manager)
402402
} }
403403
}
@@ -418,7 +418,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
418418
let mut monitors = HashMap::new();
419419
let mut old_monitors = $old_monitors.latest_monitors.lock().unwrap();
420420
for (outpoint, (update_id, monitor_ser)) in old_monitors.drain() {
421-
monitors.insert(outpoint, <(BlockHash, ChannelMonitor<EnforcingSigner>)>::read(&mut Cursor::new(&monitor_ser), &*$keys_manager).expect("Failed to read monitor").1);
421+
monitors.insert(outpoint, <(BlockHash, ChannelMonitor<EnforcingSigner>)>::read(&mut Cursor::new(&monitor_ser), (&*$keys_manager, &*$keys_manager)).expect("Failed to read monitor").1);
422422
chain_monitor.latest_monitors.lock().unwrap().insert(outpoint, (update_id, monitor_ser));
423423
}
424424
let mut monitor_refs = HashMap::new();
@@ -427,7 +427,9 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
427427
}
428428

429429
let read_args = ChannelManagerReadArgs {
430-
keys_manager,
430+
entropy_source: keys_manager.clone(),
431+
node_signer: keys_manager.clone(),
432+
signer_provider: keys_manager.clone(),
431433
fee_estimator: $fee_estimator.clone(),
432434
chain_monitor: chain_monitor.clone(),
433435
tx_broadcaster: broadcast.clone(),

fuzz/src/chanmon_deser.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ impl Writer for VecWriter {
2222

2323
#[inline]
2424
pub fn do_test<Out: test_logger::Output>(data: &[u8], _out: Out) {
25-
if let Ok((latest_block_hash, monitor)) = <(BlockHash, channelmonitor::ChannelMonitor<EnforcingSigner>)>::read(&mut Cursor::new(data), &OnlyReadsKeysInterface {}) {
25+
if let Ok((latest_block_hash, monitor)) = <(BlockHash, channelmonitor::ChannelMonitor<EnforcingSigner>)>::read(&mut Cursor::new(data), (&OnlyReadsKeysInterface {}, &OnlyReadsKeysInterface {})) {
2626
let mut w = VecWriter(Vec::new());
2727
monitor.write(&mut w).unwrap();
28-
let deserialized_copy = <(BlockHash, channelmonitor::ChannelMonitor<EnforcingSigner>)>::read(&mut Cursor::new(&w.0), &OnlyReadsKeysInterface {}).unwrap();
28+
let deserialized_copy = <(BlockHash, channelmonitor::ChannelMonitor<EnforcingSigner>)>::read(&mut Cursor::new(&w.0), (&OnlyReadsKeysInterface {}, &OnlyReadsKeysInterface {})).unwrap();
2929
assert!(latest_block_hash == deserialized_copy.0);
3030
assert!(monitor == deserialized_copy.1);
3131
}

fuzz/src/full_stack.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ impl<'a> std::hash::Hash for Peer<'a> {
164164

165165
type ChannelMan = ChannelManager<
166166
Arc<chainmonitor::ChainMonitor<EnforcingSigner, Arc<dyn chain::Filter>, Arc<TestBroadcaster>, Arc<FuzzEstimator>, Arc<dyn Logger>, Arc<TestPersister>>>,
167-
Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>;
167+
Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<KeyProvider>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>;
168168
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>;
169169

170170
struct MoneyLossDetector<'a> {
@@ -422,7 +422,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
422422
network,
423423
best_block: BestBlock::from_genesis(network),
424424
};
425-
let channelmanager = Arc::new(ChannelManager::new(fee_est.clone(), monitor.clone(), broadcast.clone(), Arc::clone(&logger), keys_manager.clone(), config, params));
425+
let channelmanager = Arc::new(ChannelManager::new(fee_est.clone(), monitor.clone(), broadcast.clone(), Arc::clone(&logger), keys_manager.clone(), keys_manager.clone(), keys_manager.clone(), config, params));
426426
// Adding new calls to `EntropySource::get_secure_random_bytes` during startup can change all the
427427
// keys subsequently generated in this test. Rather than regenerating all the messages manually,
428428
// it's easier to just increment the counter here so the keys don't change.

fuzz/src/onion_message.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pub fn do_test<L: Logger>(data: &[u8], logger: &L) {
3030
counter: AtomicU64::new(0),
3131
};
3232
let custom_msg_handler = TestCustomMessageHandler {};
33-
let onion_messenger = OnionMessenger::new(&keys_manager, logger, &custom_msg_handler);
33+
let onion_messenger = OnionMessenger::new(&keys_manager, &keys_manager, logger, &custom_msg_handler);
3434
let mut pk = [2; 33]; pk[1] = 0xff;
3535
let peer_node_id_not_used = PublicKey::from_slice(&pk).unwrap();
3636
onion_messenger.handle_onion_message(&peer_node_id_not_used, &msg);

lightning-background-processor/src/lib.rs

+23-15
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,9 @@ pub async fn process_events_async<
340340
CF: 'static + Deref + Send + Sync,
341341
CW: 'static + Deref + Send + Sync,
342342
T: 'static + Deref + Send + Sync,
343-
K: 'static + Deref + Send + Sync,
343+
ES: 'static + Deref + Send + Sync,
344+
NS: 'static + Deref + Send + Sync,
345+
SP: 'static + Deref + Send + Sync,
344346
F: 'static + Deref + Send + Sync,
345347
G: 'static + Deref<Target = NetworkGraph<L>> + Send + Sync,
346348
L: 'static + Deref + Send + Sync,
@@ -352,8 +354,8 @@ pub async fn process_events_async<
352354
EventHandlerFuture: core::future::Future<Output = ()>,
353355
EventHandler: Fn(Event) -> EventHandlerFuture,
354356
PS: 'static + Deref + Send,
355-
M: 'static + Deref<Target = ChainMonitor<<K::Target as SignerProvider>::Signer, CF, T, F, L, P>> + Send + Sync,
356-
CM: 'static + Deref<Target = ChannelManager<CW, T, K, F, L>> + Send + Sync,
357+
M: 'static + Deref<Target = ChainMonitor<<SP::Target as SignerProvider>::Signer, CF, T, F, L, P>> + Send + Sync,
358+
CM: 'static + Deref<Target = ChannelManager<CW, T, ES, NS, SP, F, L>> + Send + Sync,
357359
PGS: 'static + Deref<Target = P2PGossipSync<G, CA, L>> + Send + Sync,
358360
RGS: 'static + Deref<Target = RapidGossipSync<G, L>> + Send,
359361
UMH: 'static + Deref + Send + Sync,
@@ -370,17 +372,19 @@ pub async fn process_events_async<
370372
where
371373
CA::Target: 'static + chain::Access,
372374
CF::Target: 'static + chain::Filter,
373-
CW::Target: 'static + chain::Watch<<K::Target as SignerProvider>::Signer>,
375+
CW::Target: 'static + chain::Watch<<SP::Target as SignerProvider>::Signer>,
374376
T::Target: 'static + BroadcasterInterface,
375-
K::Target: 'static + EntropySource + NodeSigner + SignerProvider,
377+
ES::Target: 'static + EntropySource,
378+
NS::Target: 'static + NodeSigner,
379+
SP::Target: 'static + SignerProvider,
376380
F::Target: 'static + FeeEstimator,
377381
L::Target: 'static + Logger,
378-
P::Target: 'static + Persist<<K::Target as SignerProvider>::Signer>,
382+
P::Target: 'static + Persist<<SP::Target as SignerProvider>::Signer>,
379383
CMH::Target: 'static + ChannelMessageHandler,
380384
OMH::Target: 'static + OnionMessageHandler,
381385
RMH::Target: 'static + RoutingMessageHandler,
382386
UMH::Target: 'static + CustomMessageHandler,
383-
PS::Target: 'static + Persister<'a, CW, T, K, F, L, SC>,
387+
PS::Target: 'static + Persister<'a, CW, T, ES, NS, SP, F, L, SC>,
384388
{
385389
let mut should_break = true;
386390
let async_event_handler = |event| {
@@ -458,7 +462,9 @@ impl BackgroundProcessor {
458462
CF: 'static + Deref + Send + Sync,
459463
CW: 'static + Deref + Send + Sync,
460464
T: 'static + Deref + Send + Sync,
461-
K: 'static + Deref + Send + Sync,
465+
ES: 'static + Deref + Send + Sync,
466+
NS: 'static + Deref + Send + Sync,
467+
SP: 'static + Deref + Send + Sync,
462468
F: 'static + Deref + Send + Sync,
463469
G: 'static + Deref<Target = NetworkGraph<L>> + Send + Sync,
464470
L: 'static + Deref + Send + Sync,
@@ -469,8 +475,8 @@ impl BackgroundProcessor {
469475
RMH: 'static + Deref + Send + Sync,
470476
EH: 'static + EventHandler + Send,
471477
PS: 'static + Deref + Send,
472-
M: 'static + Deref<Target = ChainMonitor<<K::Target as SignerProvider>::Signer, CF, T, F, L, P>> + Send + Sync,
473-
CM: 'static + Deref<Target = ChannelManager<CW, T, K, F, L>> + Send + Sync,
478+
M: 'static + Deref<Target = ChainMonitor<<SP::Target as SignerProvider>::Signer, CF, T, F, L, P>> + Send + Sync,
479+
CM: 'static + Deref<Target = ChannelManager<CW, T, ES, NS, SP, F, L>> + Send + Sync,
474480
PGS: 'static + Deref<Target = P2PGossipSync<G, CA, L>> + Send + Sync,
475481
RGS: 'static + Deref<Target = RapidGossipSync<G, L>> + Send,
476482
UMH: 'static + Deref + Send + Sync,
@@ -484,17 +490,19 @@ impl BackgroundProcessor {
484490
where
485491
CA::Target: 'static + chain::Access,
486492
CF::Target: 'static + chain::Filter,
487-
CW::Target: 'static + chain::Watch<<K::Target as SignerProvider>::Signer>,
493+
CW::Target: 'static + chain::Watch<<SP::Target as SignerProvider>::Signer>,
488494
T::Target: 'static + BroadcasterInterface,
489-
K::Target: 'static + EntropySource + NodeSigner + SignerProvider,
495+
ES::Target: 'static + EntropySource,
496+
NS::Target: 'static + NodeSigner,
497+
SP::Target: 'static + SignerProvider,
490498
F::Target: 'static + FeeEstimator,
491499
L::Target: 'static + Logger,
492-
P::Target: 'static + Persist<<K::Target as SignerProvider>::Signer>,
500+
P::Target: 'static + Persist<<SP::Target as SignerProvider>::Signer>,
493501
CMH::Target: 'static + ChannelMessageHandler,
494502
OMH::Target: 'static + OnionMessageHandler,
495503
RMH::Target: 'static + RoutingMessageHandler,
496504
UMH::Target: 'static + CustomMessageHandler,
497-
PS::Target: 'static + Persister<'a, CW, T, K, F, L, SC>,
505+
PS::Target: 'static + Persister<'a, CW, T, ES, NS, SP, F, L, SC>,
498506
{
499507
let stop_thread = Arc::new(AtomicBool::new(false));
500508
let stop_thread_clone = stop_thread.clone();
@@ -733,7 +741,7 @@ mod tests {
733741
let chain_monitor = Arc::new(chainmonitor::ChainMonitor::new(Some(chain_source.clone()), tx_broadcaster.clone(), logger.clone(), fee_estimator.clone(), persister.clone()));
734742
let best_block = BestBlock::from_genesis(network);
735743
let params = ChainParameters { network, best_block };
736-
let manager = Arc::new(ChannelManager::new(fee_estimator.clone(), chain_monitor.clone(), tx_broadcaster.clone(), logger.clone(), keys_manager.clone(), UserConfig::default(), params));
744+
let manager = Arc::new(ChannelManager::new(fee_estimator.clone(), chain_monitor.clone(), tx_broadcaster.clone(), logger.clone(), keys_manager.clone(), keys_manager.clone(), keys_manager.clone(), UserConfig::default(), params));
737745
let network_graph = Arc::new(NetworkGraph::new(genesis_block.header.block_hash(), logger.clone()));
738746
let p2p_gossip_sync = Arc::new(P2PGossipSync::new(network_graph.clone(), Some(chain_source.clone()), logger.clone()));
739747
let rapid_gossip_sync = Arc::new(RapidGossipSync::new(network_graph.clone()));

lightning-block-sync/src/init.rs

+14-8
Original file line numberDiff line numberDiff line change
@@ -60,40 +60,46 @@ BlockSourceResult<ValidatedBlockHeader> where B::Target: BlockSource {
6060
///
6161
/// async fn init_sync<
6262
/// B: BlockSource,
63-
/// K: EntropySource + NodeSigner + SignerProvider,
63+
/// ES: EntropySource,
64+
/// NS: NodeSigner,
65+
/// SP: SignerProvider,
6466
/// T: BroadcasterInterface,
6567
/// F: FeeEstimator,
6668
/// L: Logger,
6769
/// C: chain::Filter,
68-
/// P: chainmonitor::Persist<K::Signer>,
70+
/// P: chainmonitor::Persist<SP::Signer>,
6971
/// >(
7072
/// block_source: &B,
71-
/// chain_monitor: &ChainMonitor<K::Signer, &C, &T, &F, &L, &P>,
73+
/// chain_monitor: &ChainMonitor<SP::Signer, &C, &T, &F, &L, &P>,
7274
/// config: UserConfig,
73-
/// keys_manager: &K,
75+
/// entropy_source: &ES,
76+
/// node_signer: &NS,
77+
/// signer_provider: &SP,
7478
/// tx_broadcaster: &T,
7579
/// fee_estimator: &F,
7680
/// logger: &L,
7781
/// persister: &P,
7882
/// ) {
7983
/// // Read a serialized channel monitor paired with the block hash when it was persisted.
8084
/// let serialized_monitor = "...";
81-
/// let (monitor_block_hash, mut monitor) = <(BlockHash, ChannelMonitor<K::Signer>)>::read(
82-
/// &mut Cursor::new(&serialized_monitor), keys_manager).unwrap();
85+
/// let (monitor_block_hash, mut monitor) = <(BlockHash, ChannelMonitor<SP::Signer>)>::read(
86+
/// &mut Cursor::new(&serialized_monitor), (entropy_source, signer_provider)).unwrap();
8387
///
8488
/// // Read the channel manager paired with the block hash when it was persisted.
8589
/// let serialized_manager = "...";
8690
/// let (manager_block_hash, mut manager) = {
8791
/// let read_args = ChannelManagerReadArgs::new(
88-
/// keys_manager,
92+
/// entropy_source,
93+
/// node_signer,
94+
/// signer_provider,
8995
/// fee_estimator,
9096
/// chain_monitor,
9197
/// tx_broadcaster,
9298
/// logger,
9399
/// config,
94100
/// vec![&mut monitor],
95101
/// );
96-
/// <(BlockHash, ChannelManager<&ChainMonitor<K::Signer, &C, &T, &F, &L, &P>, &T, &K, &F, &L>)>::read(
102+
/// <(BlockHash, ChannelManager<&ChainMonitor<SP::Signer, &C, &T, &F, &L, &P>, &T, &ES, &NS, &SP, &F, &L>)>::read(
97103
/// &mut Cursor::new(&serialized_manager), read_args).unwrap()
98104
/// };
99105
///

0 commit comments

Comments
 (0)