@@ -36,9 +36,9 @@ use lightning::chain::{BestBlock, ChannelMonitorUpdateStatus, chainmonitor, chan
3636use lightning:: chain:: channelmonitor:: { ChannelMonitor , MonitorEvent } ;
3737use lightning:: chain:: transaction:: OutPoint ;
3838use lightning:: chain:: chaininterface:: { BroadcasterInterface , ConfirmationTarget , FeeEstimator } ;
39- use lightning:: chain:: keysinterface:: { KeyMaterial , KeysInterface , InMemorySigner , Recipient , EntropySource , NodeSigner , SignerProvider } ;
39+ use lightning:: chain:: keysinterface:: { KeyMaterial , InMemorySigner , Recipient , EntropySource , NodeSigner , SignerProvider } ;
4040use lightning:: ln:: { PaymentHash , PaymentPreimage , PaymentSecret } ;
41- use lightning:: ln:: channelmanager:: { self , ChainParameters , ChannelDetails , ChannelManager , PaymentSendFailure , ChannelManagerReadArgs , PaymentId } ;
41+ use lightning:: ln:: channelmanager:: { ChainParameters , ChannelDetails , ChannelManager , PaymentSendFailure , ChannelManagerReadArgs , PaymentId } ;
4242use lightning:: ln:: channel:: FEE_SPIKE_BUFFER_FEE_INCREASE_MULTIPLE ;
4343use lightning:: ln:: msgs:: { self , CommitmentUpdate , ChannelMessageHandler , DecodeError , UpdateAddHTLC , Init } ;
4444use lightning:: ln:: script:: ShutdownScript ;
@@ -61,7 +61,7 @@ use bitcoin::secp256k1::Secp256k1;
6161
6262use std:: mem;
6363use std:: cmp:: { self , Ordering } ;
64- use std :: collections :: { HashSet , hash_map, HashMap } ;
64+ use hashbrown :: { HashSet , hash_map, HashMap } ;
6565use std:: sync:: { Arc , Mutex } ;
6666use std:: sync:: atomic;
6767use std:: io:: Cursor ;
@@ -159,7 +159,7 @@ impl chain::Watch<EnforcingSigner> for TestChainMonitor {
159159 hash_map:: Entry :: Vacant ( _) => panic ! ( "Didn't have monitor on update call" ) ,
160160 } ;
161161 let deserialized_monitor = <( BlockHash , channelmonitor:: ChannelMonitor < EnforcingSigner > ) >::
162- read ( & mut Cursor :: new ( & map_entry. get ( ) . 1 ) , & * self . keys ) . unwrap ( ) . 1 ;
162+ read ( & mut Cursor :: new ( & map_entry. get ( ) . 1 ) , ( & * self . keys , & * self . keys ) ) . unwrap ( ) . 1 ;
163163 deserialized_monitor. update_monitor ( & update, & & TestBroadcaster { } , & FuzzEstimator { ret_val : atomic:: AtomicU32 :: new ( 253 ) } , & self . logger ) . unwrap ( ) ;
164164 let mut ser = VecWriter ( Vec :: new ( ) ) ;
165165 deserialized_monitor. write ( & mut ser) . unwrap ( ) ;
@@ -270,8 +270,6 @@ impl SignerProvider for KeyProvider {
270270 }
271271}
272272
273- impl KeysInterface for KeyProvider { }
274-
275273impl KeyProvider {
276274 fn make_enforcement_state_cell ( & self , commitment_seed : [ u8 ; 32 ] ) -> Arc < Mutex < EnforcementState > > {
277275 let mut revoked_commitments = self . enforcement_states . lock ( ) . unwrap ( ) ;
@@ -328,7 +326,7 @@ fn check_payment_err(send_err: PaymentSendFailure) {
328326 }
329327}
330328
331- type ChanMan < ' a > = ChannelManager < Arc < TestChainMonitor > , Arc < TestBroadcaster > , Arc < KeyProvider > , Arc < FuzzEstimator > , & ' a FuzzRouter , Arc < dyn Logger > > ;
329+ type ChanMan < ' a > = ChannelManager < Arc < TestChainMonitor > , Arc < TestBroadcaster > , Arc < KeyProvider > , Arc < KeyProvider > , Arc < KeyProvider > , Arc < FuzzEstimator > , & ' a FuzzRouter , Arc < dyn Logger > > ;
332330
333331#[ inline]
334332fn get_payment_secret_hash ( dest : & ChanMan , payment_id : & mut u8 ) -> Option < ( PaymentSecret , PaymentHash ) > {
@@ -353,9 +351,9 @@ fn send_payment(source: &ChanMan, dest: &ChanMan, dest_chan_id: u64, amt: u64, p
353351 if let Err ( err) = source. send_payment ( & Route {
354352 paths : vec ! [ vec![ RouteHop {
355353 pubkey: dest. get_our_node_id( ) ,
356- node_features: channelmanager :: provided_node_features ( ) ,
354+ node_features: dest . node_features ( ) ,
357355 short_channel_id: dest_chan_id,
358- channel_features: channelmanager :: provided_channel_features ( ) ,
356+ channel_features: dest . channel_features ( ) ,
359357 fee_msat: amt,
360358 cltv_expiry_delta: 200 ,
361359 } ] ] ,
@@ -375,16 +373,16 @@ fn send_hop_payment(source: &ChanMan, middle: &ChanMan, middle_chan_id: u64, des
375373 if let Err ( err) = source. send_payment ( & Route {
376374 paths : vec ! [ vec![ RouteHop {
377375 pubkey: middle. get_our_node_id( ) ,
378- node_features: channelmanager :: provided_node_features ( ) ,
376+ node_features: middle . node_features ( ) ,
379377 short_channel_id: middle_chan_id,
380- channel_features: channelmanager :: provided_channel_features ( ) ,
378+ channel_features: middle . channel_features ( ) ,
381379 fee_msat: 50000 ,
382380 cltv_expiry_delta: 100 ,
383381 } , RouteHop {
384382 pubkey: dest. get_our_node_id( ) ,
385- node_features: channelmanager :: provided_node_features ( ) ,
383+ node_features: dest . node_features ( ) ,
386384 short_channel_id: dest_chan_id,
387- channel_features: channelmanager :: provided_channel_features ( ) ,
385+ channel_features: dest . channel_features ( ) ,
388386 fee_msat: amt,
389387 cltv_expiry_delta: 200 ,
390388 } ] ] ,
@@ -418,7 +416,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
418416 network,
419417 best_block: BestBlock :: from_genesis( network) ,
420418 } ;
421- ( ChannelManager :: new( $fee_estimator. clone( ) , monitor. clone( ) , broadcast. clone( ) , & router, Arc :: clone( & logger) , keys_manager. clone( ) , config, params) ,
419+ ( ChannelManager :: new( $fee_estimator. clone( ) , monitor. clone( ) , broadcast. clone( ) , & router, Arc :: clone( & logger) , keys_manager. clone( ) , keys_manager . clone ( ) , keys_manager . clone ( ) , config, params) ,
422420 monitor, keys_manager)
423421 } }
424422 }
@@ -439,7 +437,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
439437 let mut monitors = HashMap :: new( ) ;
440438 let mut old_monitors = $old_monitors. latest_monitors. lock( ) . unwrap( ) ;
441439 for ( outpoint, ( update_id, monitor_ser) ) in old_monitors. drain( ) {
442- monitors. insert( outpoint, <( BlockHash , ChannelMonitor <EnforcingSigner >) >:: read( & mut Cursor :: new( & monitor_ser) , & * $keys_manager) . expect( "Failed to read monitor" ) . 1 ) ;
440+ monitors. insert( outpoint, <( BlockHash , ChannelMonitor <EnforcingSigner >) >:: read( & mut Cursor :: new( & monitor_ser) , ( & * $keys_manager, & * $keys_manager ) ) . expect( "Failed to read monitor" ) . 1 ) ;
443441 chain_monitor. latest_monitors. lock( ) . unwrap( ) . insert( outpoint, ( update_id, monitor_ser) ) ;
444442 }
445443 let mut monitor_refs = HashMap :: new( ) ;
@@ -448,7 +446,9 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
448446 }
449447
450448 let read_args = ChannelManagerReadArgs {
451- keys_manager,
449+ entropy_source: keys_manager. clone( ) ,
450+ node_signer: keys_manager. clone( ) ,
451+ signer_provider: keys_manager. clone( ) ,
452452 fee_estimator: $fee_estimator. clone( ) ,
453453 chain_monitor: chain_monitor. clone( ) ,
454454 tx_broadcaster: broadcast. clone( ) ,
@@ -470,8 +470,8 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
470470 let mut channel_txn = Vec :: new ( ) ;
471471 macro_rules! make_channel {
472472 ( $source: expr, $dest: expr, $chan_id: expr) => { {
473- $source. peer_connected( & $dest. get_our_node_id( ) , & Init { features: channelmanager :: provided_init_features ( ) , remote_network_address: None } ) . unwrap( ) ;
474- $dest. peer_connected( & $source. get_our_node_id( ) , & Init { features: channelmanager :: provided_init_features ( ) , remote_network_address: None } ) . unwrap( ) ;
473+ $source. peer_connected( & $dest. get_our_node_id( ) , & Init { features: $dest . init_features ( ) , remote_network_address: None } ) . unwrap( ) ;
474+ $dest. peer_connected( & $source. get_our_node_id( ) , & Init { features: $source . init_features ( ) , remote_network_address: None } ) . unwrap( ) ;
475475
476476 $source. create_channel( $dest. get_our_node_id( ) , 100_000 , 42 , 0 , None ) . unwrap( ) ;
477477 let open_channel = {
@@ -482,7 +482,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
482482 } else { panic!( "Wrong event type" ) ; }
483483 } ;
484484
485- $dest. handle_open_channel( & $source. get_our_node_id( ) , channelmanager :: provided_init_features ( ) , & open_channel) ;
485+ $dest. handle_open_channel( & $source. get_our_node_id( ) , & open_channel) ;
486486 let accept_channel = {
487487 let events = $dest. get_and_clear_pending_msg_events( ) ;
488488 assert_eq!( events. len( ) , 1 ) ;
@@ -491,7 +491,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
491491 } else { panic!( "Wrong event type" ) ; }
492492 } ;
493493
494- $source. handle_accept_channel( & $dest. get_our_node_id( ) , channelmanager :: provided_init_features ( ) , & accept_channel) ;
494+ $source. handle_accept_channel( & $dest. get_our_node_id( ) , & accept_channel) ;
495495 let funding_output;
496496 {
497497 let events = $source. get_and_clear_pending_events( ) ;
@@ -990,15 +990,15 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
990990 } ,
991991 0x0e => {
992992 if chan_a_disconnected {
993- nodes[ 0 ] . peer_connected ( & nodes[ 1 ] . get_our_node_id ( ) , & Init { features : channelmanager :: provided_init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
994- nodes[ 1 ] . peer_connected ( & nodes[ 0 ] . get_our_node_id ( ) , & Init { features : channelmanager :: provided_init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
993+ nodes[ 0 ] . peer_connected ( & nodes[ 1 ] . get_our_node_id ( ) , & Init { features : nodes [ 1 ] . init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
994+ nodes[ 1 ] . peer_connected ( & nodes[ 0 ] . get_our_node_id ( ) , & Init { features : nodes [ 0 ] . init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
995995 chan_a_disconnected = false ;
996996 }
997997 } ,
998998 0x0f => {
999999 if chan_b_disconnected {
1000- nodes[ 1 ] . peer_connected ( & nodes[ 2 ] . get_our_node_id ( ) , & Init { features : channelmanager :: provided_init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
1001- nodes[ 2 ] . peer_connected ( & nodes[ 1 ] . get_our_node_id ( ) , & Init { features : channelmanager :: provided_init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
1000+ nodes[ 1 ] . peer_connected ( & nodes[ 2 ] . get_our_node_id ( ) , & Init { features : nodes [ 2 ] . init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
1001+ nodes[ 2 ] . peer_connected ( & nodes[ 1 ] . get_our_node_id ( ) , & Init { features : nodes [ 1 ] . init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
10021002 chan_b_disconnected = false ;
10031003 }
10041004 } ,
@@ -1193,13 +1193,13 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
11931193
11941194 // Next, make sure peers are all connected to each other
11951195 if chan_a_disconnected {
1196- nodes[ 0 ] . peer_connected ( & nodes[ 1 ] . get_our_node_id ( ) , & Init { features : channelmanager :: provided_init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
1197- nodes[ 1 ] . peer_connected ( & nodes[ 0 ] . get_our_node_id ( ) , & Init { features : channelmanager :: provided_init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
1196+ nodes[ 0 ] . peer_connected ( & nodes[ 1 ] . get_our_node_id ( ) , & Init { features : nodes [ 1 ] . init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
1197+ nodes[ 1 ] . peer_connected ( & nodes[ 0 ] . get_our_node_id ( ) , & Init { features : nodes [ 0 ] . init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
11981198 chan_a_disconnected = false ;
11991199 }
12001200 if chan_b_disconnected {
1201- nodes[ 1 ] . peer_connected ( & nodes[ 2 ] . get_our_node_id ( ) , & Init { features : channelmanager :: provided_init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
1202- nodes[ 2 ] . peer_connected ( & nodes[ 1 ] . get_our_node_id ( ) , & Init { features : channelmanager :: provided_init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
1201+ nodes[ 1 ] . peer_connected ( & nodes[ 2 ] . get_our_node_id ( ) , & Init { features : nodes [ 2 ] . init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
1202+ nodes[ 2 ] . peer_connected ( & nodes[ 1 ] . get_our_node_id ( ) , & Init { features : nodes [ 1 ] . init_features ( ) , remote_network_address : None } ) . unwrap ( ) ;
12031203 chan_b_disconnected = false ;
12041204 }
12051205
0 commit comments