77// You may not use this file except in accordance with one or both of these
88// licenses.
99
10- use crate :: events:: { Event , MessageSendEvent , MessageSendEventsProvider } ;
10+ use crate :: events:: { MessageSendEvent , MessageSendEventsProvider } ;
1111use crate :: ln:: functional_test_utils:: * ;
1212use crate :: ln:: msgs:: ChannelMessageHandler ;
13- use crate :: util:: config:: { ChannelHandshakeConfig , UserConfig } ;
1413
1514/// Splicing test, simple splice-in flow. Starts with opening a V1 channel first.
1615/// Builds on test_channel_open_simple()
1716#[ test]
1817fn test_v1_splice_in ( ) {
19- // Set up a network of 2 nodes
20- let cfg = UserConfig {
21- channel_handshake_config : ChannelHandshakeConfig { ..Default :: default ( ) } ,
22- ..Default :: default ( )
23- } ;
2418 let chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
2519 let node_cfgs = create_node_cfgs ( 2 , & chanmon_cfgs) ;
26- let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ Some ( cfg ) , None ] ) ;
20+ let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , None ] ) ;
2721 let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
2822
2923 // Initiator and Acceptor nodes
@@ -37,188 +31,22 @@ fn test_v1_splice_in() {
3731 let push_msat = 0 ;
3832 let channel_reserve_amnt_sat = 1_000 ;
3933
34+ let ( _, _, channel_id, _) = create_announced_chan_between_nodes_with_value (
35+ & nodes, initiator_node_index, acceptor_node_index, channel_value_sat, push_msat) ;
36+
4037 let expected_funded_channel_id =
4138 "ae3367da2c13bc1ceb86bf56418f62828f7ce9d6bfb15a46af5ba1f1ed8b124f" ;
39+ assert_eq ! ( channel_id. to_string( ) , expected_funded_channel_id) ;
4240
43- // Have initiator_node initiate a channel to acceptor_node with aforementioned parameters
44- let channel_id_temp1 = initiator_node
45- . node
46- . create_channel (
47- acceptor_node. node . get_our_node_id ( ) ,
48- channel_value_sat,
49- push_msat,
50- 42 ,
51- None ,
52- None ,
53- )
54- . unwrap ( ) ;
55-
56- // Extract the channel open message from initiator_node to acceptor_node
57- let open_channel_message = get_event_msg ! (
58- initiator_node,
59- MessageSendEvent :: SendOpenChannel ,
60- acceptor_node. node. get_our_node_id( )
61- ) ;
6241 let expected_initiator_funding_key =
6342 "03c21e841cbc0b48197d060c71e116c185fa0ac281b7d0aa5924f535154437ca3b" ;
64- assert_eq ! (
65- open_channel_message. common_fields. funding_pubkey. to_string( ) ,
66- expected_initiator_funding_key
67- ) ;
68-
69- let _res = acceptor_node
70- . node
71- . handle_open_channel ( initiator_node. node . get_our_node_id ( ) , & open_channel_message. clone ( ) ) ;
72- // Extract the accept channel message from acceptor_node to initiator_node
73- let accept_channel_message = get_event_msg ! (
74- acceptor_node,
75- MessageSendEvent :: SendAcceptChannel ,
76- initiator_node. node. get_our_node_id( )
77- ) ;
7843 let expected_acceptor_funding_key =
7944 "039481c28b904cbe12681e79937373fc76245c1b29871028ae60ba3152162c319b" ;
80- assert_eq ! (
81- accept_channel_message. common_fields. funding_pubkey. to_string( ) ,
82- expected_acceptor_funding_key
83- ) ;
84-
85- let _res = initiator_node. node . handle_accept_channel (
86- acceptor_node. node . get_our_node_id ( ) ,
87- & accept_channel_message. clone ( ) ,
88- ) ;
89- // Note: FundingGenerationReady emitted, checked and used below
90- let ( _channel_id_temp2, funding_tx, _funding_output) = create_funding_transaction (
91- & initiator_node,
92- & acceptor_node. node . get_our_node_id ( ) ,
93- channel_value_sat,
94- 42 ,
95- ) ;
96-
97- // Funding transation created, provide it
98- let _res = initiator_node
99- . node
100- . funding_transaction_generated (
101- channel_id_temp1,
102- acceptor_node. node . get_our_node_id ( ) ,
103- funding_tx. clone ( ) ,
104- )
105- . unwrap ( ) ;
106-
107- let funding_created_message = get_event_msg ! (
108- initiator_node,
109- MessageSendEvent :: SendFundingCreated ,
110- acceptor_node. node. get_our_node_id( )
111- ) ;
112-
113- let _res = acceptor_node
114- . node
115- . handle_funding_created ( initiator_node. node . get_our_node_id ( ) , & funding_created_message) ;
116-
117- assert_eq ! ( initiator_node. node. list_channels( ) . len( ) , 1 ) ;
118- {
119- let channel = & initiator_node. node . list_channels ( ) [ 0 ] ;
120- assert ! ( !channel. is_channel_ready) ;
121- }
122- // do checks on the acceptor node as well (capacity, etc.)
123- assert_eq ! ( acceptor_node. node. list_channels( ) . len( ) , 1 ) ;
124- {
125- let channel = & acceptor_node. node . list_channels ( ) [ 0 ] ;
126- assert ! ( !channel. is_channel_ready) ;
127- }
128-
129- let funding_signed_message = get_event_msg ! (
130- acceptor_node,
131- MessageSendEvent :: SendFundingSigned ,
132- initiator_node. node. get_our_node_id( )
133- ) ;
134- let _res = initiator_node
135- . node
136- . handle_funding_signed ( acceptor_node. node . get_our_node_id ( ) , & funding_signed_message) ;
137- // Take new channel ID
138- let channel_id2 = funding_signed_message. channel_id ;
139- assert_eq ! ( channel_id2. to_string( ) , expected_funded_channel_id) ;
140-
141- // Check that funding transaction has been broadcasted
142- assert_eq ! (
143- chanmon_cfgs[ initiator_node_index] . tx_broadcaster. txn_broadcasted. lock( ) . unwrap( ) . len( ) ,
144- 1
145- ) ;
146- let broadcasted_funding_tx =
147- chanmon_cfgs[ initiator_node_index] . tx_broadcaster . txn_broadcasted . lock ( ) . unwrap ( ) [ 0 ]
148- . clone ( ) ;
149-
150- check_added_monitors ! ( initiator_node, 1 ) ;
151- let _ev = get_event ! ( initiator_node, Event :: ChannelPending ) ;
152- check_added_monitors ! ( acceptor_node, 1 ) ;
153- let _ev = get_event ! ( acceptor_node, Event :: ChannelPending ) ;
154-
155- // Simulate confirmation of the funding tx
156- confirm_transaction ( & initiator_node, & broadcasted_funding_tx) ;
157- let channel_ready_message = get_event_msg ! (
158- initiator_node,
159- MessageSendEvent :: SendChannelReady ,
160- acceptor_node. node. get_our_node_id( )
161- ) ;
162-
163- confirm_transaction ( & acceptor_node, & broadcasted_funding_tx) ;
164- let channel_ready_message2 = get_event_msg ! (
165- acceptor_node,
166- MessageSendEvent :: SendChannelReady ,
167- initiator_node. node. get_our_node_id( )
168- ) ;
169-
170- let _res = acceptor_node
171- . node
172- . handle_channel_ready ( initiator_node. node . get_our_node_id ( ) , & channel_ready_message) ;
173- let _ev = get_event ! ( acceptor_node, Event :: ChannelReady ) ;
174- let _channel_update = get_event_msg ! (
175- acceptor_node,
176- MessageSendEvent :: SendChannelUpdate ,
177- initiator_node. node. get_our_node_id( )
178- ) ;
179-
180- let _res = initiator_node
181- . node
182- . handle_channel_ready ( acceptor_node. node . get_our_node_id ( ) , & channel_ready_message2) ;
183- let _ev = get_event ! ( initiator_node, Event :: ChannelReady ) ;
184- let _channel_update = get_event_msg ! (
185- initiator_node,
186- MessageSendEvent :: SendChannelUpdate ,
187- acceptor_node. node. get_our_node_id( )
188- ) ;
189-
190- // check channel capacity and other parameters
191- assert_eq ! ( initiator_node. node. list_channels( ) . len( ) , 1 ) ;
192- {
193- let channel = & initiator_node. node . list_channels ( ) [ 0 ] ;
194- assert_eq ! ( channel. channel_id. to_string( ) , expected_funded_channel_id) ;
195- assert ! ( channel. is_usable) ;
196- assert ! ( channel. is_channel_ready) ;
197- assert_eq ! ( channel. channel_value_satoshis, channel_value_sat) ;
198- assert_eq ! (
199- channel. outbound_capacity_msat,
200- 1000 * ( channel_value_sat - channel_reserve_amnt_sat)
201- ) ;
202- assert_eq ! ( channel. funding_txo. unwrap( ) . txid, funding_tx. compute_txid( ) ) ;
203- assert_eq ! ( channel. confirmations. unwrap( ) , 10 ) ;
204- }
205- // do checks on the acceptor node as well (capacity, etc.)
206- assert_eq ! ( acceptor_node. node. list_channels( ) . len( ) , 1 ) ;
207- {
208- let channel = & acceptor_node. node . list_channels ( ) [ 0 ] ;
209- assert_eq ! ( channel. channel_id. to_string( ) , expected_funded_channel_id) ;
210- assert ! ( channel. is_usable) ;
211- assert ! ( channel. is_channel_ready) ;
212- assert_eq ! ( channel. channel_value_satoshis, channel_value_sat) ;
213- assert_eq ! ( channel. outbound_capacity_msat, 0 ) ;
214- assert_eq ! ( channel. funding_txo. unwrap( ) . txid, funding_tx. compute_txid( ) ) ;
215- assert_eq ! ( channel. confirmations. unwrap( ) , 10 ) ;
216- }
21745
21846 // ==== Channel is now ready for normal operation
21947
22048 // === Start of Splicing
221- println ! ( "Start of Splicing ..., channel_id {}" , channel_id2 ) ;
49+ println ! ( "Start of Splicing ..., channel_id {}" , channel_id ) ;
22250
22351 // Amount being added to the channel through the splice-in
22452 let splice_in_sats: u64 = 20000 ;
@@ -234,7 +62,7 @@ fn test_v1_splice_in() {
23462 let _res = initiator_node
23563 . node
23664 . splice_channel (
237- & channel_id2 ,
65+ & channel_id ,
23866 & acceptor_node. node . get_our_node_id ( ) ,
23967 splice_in_sats as i64 ,
24068 funding_inputs,
@@ -304,7 +132,7 @@ fn test_v1_splice_in() {
304132 // TODO(splicing): continue with splice transaction negotiation
305133
306134 // === Close channel, cooperatively
307- initiator_node. node . close_channel ( & channel_id2 , & acceptor_node. node . get_our_node_id ( ) ) . unwrap ( ) ;
135+ initiator_node. node . close_channel ( & channel_id , & acceptor_node. node . get_our_node_id ( ) ) . unwrap ( ) ;
308136 let node0_shutdown_message = get_event_msg ! (
309137 initiator_node,
310138 MessageSendEvent :: SendShutdown ,
0 commit comments