Skip to content

Commit adfbc78

Browse files
Aditya Sharmaadi2011
authored andcommitted
Enable ChainMonitor to distribute PeerStorage
To enable ChainMonitor sending peer storage to channel partners whenever a new block is added, We implement BaseMessageHandler for ChainMonitor. This allows the `ChainMonitor` to handle the peer storage distribution. Key changes: - Add BaseMessageHandler into the MessageHandler. - Implement BaseMessageHandler for ChainMonitor. - Process BaseMessageHandler events inside process_events().
1 parent 4f09dad commit adfbc78

File tree

9 files changed

+184
-56
lines changed

9 files changed

+184
-56
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ impl TestChainMonitor {
206206
logger.clone(),
207207
feeest,
208208
Arc::clone(&persister),
209+
keys.get_peer_storage_key(),
209210
)),
210211
logger,
211212
keys,

fuzz/src/full_stack.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ type PeerMan<'a> = PeerManager<
242242
Arc<dyn Logger>,
243243
IgnoringMessageHandler,
244244
Arc<KeyProvider>,
245+
IgnoringMessageHandler,
245246
>;
246247

247248
struct MoneyLossDetector<'a> {
@@ -634,6 +635,7 @@ pub fn do_test(mut data: &[u8], logger: &Arc<dyn Logger>) {
634635
Arc::clone(&logger),
635636
fee_est.clone(),
636637
Arc::new(TestPersister { update_ret: Mutex::new(ChannelMonitorUpdateStatus::Completed) }),
638+
keys_manager.get_peer_storage_key(),
637639
));
638640

