Skip to content

Commit 3b13d55

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 d6f5b7d commit 3b13d55

File tree

10 files changed

+185
-57
lines changed

10 files changed

+185
-57
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> {
@@ -626,6 +627,7 @@ pub fn do_test(mut data: &[u8], logger: &Arc<dyn Logger>) {
626627
Arc::clone(&logger),
627628
fee_est.clone(),
628629
Arc::new(TestPersister { update_ret: Mutex::new(ChannelMonitorUpdateStatus::Completed) }),
630+
keys_manager.get_peer_storage_key(),
629631
));
630632

631633
let network = Network::Bitcoin;
@@ -659,6 +661,7 @@ pub fn do_test(mut data: &[u8], logger: &Arc<dyn Logger>) {
659661
route_handler: gossip_sync.clone(),
660662
onion_message_handler: IgnoringMessageHandler {},
661663
custom_message_handler: IgnoringMessageHandler {},
664+
send_only_message_handler: IgnoringMessageHandler {},
662665
};
663666
let random_data = [
664667
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")]
@@ -649,7 +650,7 @@ use futures_util::{dummy_waker, OptionalSelector, Selector, SelectorOutput};
649650
/// # type ChannelManager<B, F, FE> = lightning::ln::channelmanager::SimpleArcChannelManager<ChainMonitor<B, F, FE>, B, FE, Logger>;
650651
/// # 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>;
651652
/// # type Scorer = RwLock<lightning::routing::scoring::ProbabilisticScorer<Arc<NetworkGraph>, Arc<Logger>>>;
652-
/// # type PeerManager<B, F, FE, UL> = lightning::ln::peer_handler::SimpleArcPeerManager<SocketDescriptor, ChainMonitor<B, F, FE>, B, FE, Arc<UL>, Logger>;
653+
/// # type PeerManager<B, F, FE, UL> = lightning::ln::peer_handler::SimpleArcPeerManager<SocketDescriptor, ChainMonitor<B, F, FE>, B, FE, Arc<UL>, Logger, F, Store>;
653654
/// #
654655
/// # struct Node<
655656
/// # B: lightning::chain::chaininterface::BroadcasterInterface + Send + Sync + 'static,
@@ -736,8 +737,9 @@ pub async fn process_events_async<
736737
EventHandlerFuture: core::future::Future<Output = Result<(), ReplayEvent>>,
737738
EventHandler: Fn(Event) -> EventHandlerFuture,
738739
PS: 'static + Deref + Send,
740+
ES: 'static + Deref + Send,
739741
M: 'static
740-
+ Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P>>
742+
+ Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P, ES>>
741743
+ Send
742744
+ Sync,
743745
CM: 'static + Deref + Send + Sync,
@@ -764,6 +766,7 @@ where
764766
L::Target: 'static + Logger,
765767
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
766768
PS::Target: 'static + Persister<'a, CM, L, S>,
769+
ES::Target: 'static + EntropySource,
767770
CM::Target: AChannelManager + Send + Sync,
768771
OM::Target: AOnionMessenger + Send + Sync,
769772
PM::Target: APeerManager + Send + Sync,
@@ -911,8 +914,11 @@ impl BackgroundProcessor {
911914
P: 'static + Deref + Send + Sync,
912915
EH: 'static + EventHandler + Send,
913916
PS: 'static + Deref + Send,
917+
ES: 'static + Deref + Send,
914918
M: 'static
915-
+ Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P>>
919+
+ Deref<
920+
Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P, ES>,
921+
>
916922
+ Send
917923
+ Sync,
918924
CM: 'static + Deref + Send + Sync,
@@ -935,6 +941,7 @@ impl BackgroundProcessor {
935941
L::Target: 'static + Logger,
936942
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
937943
PS::Target: 'static + Persister<'a, CM, L, S>,
944+
ES::Target: 'static + EntropySource,
938945
CM::Target: AChannelManager + Send + Sync,
939946
OM::Target: AOnionMessenger + Send + Sync,
940947
PM::Target: APeerManager + Send + Sync,
@@ -1085,7 +1092,7 @@ mod tests {
10851092
use lightning::routing::gossip::{NetworkGraph, P2PGossipSync};
10861093
use lightning::routing::router::{CandidateRouteHop, DefaultRouter, Path, RouteHop};
10871094
use lightning::routing::scoring::{ChannelUsage, LockableScore, ScoreLookUp, ScoreUpdate};
1088-
use lightning::sign::{ChangeDestinationSource, InMemorySigner, KeysManager};
1095+
use lightning::sign::{ChangeDestinationSource, InMemorySigner, KeysManager, NodeSigner};
10891096
use lightning::types::features::{ChannelFeatures, NodeFeatures};
10901097
use lightning::types::payment::PaymentHash;
10911098
use lightning::util::config::UserConfig;
@@ -1160,6 +1167,7 @@ mod tests {
11601167
Arc<test_utils::TestFeeEstimator>,
11611168
Arc<test_utils::TestLogger>,
11621169
Arc<FilesystemStore>,
1170+
Arc<KeysManager>,
11631171
>;
11641172

11651173
type PGS = Arc<
@@ -1208,6 +1216,7 @@ mod tests {
12081216
Arc<test_utils::TestLogger>,
12091217
IgnoringMessageHandler,
12101218
Arc<KeysManager>,
1219+
IgnoringMessageHandler,
12111220
>,
12121221
>,
12131222
chain_monitor: Arc<ChainMonitor>,
@@ -1568,6 +1577,8 @@ mod tests {
15681577
logger.clone(),
15691578
fee_estimator.clone(),
15701579
kv_store.clone(),
1580+
keys_manager.clone(),
1581+
keys_manager.get_peer_storage_key(),
15711582
));
15721583
let best_block = BestBlock::from_network(network);
15731584
let params = ChainParameters { network, best_block };
@@ -1621,6 +1632,7 @@ mod tests {
16211632
route_handler: Arc::new(test_utils::TestRoutingMessageHandler::new()),
16221633
onion_message_handler: messenger.clone(),
16231634
custom_message_handler: IgnoringMessageHandler {},
1635+
send_only_message_handler: IgnoringMessageHandler {},
16241636
};
16251637
let peer_manager = Arc::new(PeerManager::new(
16261638
msg_handler,

lightning-liquidity/src/manager.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ where {
304304
/// # type MyFilter = dyn lightning::chain::Filter + Send + Sync;
305305
/// # type MyLogger = dyn lightning::util::logger::Logger + Send + Sync;
306306
/// # type MyChainMonitor = lightning::chain::chainmonitor::ChainMonitor<lightning::sign::InMemorySigner, Arc<MyFilter>, Arc<MyBroadcaster>, Arc<MyFeeEstimator>, Arc<MyLogger>, Arc<MyStore>>;
307-
/// # type MyPeerManager = lightning::ln::peer_handler::SimpleArcPeerManager<MySocketDescriptor, MyChainMonitor, MyBroadcaster, MyFeeEstimator, Arc<MyUtxoLookup>, MyLogger>;
307+
/// # type MyPeerManager = lightning::ln::peer_handler::SimpleArcPeerManager<MySocketDescriptor, MyChainMonitor, MyBroadcaster, MyFeeEstimator, Arc<MyUtxoLookup>, MyLogger, MyFilter, MyStore>;
308308
/// # type MyNetworkGraph = lightning::routing::gossip::NetworkGraph<Arc<MyLogger>>;
309309
/// # type MyGossipSync = lightning::routing::gossip::P2PGossipSync<Arc<MyNetworkGraph>, Arc<MyUtxoLookup>, Arc<MyLogger>>;
310310
/// # type MyChannelManager = lightning::ln::channelmanager::SimpleArcChannelManager<MyChainMonitor, MyBroadcaster, MyFeeEstimator, MyLogger>;

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:
@@ -430,6 +432,8 @@ pub(crate) fn create_liquidity_node(
430432
logger.clone(),
431433
fee_estimator.clone(),
432434
kv_store.clone(),
435+
keys_manager.clone(),
436+
keys_manager.get_peer_storage_key(),
433437
));
434438
let best_block = BestBlock::from_network(network);
435439
let chain_params = ChainParameters { network, best_block };
@@ -468,6 +472,7 @@ pub(crate) fn create_liquidity_node(
468472
route_handler: Arc::new(test_utils::TestRoutingMessageHandler::new()),
469473
onion_message_handler: IgnoringMessageHandler {},
470474
custom_message_handler: Arc::clone(&liquidity_manager),
475+
send_only_message_handler: Arc::clone(&chain_monitor),
471476
};
472477
let peer_manager =
473478
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)