@@ -557,80 +557,87 @@ fn test_scid_alias_returned() {
557
557
. blamed_chan_closed( false ) . expected_htlc_error_data( 0x1000 |12 , & err_data) ) ;
558
558
}
559
559
560
- #[ test]
561
- fn test_simple_0_conf_channel ( ) {
562
- // If our peer tells us they will accept our channel with 0 confs, and we funded the channel,
563
- // we should trust the funding won't be double-spent (assuming `trust_own_funding_0conf` is
564
- // set)!
565
- // Further, if we `accept_inbound_channel_from_trusted_peer_0conf`, funding locked messages
566
- // should fly immediately and the channel should be available for use as soon as they are
567
- // received.
568
-
569
- let chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
570
- let node_cfgs = create_node_cfgs ( 2 , & chanmon_cfgs) ;
571
- let mut chan_config = test_default_channel_config ( ) ;
572
- chan_config. manually_accept_inbound_channels = true ;
573
-
574
- let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , Some ( chan_config) ] ) ;
575
- let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
576
-
577
- nodes[ 0 ] . node . create_channel ( nodes[ 1 ] . node . get_our_node_id ( ) , 100000 , 10001 , 42 , None ) . unwrap ( ) ;
578
- let open_channel = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendOpenChannel , nodes[ 1 ] . node. get_our_node_id( ) ) ;
560
+ // Receiver must have been initialized with manually_accept_inbound_channels set to true.
561
+ fn open_zero_conf_channel < ' a , ' b , ' c , ' d > ( initiator : & ' a Node < ' b , ' c , ' d > , receiver : & ' a Node < ' b , ' c , ' d > , initiator_config : Option < UserConfig > ) -> bitcoin:: Transaction {
562
+ initiator. node . create_channel ( receiver. node . get_our_node_id ( ) , 100_000 , 10_001 , 42 , initiator_config) . unwrap ( ) ;
563
+ let open_channel = get_event_msg ! ( initiator, MessageSendEvent :: SendOpenChannel , receiver. node. get_our_node_id( ) ) ;
579
564
580
- nodes [ 1 ] . node . handle_open_channel ( & nodes [ 0 ] . node . get_our_node_id ( ) , InitFeatures :: known ( ) , & open_channel) ;
581
- let events = nodes [ 1 ] . node . get_and_clear_pending_events ( ) ;
565
+ receiver . node . handle_open_channel ( & initiator . node . get_our_node_id ( ) , InitFeatures :: known ( ) , & open_channel) ;
566
+ let events = receiver . node . get_and_clear_pending_events ( ) ;
582
567
assert_eq ! ( events. len( ) , 1 ) ;
583
568
match events[ 0 ] {
584
569
Event :: OpenChannelRequest { temporary_channel_id, .. } => {
585
- nodes [ 1 ] . node . accept_inbound_channel_from_trusted_peer_0conf ( & temporary_channel_id, 0 ) . unwrap ( ) ;
570
+ receiver . node . accept_inbound_channel_from_trusted_peer_0conf ( & temporary_channel_id, 0 ) . unwrap ( ) ;
586
571
} ,
587
572
_ => panic ! ( "Unexpected event" ) ,
588
573
} ;
589
574
590
- let mut accept_channel = get_event_msg ! ( nodes [ 1 ] , MessageSendEvent :: SendAcceptChannel , nodes [ 0 ] . node. get_our_node_id( ) ) ;
575
+ let mut accept_channel = get_event_msg ! ( receiver , MessageSendEvent :: SendAcceptChannel , initiator . node. get_our_node_id( ) ) ;
591
576
assert_eq ! ( accept_channel. minimum_depth, 0 ) ;
592
- nodes [ 0 ] . node . handle_accept_channel ( & nodes [ 1 ] . node . get_our_node_id ( ) , InitFeatures :: known ( ) , & accept_channel) ;
577
+ initiator . node . handle_accept_channel ( & receiver . node . get_our_node_id ( ) , InitFeatures :: known ( ) , & accept_channel) ;
593
578
594
- let ( temporary_channel_id, tx, _) = create_funding_transaction ( & nodes [ 0 ] , 100000 , 42 ) ;
595
- nodes [ 0 ] . node . funding_transaction_generated ( & temporary_channel_id, tx. clone ( ) ) . unwrap ( ) ;
596
- let funding_created = get_event_msg ! ( nodes [ 0 ] , MessageSendEvent :: SendFundingCreated , nodes [ 1 ] . node. get_our_node_id( ) ) ;
579
+ let ( temporary_channel_id, tx, _) = create_funding_transaction ( & initiator , 100_000 , 42 ) ;
580
+ initiator . node . funding_transaction_generated ( & temporary_channel_id, tx. clone ( ) ) . unwrap ( ) ;
581
+ let funding_created = get_event_msg ! ( initiator , MessageSendEvent :: SendFundingCreated , receiver . node. get_our_node_id( ) ) ;
597
582
598
- nodes [ 1 ] . node . handle_funding_created ( & nodes [ 0 ] . node . get_our_node_id ( ) , & funding_created) ;
599
- check_added_monitors ! ( nodes [ 1 ] , 1 ) ;
600
- let bs_signed_locked = nodes [ 1 ] . node . get_and_clear_pending_msg_events ( ) ;
583
+ receiver . node . handle_funding_created ( & initiator . node . get_our_node_id ( ) , & funding_created) ;
584
+ check_added_monitors ! ( receiver , 1 ) ;
585
+ let bs_signed_locked = receiver . node . get_and_clear_pending_msg_events ( ) ;
601
586
assert_eq ! ( bs_signed_locked. len( ) , 2 ) ;
602
587
let as_funding_locked;
603
588
match & bs_signed_locked[ 0 ] {
604
589
MessageSendEvent :: SendFundingSigned { node_id, msg } => {
605
- assert_eq ! ( * node_id, nodes [ 0 ] . node. get_our_node_id( ) ) ;
606
- nodes [ 0 ] . node . handle_funding_signed ( & nodes [ 1 ] . node . get_our_node_id ( ) , & msg) ;
607
- check_added_monitors ! ( nodes [ 0 ] , 1 ) ;
590
+ assert_eq ! ( * node_id, initiator . node. get_our_node_id( ) ) ;
591
+ initiator . node . handle_funding_signed ( & receiver . node . get_our_node_id ( ) , & msg) ;
592
+ check_added_monitors ! ( initiator , 1 ) ;
608
593
609
- assert_eq ! ( nodes [ 0 ] . tx_broadcaster. txn_broadcasted. lock( ) . unwrap( ) . len( ) , 1 ) ;
610
- assert_eq ! ( nodes [ 0 ] . tx_broadcaster. txn_broadcasted. lock( ) . unwrap( ) . split_off( 0 ) [ 0 ] , tx) ;
594
+ assert_eq ! ( initiator . tx_broadcaster. txn_broadcasted. lock( ) . unwrap( ) . len( ) , 1 ) ;
595
+ assert_eq ! ( initiator . tx_broadcaster. txn_broadcasted. lock( ) . unwrap( ) . split_off( 0 ) [ 0 ] , tx) ;
611
596
612
- as_funding_locked = get_event_msg ! ( nodes [ 0 ] , MessageSendEvent :: SendFundingLocked , nodes [ 1 ] . node. get_our_node_id( ) ) ;
597
+ as_funding_locked = get_event_msg ! ( initiator , MessageSendEvent :: SendFundingLocked , receiver . node. get_our_node_id( ) ) ;
613
598
}
614
599
_ => panic ! ( "Unexpected event" ) ,
615
600
}
616
601
match & bs_signed_locked[ 1 ] {
617
602
MessageSendEvent :: SendFundingLocked { node_id, msg } => {
618
- assert_eq ! ( * node_id, nodes [ 0 ] . node. get_our_node_id( ) ) ;
619
- nodes [ 0 ] . node . handle_funding_locked ( & nodes [ 1 ] . node . get_our_node_id ( ) , & msg) ;
603
+ assert_eq ! ( * node_id, initiator . node. get_our_node_id( ) ) ;
604
+ initiator . node . handle_funding_locked ( & receiver . node . get_our_node_id ( ) , & msg) ;
620
605
}
621
606
_ => panic ! ( "Unexpected event" ) ,
622
607
}
623
608
624
- nodes [ 1 ] . node . handle_funding_locked ( & nodes [ 0 ] . node . get_our_node_id ( ) , & as_funding_locked) ;
609
+ receiver . node . handle_funding_locked ( & initiator . node . get_our_node_id ( ) , & as_funding_locked) ;
625
610
626
- let as_channel_update = get_event_msg ! ( nodes [ 0 ] , MessageSendEvent :: SendChannelUpdate , nodes [ 1 ] . node. get_our_node_id( ) ) ;
627
- let bs_channel_update = get_event_msg ! ( nodes [ 1 ] , MessageSendEvent :: SendChannelUpdate , nodes [ 0 ] . node. get_our_node_id( ) ) ;
611
+ let as_channel_update = get_event_msg ! ( initiator , MessageSendEvent :: SendChannelUpdate , receiver . node. get_our_node_id( ) ) ;
612
+ let bs_channel_update = get_event_msg ! ( receiver , MessageSendEvent :: SendChannelUpdate , initiator . node. get_our_node_id( ) ) ;
628
613
629
- nodes [ 0 ] . node . handle_channel_update ( & nodes [ 1 ] . node . get_our_node_id ( ) , & bs_channel_update) ;
630
- nodes [ 1 ] . node . handle_channel_update ( & nodes [ 0 ] . node . get_our_node_id ( ) , & as_channel_update) ;
614
+ initiator . node . handle_channel_update ( & receiver . node . get_our_node_id ( ) , & bs_channel_update) ;
615
+ receiver . node . handle_channel_update ( & initiator . node . get_our_node_id ( ) , & as_channel_update) ;
631
616
632
- assert_eq ! ( nodes[ 0 ] . node. list_usable_channels( ) . len( ) , 1 ) ;
633
- assert_eq ! ( nodes[ 1 ] . node. list_usable_channels( ) . len( ) , 1 ) ;
617
+ assert_eq ! ( initiator. node. list_usable_channels( ) . len( ) , 1 ) ;
618
+ assert_eq ! ( receiver. node. list_usable_channels( ) . len( ) , 1 ) ;
619
+
620
+ tx
621
+ }
622
+
623
+ #[ test]
624
+ fn test_simple_0_conf_channel ( ) {
625
+ // If our peer tells us they will accept our channel with 0 confs, and we funded the channel,
626
+ // we should trust the funding won't be double-spent (assuming `trust_own_funding_0conf` is
627
+ // set)!
628
+ // Further, if we `accept_inbound_channel_from_trusted_peer_0conf`, funding locked messages
629
+ // should fly immediately and the channel should be available for use as soon as they are
630
+ // received.
631
+
632
+ let chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
633
+ let node_cfgs = create_node_cfgs ( 2 , & chanmon_cfgs) ;
634
+ let mut chan_config = test_default_channel_config ( ) ;
635
+ chan_config. manually_accept_inbound_channels = true ;
636
+
637
+ let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , Some ( chan_config) ] ) ;
638
+ let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
639
+
640
+ open_zero_conf_channel ( & nodes[ 0 ] , & nodes[ 1 ] , None ) ;
634
641
635
642
send_payment ( & nodes[ 0 ] , & [ & nodes[ 1 ] ] , 100_000 ) ;
636
643
}
@@ -790,68 +797,13 @@ fn test_public_0_conf_channel() {
790
797
let node_cfgs = create_node_cfgs ( 2 , & chanmon_cfgs) ;
791
798
let mut chan_config = test_default_channel_config ( ) ;
792
799
chan_config. manually_accept_inbound_channels = true ;
793
- chan_config. channel_options . announced_channel = true ;
794
800
795
801
let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , Some ( chan_config) ] ) ;
796
802
let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
797
803
798
- nodes[ 0 ] . node . create_channel ( nodes[ 1 ] . node . get_our_node_id ( ) , 100000 , 10001 , 42 , None ) . unwrap ( ) ;
799
- let open_channel = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendOpenChannel , nodes[ 1 ] . node. get_our_node_id( ) ) ;
800
-
801
- nodes[ 1 ] . node . handle_open_channel ( & nodes[ 0 ] . node . get_our_node_id ( ) , InitFeatures :: known ( ) , & open_channel) ;
802
- let events = nodes[ 1 ] . node . get_and_clear_pending_events ( ) ;
803
- assert_eq ! ( events. len( ) , 1 ) ;
804
- match events[ 0 ] {
805
- Event :: OpenChannelRequest { temporary_channel_id, .. } => {
806
- nodes[ 1 ] . node . accept_inbound_channel_from_trusted_peer_0conf ( & temporary_channel_id, 0 ) . unwrap ( ) ;
807
- } ,
808
- _ => panic ! ( "Unexpected event" ) ,
809
- } ;
810
-
811
- let mut accept_channel = get_event_msg ! ( nodes[ 1 ] , MessageSendEvent :: SendAcceptChannel , nodes[ 0 ] . node. get_our_node_id( ) ) ;
812
- assert_eq ! ( accept_channel. minimum_depth, 0 ) ;
813
- nodes[ 0 ] . node . handle_accept_channel ( & nodes[ 1 ] . node . get_our_node_id ( ) , InitFeatures :: known ( ) , & accept_channel) ;
814
-
815
- let ( temporary_channel_id, tx, _) = create_funding_transaction ( & nodes[ 0 ] , 100000 , 42 ) ;
816
- nodes[ 0 ] . node . funding_transaction_generated ( & temporary_channel_id, tx. clone ( ) ) . unwrap ( ) ;
817
- let funding_created = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendFundingCreated , nodes[ 1 ] . node. get_our_node_id( ) ) ;
818
-
819
- nodes[ 1 ] . node . handle_funding_created ( & nodes[ 0 ] . node . get_our_node_id ( ) , & funding_created) ;
820
- check_added_monitors ! ( nodes[ 1 ] , 1 ) ;
821
- let bs_signed_locked = nodes[ 1 ] . node . get_and_clear_pending_msg_events ( ) ;
822
- assert_eq ! ( bs_signed_locked. len( ) , 2 ) ;
823
- let as_funding_locked;
824
- match & bs_signed_locked[ 0 ] {
825
- MessageSendEvent :: SendFundingSigned { node_id, msg } => {
826
- assert_eq ! ( * node_id, nodes[ 0 ] . node. get_our_node_id( ) ) ;
827
- nodes[ 0 ] . node . handle_funding_signed ( & nodes[ 1 ] . node . get_our_node_id ( ) , & msg) ;
828
- check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
829
-
830
- assert_eq ! ( nodes[ 0 ] . tx_broadcaster. txn_broadcasted. lock( ) . unwrap( ) . len( ) , 1 ) ;
831
- assert_eq ! ( nodes[ 0 ] . tx_broadcaster. txn_broadcasted. lock( ) . unwrap( ) . split_off( 0 ) [ 0 ] , tx) ;
832
-
833
- as_funding_locked = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendFundingLocked , nodes[ 1 ] . node. get_our_node_id( ) ) ;
834
- }
835
- _ => panic ! ( "Unexpected event" ) ,
836
- }
837
- match & bs_signed_locked[ 1 ] {
838
- MessageSendEvent :: SendFundingLocked { node_id, msg } => {
839
- assert_eq ! ( * node_id, nodes[ 0 ] . node. get_our_node_id( ) ) ;
840
- nodes[ 0 ] . node . handle_funding_locked ( & nodes[ 1 ] . node . get_our_node_id ( ) , & msg) ;
841
- }
842
- _ => panic ! ( "Unexpected event" ) ,
843
- }
844
-
845
- nodes[ 1 ] . node . handle_funding_locked ( & nodes[ 0 ] . node . get_our_node_id ( ) , & as_funding_locked) ;
846
-
847
- let as_channel_update = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendChannelUpdate , nodes[ 1 ] . node. get_our_node_id( ) ) ;
848
- let bs_channel_update = get_event_msg ! ( nodes[ 1 ] , MessageSendEvent :: SendChannelUpdate , nodes[ 0 ] . node. get_our_node_id( ) ) ;
849
-
850
- nodes[ 0 ] . node . handle_channel_update ( & nodes[ 1 ] . node . get_our_node_id ( ) , & bs_channel_update) ;
851
- nodes[ 1 ] . node . handle_channel_update ( & nodes[ 0 ] . node . get_our_node_id ( ) , & as_channel_update) ;
852
-
853
- assert_eq ! ( nodes[ 0 ] . node. list_usable_channels( ) . len( ) , 1 ) ;
854
- assert_eq ! ( nodes[ 1 ] . node. list_usable_channels( ) . len( ) , 1 ) ;
804
+ // This is the default but we force it on anyway
805
+ chan_config. channel_options . announced_channel = true ;
806
+ let tx = open_zero_conf_channel ( & nodes[ 0 ] , & nodes[ 1 ] , Some ( chan_config) ) ;
855
807
856
808
// We can use the channel immediately, but we can't announce it until we get 6+ confirmations
857
809
send_payment ( & nodes[ 0 ] , & [ & nodes[ 1 ] ] , 100_000 ) ;
@@ -886,5 +838,4 @@ fn test_public_0_conf_channel() {
886
838
} ,
887
839
_ => panic ! ( "Unexpected event" ) ,
888
840
} ;
889
-
890
841
}
0 commit comments