639641
let network = Network::Bitcoin;
@@ -667,6 +669,7 @@ pub fn do_test(mut data: &[u8], logger: &Arc<dyn Logger>) {
667669
route_handler: gossip_sync.clone(),
668670
onion_message_handler: IgnoringMessageHandler {},
669671
custom_message_handler: IgnoringMessageHandler {},
672+
send_only_message_handler: IgnoringMessageHandler {},
670673
};
671674
let random_data = [
672675
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

lightning-background-processor/src/lib.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ use lightning::onion_message::messenger::AOnionMessenger;
3636
use lightning::routing::gossip::{NetworkGraph, P2PGossipSync};
3737
use lightning::routing::scoring::{ScoreUpdate, WriteableScore};
3838
use lightning::routing::utxo::UtxoLookup;
39+
use lightning::sign::EntropySource;
3940
use lightning::util::logger::Logger;
4041
use lightning::util::persist::Persister;
4142
#[cfg(feature = "std")]
@@ -659,7 +660,7 @@ use futures_util::{dummy_waker, OptionalSelector, Selector, SelectorOutput};
659660
/// # type OnionMessenger<B, F, FE> = lightning::onion_message::messenger::OnionMessenger<Arc<lightning::sign::KeysManager>, Arc<lightning::sign::KeysManager>, Arc<Logger>, Arc<ChannelManager<B, F, FE>>, Arc<lightning::onion_message::messenger::DefaultMessageRouter<Arc<NetworkGraph>, Arc<Logger>, Arc<lightning::sign::KeysManager>>>, Arc<ChannelManager<B, F, FE>>, lightning::ln::peer_handler::IgnoringMessageHandler, lightning::ln::peer_handler::IgnoringMessageHandler, lightning::ln::peer_handler::IgnoringMessageHandler>;
660661
/// # type LiquidityManager<B, F, FE> = lightning_liquidity::LiquidityManager<Arc<lightning::sign::KeysManager>, Arc<ChannelManager<B, F, FE>>, Arc<F>>;
661662
/// # type Scorer = RwLock<lightning::routing::scoring::ProbabilisticScorer<Arc<NetworkGraph>, Arc<Logger>>>;
662-
/// # type PeerManager<B, F, FE, UL> = lightning::ln::peer_handler::SimpleArcPeerManager<SocketDescriptor, ChainMonitor<B, F, FE>, B, FE, Arc<UL>, Logger>;
663+
/// # type PeerManager<B, F, FE, UL> = lightning::ln::peer_handler::SimpleArcPeerManager<SocketDescriptor, ChainMonitor<B, F, FE>, B, FE, Arc<UL>, Logger, F, Store>;
663664
/// #
664665
/// # struct Node<
665666
/// # B: lightning::chain::chaininterface::BroadcasterInterface + Send + Sync + 'static,
@@ -757,8 +758,9 @@ pub async fn process_events_async<
757758
EventHandlerFuture: core::future::Future<Output = Result<(), ReplayEvent>>,
758759
EventHandler: Fn(Event) -> EventHandlerFuture,
759760
PS: 'static + Deref + Send,
761+
ES: 'static + Deref + Send,
760762
M: 'static
761-
+ Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P>>
763+
+ Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P, ES>>
762764
+ Send
763765
+ Sync,
764766
CM: 'static + Deref,
@@ -786,6 +788,7 @@ where
786788
L::Target: 'static + Logger,
787789
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
788790
PS::Target: 'static + Persister<'a, CM, L, S>,
791+
ES::Target: 'static + EntropySource,
789792
CM::Target: AChannelManager,
790793
OM::Target: AOnionMessenger,
791794
PM::Target: APeerManager,
@@ -941,8 +944,11 @@ impl BackgroundProcessor {
941944
P: 'static + Deref,
942945
EH: 'static + EventHandler + Send,
943946
PS: 'static + Deref + Send,
947+
ES: 'static + Deref + Send,
944948
M: 'static
945-
+ Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P>>
949+
+ Deref<
950+
Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P, ES>,
951+
>
946952
+ Send
947953
+ Sync,
948954
CM: 'static + Deref + Send,
@@ -966,6 +972,7 @@ impl BackgroundProcessor {
966972
L::Target: 'static + Logger,
967973
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
968974
PS::Target: 'static + Persister<'a, CM, L, S>,
975+
ES::Target: 'static + EntropySource,
969976
CM::Target: AChannelManager,
970977
OM::Target: AOnionMessenger,
971978
PM::Target: APeerManager,
@@ -1127,7 +1134,7 @@ mod tests {
11271134
use lightning::routing::gossip::{NetworkGraph, P2PGossipSync};
11281135
use lightning::routing::router::{CandidateRouteHop, DefaultRouter, Path, RouteHop};
11291136
use lightning::routing::scoring::{ChannelUsage, LockableScore, ScoreLookUp, ScoreUpdate};
1130-
use lightning::sign::{ChangeDestinationSource, InMemorySigner, KeysManager};
1137+
use lightning::sign::{ChangeDestinationSource, InMemorySigner, KeysManager, NodeSigner};
11311138
use lightning::types::features::{ChannelFeatures, NodeFeatures};
11321139
use lightning::types::payment::PaymentHash;
11331140
use lightning::util::config::UserConfig;
@@ -1203,6 +1210,7 @@ mod tests {
12031210
Arc<test_utils::TestFeeEstimator>,
12041211
Arc<test_utils::TestLogger>,
12051212
Arc<FilesystemStore>,
1213+
Arc<KeysManager>,
12061214
>;
12071215

12081216
type PGS = Arc<
@@ -1254,6 +1262,7 @@ mod tests {
12541262
Arc<test_utils::TestLogger>,
12551263
IgnoringMessageHandler,
12561264
Arc<KeysManager>,
1265+
IgnoringMessageHandler,
12571266
>,
12581267
>,
12591268
liquidity_manager: Arc<LM>,
@@ -1615,6 +1624,8 @@ mod tests {
16151624
logger.clone(),
16161625
fee_estimator.clone(),
16171626
kv_store.clone(),
1627+
keys_manager.clone(),
1628+
keys_manager.get_peer_storage_key(),
16181629
));
16191630
let best_block = BestBlock::from_network(network);
16201631
let params = ChainParameters { network, best_block };
@@ -1668,6 +1679,7 @@ mod tests {
16681679
route_handler: Arc::new(test_utils::TestRoutingMessageHandler::new()),
16691680
onion_message_handler: messenger.clone(),
16701681
custom_message_handler: IgnoringMessageHandler {},
1682+
send_only_message_handler: IgnoringMessageHandler {},
16711683
};
16721684
let peer_manager = Arc::new(PeerManager::new(
16731685
msg_handler,

lightning-liquidity/tests/common/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#![allow(unused_macros)]
66

77
use lightning::chain::Filter;
8-
use lightning::sign::EntropySource;
8+
use lightning::sign::{EntropySource, NodeSigner};
99

1010
use bitcoin::blockdata::constants::{genesis_block, ChainHash};
1111
use bitcoin::blockdata::transaction::Transaction;
@@ -101,6 +101,7 @@ type ChainMonitor = chainmonitor::ChainMonitor<
101101
Arc<test_utils::TestFeeEstimator>,
102102
Arc<test_utils::TestLogger>,
103103
Arc<FilesystemStore>,
104+
Arc<KeysManager>,
104105
>;
105106

106107
type PGS = Arc<
@@ -130,6 +131,7 @@ pub(crate) struct Node {
130131
>,
131132
>,
132133
Arc<KeysManager>,
134+
Arc<ChainMonitor>,
133135
>,
134136
>,
135137
pub(crate) liquidity_manager:
@@ -429,6 +431,8 @@ pub(crate) fn create_liquidity_node(
429431
logger.clone(),
430432
fee_estimator.clone(),
431433
kv_store.clone(),
434+
keys_manager.clone(),
435+
keys_manager.get_peer_storage_key(),
432436
));
433437
let best_block = BestBlock::from_network(network);
434438
let chain_params = ChainParameters { network, best_block };
@@ -467,6 +471,7 @@ pub(crate) fn create_liquidity_node(
467471
route_handler: Arc::new(test_utils::TestRoutingMessageHandler::new()),
468472
onion_message_handler: IgnoringMessageHandler {},
469473
custom_message_handler: Arc::clone(&liquidity_manager),
474+
send_only_message_handler: Arc::clone(&chain_monitor),
470475
};
471476
let peer_manager =
472477
Arc::new(PeerManager::new(msg_handler, 0, &seed, logger.clone(), keys_manager.clone()));

lightning-net-tokio/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -839,6 +839,7 @@ mod tests {
839839
route_handler: Arc::clone(&a_handler),
840840
onion_message_handler: Arc::new(IgnoringMessageHandler {}),
841841
custom_message_handler: Arc::new(IgnoringMessageHandler {}),
842+
send_only_message_handler: Arc::new(IgnoringMessageHandler {}),
842843
};
843844
let a_manager = Arc::new(PeerManager::new(
844845
a_msg_handler,
@@ -862,6 +863,7 @@ mod tests {
862863
route_handler: Arc::clone(&b_handler),
863864
onion_message_handler: Arc::new(IgnoringMessageHandler {}),
864865
custom_message_handler: Arc::new(IgnoringMessageHandler {}),
866+
send_only_message_handler: Arc::new(IgnoringMessageHandler {}),
865867
};
866868
let b_manager = Arc::new(PeerManager::new(
867869
b_msg_handler,
@@ -924,6 +926,7 @@ mod tests {
924926
onion_message_handler: Arc::new(IgnoringMessageHandler {}),
925927
route_handler: Arc::new(lightning::ln::peer_handler::IgnoringMessageHandler {}),
926928
custom_message_handler: Arc::new(IgnoringMessageHandler {}),
929+
send_only_message_handler: Arc::new(IgnoringMessageHandler {}),
927930
};
928931
let a_manager = Arc::new(PeerManager::new(
929932
a_msg_handler,

0 commit comments

Comments
 (0)