@@ -28,12 +28,13 @@ use bitcoin::hashes::Hash as TraitImport;
28
28
use bitcoin:: hashes:: sha256:: Hash as Sha256 ;
29
29
use bitcoin:: hash_types:: { BlockHash , WPubkeyHash } ;
30
30
31
- use lightning:: chain:: chaininterface;
31
+ use lightning:: chain;
32
+ use lightning:: chain:: chainmonitor;
33
+ use lightning:: chain:: channelmonitor;
34
+ use lightning:: chain:: channelmonitor:: { ChannelMonitor , ChannelMonitorUpdateErr , MonitorEvent } ;
32
35
use lightning:: chain:: transaction:: OutPoint ;
33
- use lightning:: chain:: chaininterface:: { BroadcasterInterface , ConfirmationTarget , ChainListener , FeeEstimator , ChainWatchInterfaceUtil , ChainWatchInterface } ;
36
+ use lightning:: chain:: chaininterface:: { BroadcasterInterface , ConfirmationTarget , FeeEstimator } ;
34
37
use lightning:: chain:: keysinterface:: { KeysInterface , InMemoryChannelKeys } ;
35
- use lightning:: ln:: channelmonitor;
36
- use lightning:: ln:: channelmonitor:: { ChannelMonitor , ChannelMonitorUpdateErr , MonitorEvent } ;
37
38
use lightning:: ln:: channelmanager:: { ChannelManager , PaymentHash , PaymentPreimage , PaymentSecret , ChannelManagerReadArgs } ;
38
39
use lightning:: ln:: features:: { ChannelFeatures , InitFeatures , NodeFeatures } ;
39
40
use lightning:: ln:: msgs:: { CommitmentUpdate , ChannelMessageHandler , ErrorAction , UpdateAddHTLC , Init } ;
@@ -81,9 +82,9 @@ impl Writer for VecWriter {
81
82
}
82
83
}
83
84
84
- struct TestChannelMonitor {
85
+ struct TestChainMonitor {
85
86
pub logger : Arc < dyn Logger > ,
86
- pub simple_monitor : Arc < channelmonitor :: SimpleManyChannelMonitor < OutPoint , EnforcingChannelKeys , Arc < TestBroadcaster > , Arc < FuzzEstimator > , Arc < dyn Logger > , Arc < dyn ChainWatchInterface > > > ,
87
+ pub chain_monitor : Arc < chainmonitor :: ChainMonitor < EnforcingChannelKeys , Arc < dyn chain :: Filter > , Arc < TestBroadcaster > , Arc < FuzzEstimator > , Arc < dyn Logger > > > ,
87
88
pub update_ret : Mutex < Result < ( ) , channelmonitor:: ChannelMonitorUpdateErr > > ,
88
89
// If we reload a node with an old copy of ChannelMonitors, the ChannelManager deserialization
89
90
// logic will automatically force-close our channels for us (as we don't have an up-to-date
@@ -93,32 +94,32 @@ struct TestChannelMonitor {
93
94
pub latest_monitors : Mutex < HashMap < OutPoint , ( u64 , Vec < u8 > ) > > ,
94
95
pub should_update_manager : atomic:: AtomicBool ,
95
96
}
96
- impl TestChannelMonitor {
97
- pub fn new ( chain_monitor : Arc < dyn chaininterface :: ChainWatchInterface > , broadcaster : Arc < TestBroadcaster > , logger : Arc < dyn Logger > , feeest : Arc < FuzzEstimator > ) -> Self {
97
+ impl TestChainMonitor {
98
+ pub fn new ( broadcaster : Arc < TestBroadcaster > , logger : Arc < dyn Logger > , feeest : Arc < FuzzEstimator > ) -> Self {
98
99
Self {
99
- simple_monitor : Arc :: new ( channelmonitor :: SimpleManyChannelMonitor :: new ( chain_monitor , broadcaster, logger. clone ( ) , feeest) ) ,
100
+ chain_monitor : Arc :: new ( chainmonitor :: ChainMonitor :: new ( None , broadcaster, logger. clone ( ) , feeest) ) ,
100
101
logger,
101
102
update_ret : Mutex :: new ( Ok ( ( ) ) ) ,
102
103
latest_monitors : Mutex :: new ( HashMap :: new ( ) ) ,
103
104
should_update_manager : atomic:: AtomicBool :: new ( false ) ,
104
105
}
105
106
}
106
107
}
107
- impl channelmonitor :: ManyChannelMonitor for TestChannelMonitor {
108
+ impl chain :: Watch for TestChainMonitor {
108
109
type Keys = EnforcingChannelKeys ;
109
110
110
- fn add_monitor ( & self , funding_txo : OutPoint , monitor : channelmonitor:: ChannelMonitor < EnforcingChannelKeys > ) -> Result < ( ) , channelmonitor:: ChannelMonitorUpdateErr > {
111
+ fn watch_channel ( & self , funding_txo : OutPoint , monitor : channelmonitor:: ChannelMonitor < EnforcingChannelKeys > ) -> Result < ( ) , channelmonitor:: ChannelMonitorUpdateErr > {
111
112
let mut ser = VecWriter ( Vec :: new ( ) ) ;
112
113
monitor. write_for_disk ( & mut ser) . unwrap ( ) ;
113
114
if let Some ( _) = self . latest_monitors . lock ( ) . unwrap ( ) . insert ( funding_txo, ( monitor. get_latest_update_id ( ) , ser. 0 ) ) {
114
- panic ! ( "Already had monitor pre-add_monitor " ) ;
115
+ panic ! ( "Already had monitor pre-watch_channel " ) ;
115
116
}
116
117
self . should_update_manager . store ( true , atomic:: Ordering :: Relaxed ) ;
117
- assert ! ( self . simple_monitor . add_monitor ( funding_txo, monitor) . is_ok( ) ) ;
118
+ assert ! ( self . chain_monitor . watch_channel ( funding_txo, monitor) . is_ok( ) ) ;
118
119
self . update_ret . lock ( ) . unwrap ( ) . clone ( )
119
120
}
120
121
121
- fn update_monitor ( & self , funding_txo : OutPoint , update : channelmonitor:: ChannelMonitorUpdate ) -> Result < ( ) , channelmonitor:: ChannelMonitorUpdateErr > {
122
+ fn update_channel ( & self , funding_txo : OutPoint , update : channelmonitor:: ChannelMonitorUpdate ) -> Result < ( ) , channelmonitor:: ChannelMonitorUpdateErr > {
122
123
let mut map_lock = self . latest_monitors . lock ( ) . unwrap ( ) ;
123
124
let mut map_entry = match map_lock. entry ( funding_txo) {
124
125
hash_map:: Entry :: Occupied ( entry) => entry,
@@ -134,8 +135,8 @@ impl channelmonitor::ManyChannelMonitor for TestChannelMonitor {
134
135
self . update_ret . lock ( ) . unwrap ( ) . clone ( )
135
136
}
136
137
137
- fn get_and_clear_pending_monitor_events ( & self ) -> Vec < MonitorEvent > {
138
- return self . simple_monitor . get_and_clear_pending_monitor_events ( ) ;
138
+ fn release_pending_monitor_events ( & self ) -> Vec < MonitorEvent > {
139
+ return self . chain_monitor . release_pending_monitor_events ( ) ;
139
140
}
140
141
}
141
142
@@ -191,8 +192,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
191
192
macro_rules! make_node {
192
193
( $node_id: expr) => { {
193
194
let logger: Arc <dyn Logger > = Arc :: new( test_logger:: TestLogger :: new( $node_id. to_string( ) , out. clone( ) ) ) ;
194
- let watch = Arc :: new( ChainWatchInterfaceUtil :: new( Network :: Bitcoin ) ) ;
195
- let monitor = Arc :: new( TestChannelMonitor :: new( watch. clone( ) , broadcast. clone( ) , logger. clone( ) , fee_est. clone( ) ) ) ;
195
+ let monitor = Arc :: new( TestChainMonitor :: new( broadcast. clone( ) , logger. clone( ) , fee_est. clone( ) ) ) ;
196
196
197
197
let keys_manager = Arc :: new( KeyProvider { node_id: $node_id, rand_bytes_id: atomic:: AtomicU8 :: new( 0 ) } ) ;
198
198
let mut config = UserConfig :: default ( ) ;
@@ -207,8 +207,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
207
207
macro_rules! reload_node {
208
208
( $ser: expr, $node_id: expr, $old_monitors: expr) => { {
209
209
let logger: Arc <dyn Logger > = Arc :: new( test_logger:: TestLogger :: new( $node_id. to_string( ) , out. clone( ) ) ) ;
210
- let watch = Arc :: new( ChainWatchInterfaceUtil :: new( Network :: Bitcoin ) ) ;
211
- let monitor = Arc :: new( TestChannelMonitor :: new( watch. clone( ) , broadcast. clone( ) , logger. clone( ) , fee_est. clone( ) ) ) ;
210
+ let chain_monitor = Arc :: new( TestChainMonitor :: new( broadcast. clone( ) , logger. clone( ) , fee_est. clone( ) ) ) ;
212
211
213
212
let keys_manager = Arc :: new( KeyProvider { node_id: $node_id, rand_bytes_id: atomic:: AtomicU8 :: new( 0 ) } ) ;
214
213
let mut config = UserConfig :: default ( ) ;
@@ -220,7 +219,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
220
219
let mut old_monitors = $old_monitors. latest_monitors. lock( ) . unwrap( ) ;
221
220
for ( outpoint, ( update_id, monitor_ser) ) in old_monitors. drain( ) {
222
221
monitors. insert( outpoint, <( BlockHash , ChannelMonitor <EnforcingChannelKeys >) >:: read( & mut Cursor :: new( & monitor_ser) ) . expect( "Failed to read monitor" ) . 1 ) ;
223
- monitor . latest_monitors. lock( ) . unwrap( ) . insert( outpoint, ( update_id, monitor_ser) ) ;
222
+ chain_monitor . latest_monitors. lock( ) . unwrap( ) . insert( outpoint, ( update_id, monitor_ser) ) ;
224
223
}
225
224
let mut monitor_refs = HashMap :: new( ) ;
226
225
for ( outpoint, monitor) in monitors. iter_mut( ) {
@@ -230,14 +229,14 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
230
229
let read_args = ChannelManagerReadArgs {
231
230
keys_manager,
232
231
fee_estimator: fee_est. clone( ) ,
233
- monitor : monitor . clone( ) ,
232
+ chain_monitor : chain_monitor . clone( ) ,
234
233
tx_broadcaster: broadcast. clone( ) ,
235
234
logger,
236
235
default_config: config,
237
236
channel_monitors: monitor_refs,
238
237
} ;
239
238
240
- ( <( 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 , monitor )
239
+ ( <( 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 )
241
240
} }
242
241
}
243
242
@@ -308,16 +307,11 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
308
307
macro_rules! confirm_txn {
309
308
( $node: expr) => { {
310
309
let mut header = BlockHeader { version: 0x20000000 , prev_blockhash: Default :: default ( ) , merkle_root: Default :: default ( ) , time: 42 , bits: 42 , nonce: 42 } ;
311
- let mut txn = Vec :: with_capacity( channel_txn. len( ) ) ;
312
- let mut posn = Vec :: with_capacity( channel_txn. len( ) ) ;
313
- for i in 0 ..channel_txn. len( ) {
314
- txn. push( & channel_txn[ i] ) ;
315
- posn. push( i + 1 ) ;
316
- }
317
- $node. block_connected( & header, 1 , & txn, & posn) ;
310
+ let txdata: Vec <_> = channel_txn. iter( ) . enumerate( ) . map( |( i, tx) | ( i + 1 , tx) ) . collect( ) ;
311
+ $node. block_connected( & header, & txdata, 1 ) ;
318
312
for i in 2 ..100 {
319
313
header = BlockHeader { version: 0x20000000 , prev_blockhash: header. block_hash( ) , merkle_root: Default :: default ( ) , time: 42 , bits: 42 , nonce: 42 } ;
320
- $node. block_connected( & header, i , & Vec :: new ( ) , & [ 0 ; 0 ] ) ;
314
+ $node. block_connected( & header, & [ ] , i ) ;
321
315
}
322
316
} }
323
317
}
0 commit comments