@@ -277,32 +277,74 @@ fn onchain_spend_receive() {
277
277
let addr_a = node_a. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
278
278
let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
279
279
280
+ let premine_amount_sat = 1_100_000 ;
280
281
premine_and_distribute_funds (
281
282
& bitcoind. client ,
282
283
& electrsd. client ,
283
- vec ! [ addr_b. clone( ) ] ,
284
- Amount :: from_sat ( 100000 ) ,
284
+ vec ! [ addr_a . clone ( ) , addr_b. clone( ) ] ,
285
+ Amount :: from_sat ( premine_amount_sat ) ,
285
286
) ;
286
287
287
288
node_a. sync_wallets ( ) . unwrap ( ) ;
288
289
node_b. sync_wallets ( ) . unwrap ( ) ;
289
- assert_eq ! ( node_b. list_balances( ) . spendable_onchain_balance_sats, 100000 ) ;
290
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, premine_amount_sat) ;
291
+ assert_eq ! ( node_b. list_balances( ) . spendable_onchain_balance_sats, premine_amount_sat) ;
292
+
293
+ let channel_amount_sat = 1_000_000 ;
294
+ let reserve_amount_sat = 25_000 ;
295
+ open_channel ( & node_b, & node_a, channel_amount_sat, true , & electrsd) ;
296
+ generate_blocks_and_wait ( & bitcoind. client , & electrsd. client , 6 ) ;
297
+
298
+ node_a. sync_wallets ( ) . unwrap ( ) ;
299
+ node_b. sync_wallets ( ) . unwrap ( ) ;
300
+ expect_channel_ready_event ! ( node_a, node_b. node_id( ) ) ;
301
+ expect_channel_ready_event ! ( node_b, node_a. node_id( ) ) ;
302
+
303
+ let onchain_fee_buffer_sat = 1000 ;
304
+ let expected_node_a_balance = premine_amount_sat - reserve_amount_sat;
305
+ let expected_node_b_balance_lower =
306
+ premine_amount_sat - channel_amount_sat - reserve_amount_sat - onchain_fee_buffer_sat;
307
+ let expected_node_b_balance_upper =
308
+ premine_amount_sat - channel_amount_sat - reserve_amount_sat;
309
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, expected_node_a_balance) ;
310
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > expected_node_b_balance_lower) ;
311
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < expected_node_b_balance_upper) ;
290
312
291
313
assert_eq ! (
292
314
Err ( NodeError :: InsufficientFunds ) ,
293
- node_a. onchain_payment( ) . send_to_address( & addr_b, 1000 )
315
+ node_a. onchain_payment( ) . send_to_address( & addr_b, expected_node_a_balance + 1 )
294
316
) ;
295
317
296
- let txid = node_b. onchain_payment ( ) . send_to_address ( & addr_a, 1000 ) . unwrap ( ) ;
318
+ let amount_to_send_sats = 1000 ;
319
+ let txid = node_b. onchain_payment ( ) . send_to_address ( & addr_a, amount_to_send_sats) . unwrap ( ) ;
320
+ generate_blocks_and_wait ( & bitcoind. client , & electrsd. client , 6 ) ;
321
+ wait_for_tx ( & electrsd. client , txid) ;
322
+
323
+ node_a. sync_wallets ( ) . unwrap ( ) ;
324
+ node_b. sync_wallets ( ) . unwrap ( ) ;
325
+
326
+ let expected_node_a_balance = expected_node_a_balance + amount_to_send_sats;
327
+ let expected_node_b_balance_lower = expected_node_b_balance_lower - amount_to_send_sats;
328
+ let expected_node_b_balance_upper = expected_node_b_balance_upper - amount_to_send_sats;
329
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, expected_node_a_balance) ;
330
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > expected_node_b_balance_lower) ;
331
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < expected_node_b_balance_upper) ;
332
+
333
+ let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
334
+ let txid = node_a. onchain_payment ( ) . send_all_to_address ( & addr_b, true ) . unwrap ( ) ;
297
335
generate_blocks_and_wait ( & bitcoind. client , & electrsd. client , 6 ) ;
298
336
wait_for_tx ( & electrsd. client , txid) ;
299
337
300
338
node_a. sync_wallets ( ) . unwrap ( ) ;
301
339
node_b. sync_wallets ( ) . unwrap ( ) ;
302
340
303
- assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, 1000 ) ;
304
- assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > 98000 ) ;
305
- assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < 100000 ) ;
341
+ let expected_node_b_balance_lower = expected_node_b_balance_lower + expected_node_a_balance;
342
+ let expected_node_b_balance_upper = expected_node_b_balance_upper + expected_node_a_balance;
343
+ let expected_node_a_balance = 0 ;
344
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, expected_node_a_balance) ;
345
+ assert_eq ! ( node_a. list_balances( ) . total_onchain_balance_sats, reserve_amount_sat) ;
346
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > expected_node_b_balance_lower) ;
347
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < expected_node_b_balance_upper) ;
306
348
307
349
let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
308
350
let txid = node_a. onchain_payment ( ) . send_all_to_address ( & addr_b, false ) . unwrap ( ) ;
@@ -312,9 +354,14 @@ fn onchain_spend_receive() {
312
354
node_a. sync_wallets ( ) . unwrap ( ) ;
313
355
node_b. sync_wallets ( ) . unwrap ( ) ;
314
356
315
- assert_eq ! ( node_a. list_balances( ) . total_onchain_balance_sats, 0 ) ;
316
- assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > 99000 ) ;
317
- assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < 100000 ) ;
357
+ let expected_node_b_balance_lower = expected_node_b_balance_lower + reserve_amount_sat;
358
+ let expected_node_b_balance_upper = expected_node_b_balance_upper + reserve_amount_sat;
359
+ let expected_node_a_balance = 0 ;
360
+
361
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, expected_node_a_balance) ;
362
+ assert_eq ! ( node_a. list_balances( ) . total_onchain_balance_sats, expected_node_a_balance) ;
363
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > expected_node_b_balance_lower) ;
364
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < expected_node_b_balance_upper) ;
318
365
}
319
366
320
367
#[ test]
0 commit comments