@@ -42,6 +42,10 @@ pub trait ExternalLightningNode {
42
42
fn check_receive_payment ( & mut self , invoice : Bolt11Invoice ) ;
43
43
44
44
fn close_channel ( & mut self , channel_id : OutPoint , node_id : PublicKey , force : bool ) ;
45
+
46
+ fn create_new_address ( & mut self ) -> String ;
47
+
48
+ fn open_channel ( & mut self , node_id : PublicKey , funding_amount_sat : u64 ) ;
45
49
}
46
50
47
51
static BITCOIND_CLIENT : OnceLock < BitcoindClient > = OnceLock :: new ( ) ;
@@ -249,3 +253,59 @@ pub(crate) fn do_ldk_opens_channel_full_cycle_with_external_node<E: ExternalLigh
249
253
250
254
node. stop ( ) . unwrap ( ) ;
251
255
}
256
+
257
+ pub ( crate ) fn do_external_node_opens_channel_simple_transactions_with_ldk <
258
+ E : ExternalLightningNode ,
259
+ > (
260
+ external_node : & mut E ,
261
+ ) {
262
+ // Initialize LDK node and clients
263
+ let ( node, bitcoind_client, electrs_client) = setup_test_node ( false ) ;
264
+
265
+ // setup external node info
266
+ let ( external_node_id, external_node_address) = external_node. get_node_info ( ) ;
267
+
268
+ let addr_string = external_node. create_new_address ( ) ;
269
+ let addr = bitcoin:: Address :: from_str ( & addr_string)
270
+ . unwrap ( )
271
+ . require_network ( bitcoin:: Network :: Regtest )
272
+ . unwrap ( ) ;
273
+ let amount = Amount :: from_sat ( 5_000_000 ) ;
274
+ distribute_funds_unconfirmed ( bitcoind_client, & electrs_client, vec ! [ addr] , amount) ;
275
+ generate_blocks_and_wait ( bitcoind_client, & electrs_client, 6 ) ;
276
+
277
+ node. connect ( external_node_id, external_node_address. clone ( ) , true ) . unwrap ( ) ;
278
+
279
+ // Open the channel
280
+ external_node. open_channel ( node. node_id ( ) , 2_000_000 ) ;
281
+ let funding_txo = expect_channel_pending_event ! ( node, external_node_id) ;
282
+ wait_for_tx ( & electrs_client, funding_txo. txid ) ;
283
+ generate_blocks_and_wait ( bitcoind_client, & electrs_client, 6 ) ;
284
+ node. sync_wallets ( ) . unwrap ( ) ;
285
+ let user_channel_id = expect_channel_ready_event ! ( node, external_node_id) ;
286
+
287
+ // Send a payment to LDK
288
+ let amount_msat = 100_000_000 ;
289
+ receive_payment_from_external_node ( & node, external_node, amount_msat) ;
290
+ node. sync_wallets ( ) . unwrap ( ) ;
291
+
292
+ // Send a payment to the external node
293
+ let invoice_amount_sat = node. list_channels ( ) . first ( ) . unwrap ( ) . next_outbound_htlc_limit_msat ;
294
+ let invoice: Bolt11Invoice =
295
+ send_payment_to_external_node ( & node, external_node, invoice_amount_sat) ;
296
+ check_send_payment_succeeds ( & node, external_node, invoice) ;
297
+
298
+ // Close the channel
299
+ close_channel (
300
+ & bitcoind_client,
301
+ & electrs_client,
302
+ external_node,
303
+ & node,
304
+ funding_txo,
305
+ external_node_id,
306
+ & user_channel_id,
307
+ None ,
308
+ ) ;
309
+
310
+ node. stop ( ) . unwrap ( ) ;
311
+ }
0 commit comments