@@ -431,7 +431,7 @@ fn send_hop_payment(source: &ChanMan, middle: &ChanMan, middle_chan_id: u64, des
431431}
432432
433433#[ inline]
434- pub fn do_test < Out : Output > ( data : & [ u8 ] , underlying_out : Out ) {
434+ pub fn do_test < Out : Output > ( data : & [ u8 ] , underlying_out : Out , anchors : bool ) {
435435 let out = SearchingOutput :: new ( underlying_out) ;
436436 let broadcast = Arc :: new ( TestBroadcaster { } ) ;
437437 let router = FuzzRouter { } ;
@@ -449,6 +449,10 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
449449 let mut config = UserConfig :: default ( ) ;
450450 config. channel_config. forwarding_fee_proportional_millionths = 0 ;
451451 config. channel_handshake_config. announced_channel = true ;
452+ if anchors {
453+ config. channel_handshake_config. negotiate_anchors_zero_fee_htlc_tx = true ;
454+ config. manually_accept_inbound_channels = true ;
455+ }
452456 let network = Network :: Bitcoin ;
453457 let best_block_timestamp = genesis_block( network) . header. time;
454458 let params = ChainParameters {
@@ -508,7 +512,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
508512
509513 let mut channel_txn = Vec :: new ( ) ;
510514 macro_rules! make_channel {
511- ( $source: expr, $dest: expr, $chan_id: expr) => { {
515+ ( $source: expr, $dest: expr, $dest_keys_manager : expr , $ chan_id: expr) => { {
512516 $source. peer_connected( & $dest. get_our_node_id( ) , & Init {
513517 features: $dest. init_features( ) , networks: None , remote_network_address: None
514518 } , true ) . unwrap( ) ;
@@ -527,6 +531,22 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
527531
528532 $dest. handle_open_channel( & $source. get_our_node_id( ) , & open_channel) ;
529533 let accept_channel = {
534+ if anchors {
535+ let events = $dest. get_and_clear_pending_events( ) ;
536+ assert_eq!( events. len( ) , 1 ) ;
537+ if let events:: Event :: OpenChannelRequest {
538+ ref temporary_channel_id, ref counterparty_node_id, ..
539+ } = events[ 0 ] {
540+ let mut random_bytes = [ 0u8 ; 16 ] ;
541+ random_bytes. copy_from_slice( & $dest_keys_manager. get_secure_random_bytes( ) [ ..16 ] ) ;
542+ let user_channel_id = u128 :: from_be_bytes( random_bytes) ;
543+ $dest. accept_inbound_channel(
544+ temporary_channel_id,
545+ counterparty_node_id,
546+ user_channel_id,
547+ ) . unwrap( ) ;
548+ } else { panic!( "Wrong event type" ) ; }
549+ }
530550 let events = $dest. get_and_clear_pending_msg_events( ) ;
531551 assert_eq!( events. len( ) , 1 ) ;
532552 if let events:: MessageSendEvent :: SendAcceptChannel { ref msg, .. } = events[ 0 ] {
@@ -638,8 +658,8 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
638658
639659 let mut nodes = [ node_a, node_b, node_c] ;
640660
641- let chan_1_funding = make_channel ! ( nodes[ 0 ] , nodes[ 1 ] , 0 ) ;
642- let chan_2_funding = make_channel ! ( nodes[ 1 ] , nodes[ 2 ] , 1 ) ;
661+ let chan_1_funding = make_channel ! ( nodes[ 0 ] , nodes[ 1 ] , keys_manager_b , 0 ) ;
662+ let chan_2_funding = make_channel ! ( nodes[ 1 ] , nodes[ 2 ] , keys_manager_c , 1 ) ;
643663
644664 for node in nodes. iter ( ) {
645665 confirm_txn ! ( node) ;
@@ -1337,10 +1357,12 @@ impl<O: Output> SearchingOutput<O> {
13371357}
13381358
13391359pub fn chanmon_consistency_test < Out : Output > ( data : & [ u8 ] , out : Out ) {
1340- do_test ( data, out) ;
1360+ do_test ( data, out. clone ( ) , false ) ;
1361+ do_test ( data, out, true ) ;
13411362}
13421363
13431364#[ no_mangle]
13441365pub extern "C" fn chanmon_consistency_run ( data : * const u8 , datalen : usize ) {
1345- do_test ( unsafe { std:: slice:: from_raw_parts ( data, datalen) } , test_logger:: DevNull { } ) ;
1366+ do_test ( unsafe { std:: slice:: from_raw_parts ( data, datalen) } , test_logger:: DevNull { } , false ) ;
1367+ do_test ( unsafe { std:: slice:: from_raw_parts ( data, datalen) } , test_logger:: DevNull { } , true ) ;
13461368}
0 commit comments