From 30978264a69ed38ec5777963cefb6445894eab55 Mon Sep 17 00:00:00 2001 From: Austin Mackillop Date: Thu, 12 Jun 2025 11:04:00 -0400 Subject: [PATCH 1/3] Add method to get channel monitor update ids --- src/prober.rs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/prober.rs b/src/prober.rs index db5c0cf50a..0e11e57699 100644 --- a/src/prober.rs +++ b/src/prober.rs @@ -14,9 +14,11 @@ use crate::{ error::Error, logger::Logger, types::{ChannelManager, Graph, Router, Scorer}, + ChainMonitor, }; use bitcoin::secp256k1::PublicKey; use lightning::{ + chain::transaction::OutPoint, io::Cursor, ln::{channel_state::ChannelDetails, channelmanager::PaymentId}, log_error, @@ -46,6 +48,7 @@ pub struct ProbabilisticScoringParameters { /// The Prober can be used to send probes to a destination node outside of regular payment flows. pub struct Prober { channel_manager: Arc, + chain_monitor: Arc, router: Arc, scorer: Arc>, network_graph: Arc, @@ -55,10 +58,11 @@ pub struct Prober { impl Prober { pub(crate) fn new( - channel_manager: Arc, router: Arc, scorer: Arc>, - network_graph: Arc, logger: Arc, node_id: PublicKey, + channel_manager: Arc, chain_monitor: Arc, + router: Arc, scorer: Arc>, network_graph: Arc, + logger: Arc, node_id: PublicKey, ) -> Self { - Self { channel_manager, router, scorer, network_graph, logger, node_id } + Self { channel_manager, chain_monitor, router, scorer, network_graph, logger, node_id } } /// Find a route from the node to a given destination on the network. @@ -87,6 +91,20 @@ impl Prober { }) } + /// Returns the latest update ids of the channel monitors. At some point after many updates the probes will start to get slow. + pub fn channel_monitor_update_ids(&self) -> Vec<(OutPoint, u64)> { + self.chain_monitor + .list_monitors() + .iter() + .filter_map(|(outpoint, _)| { + self.chain_monitor + .get_monitor(*outpoint) + .map(|monitor| (*outpoint, monitor.get_latest_update_id())) + .ok() + }) + .collect() + } + /// Updates the scoring decay parameters while retaining channel liquidity information.. pub fn update_scoring_decay_params( &self, decay_params: ProbabilisticScoringDecayParameters, From 5b1c578645eb3f3a18528a12a2b5faf96ba8d409 Mon Sep 17 00:00:00 2001 From: Austin Mackillop Date: Thu, 12 Jun 2025 12:42:35 -0400 Subject: [PATCH 2/3] Update creation of Prober --- src/lib.rs | 3 ++- tests/common/mod.rs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index c34f579ce1..e2f071aadb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -923,9 +923,10 @@ impl Node { pub fn prober(&self) -> Prober { Prober::new( Arc::clone(&self.channel_manager), + Arc::clone(&self.chain_monitor), Arc::clone(&self.router), Arc::clone(&self.scorer), - Arc::clone(&self.network_graph), + Arc::clone(&self.network_graph), Arc::clone(&self.logger), self.node_id(), ) diff --git a/tests/common/mod.rs b/tests/common/mod.rs index e27f9e9b83..0c0c24b7cd 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -8,7 +8,7 @@ #![cfg(any(test, cln_test, vss_test))] #![allow(dead_code)] -use ldk_node::config::{Config, EsploraSyncConfig, LoggingConfig}; +use ldk_node::config::{Config, EsploraSyncConfig}; use ldk_node::io::sqlite_store::SqliteStore; use ldk_node::logger::LogLevel; use ldk_node::payment::{PaymentDirection, PaymentKind, PaymentStatus}; From bc5a070ffd563b9ad7834bb11c7bb5d6a8ce9164 Mon Sep 17 00:00:00 2001 From: Austin Mackillop Date: Thu, 12 Jun 2025 12:44:45 -0400 Subject: [PATCH 3/3] Formatting --- src/lib.rs | 2 +- src/logger.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index e2f071aadb..18bd814f83 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -926,7 +926,7 @@ impl Node { Arc::clone(&self.chain_monitor), Arc::clone(&self.router), Arc::clone(&self.scorer), - Arc::clone(&self.network_graph), + Arc::clone(&self.network_graph), Arc::clone(&self.logger), self.node_id(), ) diff --git a/src/logger.rs b/src/logger.rs index 9651fcb52e..7a329fae64 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -215,4 +215,4 @@ impl LdkLogger for Logger { }, } } -} \ No newline at end of file +}