Skip to content

Commit 22d5bbe

Browse files
committed
Rename SimpleManyChannelMonitor to ChainMonitor
ManyChannelMonitor was renamed chain::Watch in the previous commit. Use a more concise name for an implementation that monitors the chain for channel activity. Future work will parameterize the struct to allow for different varieties of persistence. Thus, users usually will be able to use ChainMonitor directly rather than implementing a chain::Watch that wraps it.
1 parent 8b0165d commit 22d5bbe

File tree

9 files changed

+204
-206
lines changed

9 files changed

+204
-206
lines changed

ARCH.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,24 +39,24 @@ At a high level, some of the common interfaces fit together as follows:
3939
----------------- | UserConfig |
4040
-------------------- | --------------
4141
/------| MessageSendEvent | | | ----------------
42-
| -------------------- | | | FeeEstimator |
43-
| (as MessageSendEventsProvider) | | ----------------
44-
| ^ | | / | ------------------------
45-
| \ | | / ---------> | BroadcasterInterface |
46-
| \ | | / / | ------------------------
47-
| \ v v v / v ^
48-
| (as ------------------ ----------------
49-
| ChannelMessageHandler)-> | ChannelManager | ----> | chain::Watch |
50-
v / ------------------ ----------------
51-
--------------- / (as EventsProvider)
52-
| PeerManager |- \ /
53-
--------------- \ /
54-
| ----------------- \ /
55-
| | chain::Access | v
56-
| ----------------- ---------
57-
| | | Event |
58-
(as RoutingMessageHandler) v ---------
59-
\ --------------------
60-
-----------------> | NetGraphMsgHandler |
61-
--------------------
42+
| -------------------- | | | FeeEstimator | <-----------------------
43+
| (as MessageSendEventsProvider) | | ---------------- \
44+
| ^ | | / ------------------------ |
45+
| \ | | / ---------> | BroadcasterInterface | |
46+
| \ | | / / ------------------------ |
47+
| \ v v v / ^ |
48+
| (as ------------------ ---------------- | |
49+
| ChannelMessageHandler)-> | ChannelManager | ----> | chain::Watch | | |
50+
v / ------------------ ---------------- | |
51+
--------------- / (as EventsProvider) ^ | |
52+
| PeerManager |- \ | | |
53+
--------------- \ | (is-a) | |
54+
| ----------------- \ _---------------- / /
55+
| | chain::Access | \ / | ChainMonitor |---------------
56+
| ----------------- \ / ----------------
57+
| | \ /
58+
(as RoutingMessageHandler) v v
59+
\ -------------------- ---------
60+
-----------------> | NetGraphMsgHandler | | Event |
61+
-------------------- ---------
6262
```

fuzz/src/chanmon_consistency.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ impl Writer for VecWriter {
7373
}
7474
}
7575

76-
struct TestChannelMonitor {
76+
struct TestChainMonitor {
7777
pub logger: Arc<dyn Logger>,
78-
pub simple_monitor: Arc<channelmonitor::SimpleManyChannelMonitor<OutPoint, EnforcingChannelKeys, Arc<TestBroadcaster>, Arc<FuzzEstimator>, Arc<dyn Logger>>>,
78+
pub chain_monitor: Arc<channelmonitor::ChainMonitor<OutPoint, EnforcingChannelKeys, Arc<TestBroadcaster>, Arc<FuzzEstimator>, Arc<dyn Logger>>>,
7979
pub update_ret: Mutex<Result<(), channelmonitor::ChannelMonitorUpdateErr>>,
8080
// If we reload a node with an old copy of ChannelMonitors, the ChannelManager deserialization
8181
// logic will automatically force-close our channels for us (as we don't have an up-to-date
@@ -85,18 +85,18 @@ struct TestChannelMonitor {
8585
pub latest_monitors: Mutex<HashMap<OutPoint, (u64, Vec<u8>)>>,
8686
pub should_update_manager: atomic::AtomicBool,
8787
}
88-
impl TestChannelMonitor {
88+
impl TestChainMonitor {
8989
pub fn new(broadcaster: Arc<TestBroadcaster>, logger: Arc<dyn Logger>, feeest: Arc<FuzzEstimator>) -> Self {
9090
Self {
91-
simple_monitor: Arc::new(channelmonitor::SimpleManyChannelMonitor::new(broadcaster, logger.clone(), feeest)),
91+
chain_monitor: Arc::new(channelmonitor::ChainMonitor::new(broadcaster, logger.clone(), feeest)),
9292
logger,
9393
update_ret: Mutex::new(Ok(())),
9494
latest_monitors: Mutex::new(HashMap::new()),
9595
should_update_manager: atomic::AtomicBool::new(false),
9696
}
9797
}
9898
}
99-
impl chain::Watch for TestChannelMonitor {
99+
impl chain::Watch for TestChainMonitor {
100100
type Keys = EnforcingChannelKeys;
101101

102102
fn watch_channel(&self, funding_txo: OutPoint, monitor: channelmonitor::ChannelMonitor<EnforcingChannelKeys>) -> Result<(), channelmonitor::ChannelMonitorUpdateErr> {
@@ -106,7 +106,7 @@ impl chain::Watch for TestChannelMonitor {
106106
panic!("Already had monitor pre-watch_channel");
107107
}
108108
self.should_update_manager.store(true, atomic::Ordering::Relaxed);
109-
assert!(self.simple_monitor.watch_channel(funding_txo, monitor).is_ok());
109+
assert!(self.chain_monitor.watch_channel(funding_txo, monitor).is_ok());
110110
self.update_ret.lock().unwrap().clone()
111111
}
112112

@@ -127,7 +127,7 @@ impl chain::Watch for TestChannelMonitor {
127127
}
128128

129129
fn release_pending_htlc_updates(&self) -> Vec<HTLCUpdate> {
130-
return self.simple_monitor.release_pending_htlc_updates();
130+
return self.chain_monitor.release_pending_htlc_updates();
131131
}
132132
}
133133

@@ -190,7 +190,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
190190
macro_rules! make_node {
191191
($node_id: expr) => { {
192192
let logger: Arc<dyn Logger> = Arc::new(test_logger::TestLogger::new($node_id.to_string(), out.clone()));
193-
let monitor = Arc::new(TestChannelMonitor::new(broadcast.clone(), logger.clone(), fee_est.clone()));
193+
let monitor = Arc::new(TestChainMonitor::new(broadcast.clone(), logger.clone(), fee_est.clone()));
194194

195195
let keys_manager = Arc::new(KeyProvider { node_id: $node_id, session_id: atomic::AtomicU8::new(0), channel_id: atomic::AtomicU8::new(0) });
196196
let mut config = UserConfig::default();
@@ -205,7 +205,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
205205
macro_rules! reload_node {
206206
($ser: expr, $node_id: expr, $old_monitors: expr) => { {
207207
let logger: Arc<dyn Logger> = Arc::new(test_logger::TestLogger::new($node_id.to_string(), out.clone()));
208-
let chain_monitor = Arc::new(TestChannelMonitor::new(broadcast.clone(), logger.clone(), fee_est.clone()));
208+
let chain_monitor = Arc::new(TestChainMonitor::new(broadcast.clone(), logger.clone(), fee_est.clone()));
209209

210210
let keys_manager = Arc::new(KeyProvider { node_id: $node_id, session_id: atomic::AtomicU8::new(0), channel_id: atomic::AtomicU8::new(0) });
211211
let mut config = UserConfig::default();
@@ -234,7 +234,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
234234
channel_monitors: &mut monitor_refs,
235235
};
236236

237-
(<(BlockHash, ChannelManager<EnforcingChannelKeys, Arc<TestChannelMonitor>, Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>)>::read(&mut Cursor::new(&$ser.0), read_args).expect("Failed to read manager").1, chain_monitor)
237+
(<(BlockHash, ChannelManager<EnforcingChannelKeys, Arc<TestChainMonitor>, Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>)>::read(&mut Cursor::new(&$ser.0), read_args).expect("Failed to read manager").1, chain_monitor)
238238
} }
239239
}
240240

fuzz/src/full_stack.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,13 @@ impl<'a> std::hash::Hash for Peer<'a> {
137137

138138
type ChannelMan = ChannelManager<
139139
EnforcingChannelKeys,
140-
Arc<channelmonitor::SimpleManyChannelMonitor<OutPoint, EnforcingChannelKeys, Arc<TestBroadcaster>, Arc<FuzzEstimator>, Arc<dyn Logger>>>,
140+
Arc<channelmonitor::ChainMonitor<OutPoint, EnforcingChannelKeys, Arc<TestBroadcaster>, Arc<FuzzEstimator>, Arc<dyn Logger>>>,
141141
Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>;
142142
type PeerMan<'a> = PeerManager<Peer<'a>, Arc<ChannelMan>, Arc<NetGraphMsgHandler<Arc<dyn chain::Access>, Arc<dyn Logger>>>, Arc<dyn Logger>>;
143143

144144
struct MoneyLossDetector<'a> {
145145
manager: Arc<ChannelMan>,
146-
monitor: Arc<channelmonitor::SimpleManyChannelMonitor<
146+
monitor: Arc<channelmonitor::ChainMonitor<
147147
OutPoint, EnforcingChannelKeys, Arc<TestBroadcaster>, Arc<FuzzEstimator>, Arc<dyn Logger>>>,
148148
handler: PeerMan<'a>,
149149

@@ -158,7 +158,7 @@ struct MoneyLossDetector<'a> {
158158
impl<'a> MoneyLossDetector<'a> {
159159
pub fn new(peers: &'a RefCell<[bool; 256]>,
160160
manager: Arc<ChannelMan>,
161-
monitor: Arc<channelmonitor::SimpleManyChannelMonitor<OutPoint, EnforcingChannelKeys, Arc<TestBroadcaster>, Arc<FuzzEstimator>, Arc<dyn Logger>>>,
161+
monitor: Arc<channelmonitor::ChainMonitor<OutPoint, EnforcingChannelKeys, Arc<TestBroadcaster>, Arc<FuzzEstimator>, Arc<dyn Logger>>>,
162162
handler: PeerMan<'a>) -> Self {
163163
MoneyLossDetector {
164164
manager,
@@ -332,7 +332,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
332332
};
333333

334334
let broadcast = Arc::new(TestBroadcaster{});
335-
let monitor = Arc::new(channelmonitor::SimpleManyChannelMonitor::new(broadcast.clone(), Arc::clone(&logger), fee_est.clone()));
335+
let monitor = Arc::new(channelmonitor::ChainMonitor::new(broadcast.clone(), Arc::clone(&logger), fee_est.clone()));
336336

337337
let keys_manager = Arc::new(KeyProvider { node_secret: our_network_key.clone(), counter: AtomicU64::new(0) });
338338
let mut config = UserConfig::default();

lightning-net-tokio/src/lib.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,35 +26,35 @@
2626
//! type FeeEstimator = dyn lightning::chain::chaininterface::FeeEstimator;
2727
//! type Logger = dyn lightning::util::logger::Logger;
2828
//! type ChainAccess = dyn lightning::chain::Access;
29-
//! type ChannelMonitor = lightning::ln::channelmonitor::SimpleManyChannelMonitor<lightning::chain::transaction::OutPoint, lightning::chain::keysinterface::InMemoryChannelKeys, Arc<TxBroadcaster>, Arc<FeeEstimator>, Arc<Logger>>;
30-
//! type ChannelManager = lightning::ln::channelmanager::SimpleArcChannelManager<ChannelMonitor, TxBroadcaster, FeeEstimator, Logger>;
31-
//! type PeerManager = lightning::ln::peer_handler::SimpleArcPeerManager<lightning_net_tokio::SocketDescriptor, ChannelMonitor, TxBroadcaster, FeeEstimator, ChainAccess, Logger>;
29+
//! type ChainMonitor = lightning::ln::channelmonitor::ChainMonitor<lightning::chain::transaction::OutPoint, lightning::chain::keysinterface::InMemoryChannelKeys, Arc<TxBroadcaster>, Arc<FeeEstimator>, Arc<Logger>>;
30+
//! type ChannelManager = lightning::ln::channelmanager::SimpleArcChannelManager<ChainMonitor, TxBroadcaster, FeeEstimator, Logger>;
31+
//! type PeerManager = lightning::ln::peer_handler::SimpleArcPeerManager<lightning_net_tokio::SocketDescriptor, ChainMonitor, TxBroadcaster, FeeEstimator, ChainAccess, Logger>;
3232
//!
3333
//! // Connect to node with pubkey their_node_id at addr:
34-
//! async fn connect_to_node(peer_manager: PeerManager, channel_monitor: Arc<ChannelMonitor>, channel_manager: ChannelManager, their_node_id: PublicKey, addr: SocketAddr) {
34+
//! async fn connect_to_node(peer_manager: PeerManager, chain_monitor: Arc<ChainMonitor>, channel_manager: ChannelManager, their_node_id: PublicKey, addr: SocketAddr) {
3535
//! let (sender, mut receiver) = mpsc::channel(2);
3636
//! lightning_net_tokio::connect_outbound(peer_manager, sender, their_node_id, addr).await;
3737
//! loop {
3838
//! receiver.recv().await;
3939
//! for _event in channel_manager.get_and_clear_pending_events().drain(..) {
4040
//! // Handle the event!
4141
//! }
42-
//! for _event in channel_monitor.get_and_clear_pending_events().drain(..) {
42+
//! for _event in chain_monitor.get_and_clear_pending_events().drain(..) {
4343
//! // Handle the event!
4444
//! }
4545
//! }
4646
//! }
4747
//!
4848
//! // Begin reading from a newly accepted socket and talk to the peer:
49-
//! async fn accept_socket(peer_manager: PeerManager, channel_monitor: Arc<ChannelMonitor>, channel_manager: ChannelManager, socket: TcpStream) {
49+
//! async fn accept_socket(peer_manager: PeerManager, chain_monitor: Arc<ChainMonitor>, channel_manager: ChannelManager, socket: TcpStream) {
5050
//! let (sender, mut receiver) = mpsc::channel(2);
5151
//! lightning_net_tokio::setup_inbound(peer_manager, sender, socket);
5252
//! loop {
5353
//! receiver.recv().await;
5454
//! for _event in channel_manager.get_and_clear_pending_events().drain(..) {
5555
//! // Handle the event!
5656
//! }
57-
//! for _event in channel_monitor.get_and_clear_pending_events().drain(..) {
57+
//! for _event in chain_monitor.get_and_clear_pending_events().drain(..) {
5858
//! // Handle the event!
5959
//! }
6060
//! }

0 commit comments

Comments
 (0)