7
7
// You may not use this file except in accordance with one or both of these
8
8
// licenses.
9
9
10
- use crate :: events:: { Event , MessageSendEvent , MessageSendEventsProvider } ;
10
+ use crate :: events:: { MessageSendEvent , MessageSendEventsProvider } ;
11
11
use crate :: ln:: functional_test_utils:: * ;
12
12
use crate :: ln:: msgs:: ChannelMessageHandler ;
13
- use crate :: util:: config:: { ChannelHandshakeConfig , UserConfig } ;
14
13
15
14
/// Splicing test, simple splice-in flow. Starts with opening a V1 channel first.
16
15
/// Builds on test_channel_open_simple()
17
16
#[ test]
18
17
fn 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
- } ;
24
18
let chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
25
19
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 ] ) ;
27
21
let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
28
22
29
23
// Initiator and Acceptor nodes
@@ -37,188 +31,22 @@ fn test_v1_splice_in() {
37
31
let push_msat = 0 ;
38
32
let channel_reserve_amnt_sat = 1_000 ;
39
33
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
+
40
37
let expected_funded_channel_id =
41
38
"ae3367da2c13bc1ceb86bf56418f62828f7ce9d6bfb15a46af5ba1f1ed8b124f" ;
39
+ assert_eq ! ( channel_id. to_string( ) , expected_funded_channel_id) ;
42
40
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
- ) ;
62
41
let expected_initiator_funding_key =
63
42
"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
- ) ;
78
43
let expected_acceptor_funding_key =
79
44
"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
- }
217
45
218
46
// ==== Channel is now ready for normal operation
219
47
220
48
// === Start of Splicing
221
- println ! ( "Start of Splicing ..., channel_id {}" , channel_id2 ) ;
49
+ println ! ( "Start of Splicing ..., channel_id {}" , channel_id ) ;
222
50
223
51
// Amount being added to the channel through the splice-in
224
52
let splice_in_sats: u64 = 20000 ;
@@ -234,7 +62,7 @@ fn test_v1_splice_in() {
234
62
let _res = initiator_node
235
63
. node
236
64
. splice_channel (
237
- & channel_id2 ,
65
+ & channel_id ,
238
66
& acceptor_node. node . get_our_node_id ( ) ,
239
67
splice_in_sats as i64 ,
240
68
funding_inputs,
@@ -304,7 +132,7 @@ fn test_v1_splice_in() {
304
132
// TODO(splicing): continue with splice transaction negotiation
305
133
306
134
// === 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 ( ) ;
308
136
let node0_shutdown_message = get_event_msg ! (
309
137
initiator_node,
310
138
MessageSendEvent :: SendShutdown ,
0 commit comments