@@ -258,20 +258,39 @@ fn onchain_spend_receive() {
258
258
let addr_a = node_a. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
259
259
let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
260
260
261
+ let premine_amount_sat = 1_100_000 ;
261
262
premine_and_distribute_funds (
262
263
& bitcoind. client ,
263
264
& electrsd. client ,
264
- vec ! [ addr_b. clone( ) ] ,
265
- Amount :: from_sat ( 100000 ) ,
265
+ vec ! [ addr_a . clone ( ) , addr_b. clone( ) ] ,
266
+ Amount :: from_sat ( premine_amount_sat ) ,
266
267
) ;
267
268
268
269
node_a. sync_wallets ( ) . unwrap ( ) ;
269
270
node_b. sync_wallets ( ) . unwrap ( ) ;
270
- assert_eq ! ( node_b. list_balances( ) . spendable_onchain_balance_sats, 100000 ) ;
271
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, premine_amount_sat) ;
272
+ assert_eq ! ( node_b. list_balances( ) . spendable_onchain_balance_sats, premine_amount_sat) ;
273
+
274
+ let channel_amount_sat = 1_000_000 ;
275
+ let reserve_amount_sat = 25_000 ;
276
+ open_channel ( & node_b, & node_a, channel_amount_sat, true , & electrsd) ;
277
+ generate_blocks_and_wait ( & bitcoind. client , & electrsd. client , 6 ) ;
278
+
279
+ node_a. sync_wallets ( ) . unwrap ( ) ;
280
+ node_b. sync_wallets ( ) . unwrap ( ) ;
281
+ expect_channel_ready_event ! ( node_a, node_b. node_id( ) ) ;
282
+ expect_channel_ready_event ! ( node_b, node_a. node_id( ) ) ;
283
+
284
+ let node_a_balance = premine_amount_sat - reserve_amount_sat;
285
+ let node_b_balance_lower = premine_amount_sat - channel_amount_sat - reserve_amount_sat - 1000 ;
286
+ let node_b_balance_upper = premine_amount_sat - channel_amount_sat - reserve_amount_sat;
287
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, node_a_balance) ;
288
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > node_b_balance_lower) ;
289
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < node_b_balance_upper) ;
271
290
272
291
assert_eq ! (
273
292
Err ( NodeError :: InsufficientFunds ) ,
274
- node_a. onchain_payment( ) . send_to_address( & addr_b, 1000 )
293
+ node_a. onchain_payment( ) . send_to_address( & addr_b, node_a_balance + 1 )
275
294
) ;
276
295
277
296
let txid = node_b. onchain_payment ( ) . send_to_address ( & addr_a, 1000 ) . unwrap ( ) ;
@@ -281,9 +300,28 @@ fn onchain_spend_receive() {
281
300
node_a. sync_wallets ( ) . unwrap ( ) ;
282
301
node_b. sync_wallets ( ) . unwrap ( ) ;
283
302
284
- assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, 1000 ) ;
285
- assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > 98000 ) ;
286
- assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < 100000 ) ;
303
+ let node_a_balance = node_a_balance + 1000 ;
304
+ let node_b_balance_lower = node_b_balance_lower - 1000 ;
305
+ let node_b_balance_upper = node_b_balance_upper - 1000 ;
306
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, node_a_balance) ;
307
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > node_b_balance_lower) ;
308
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < node_b_balance_upper) ;
309
+
310
+ let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
311
+ let txid = node_a. onchain_payment ( ) . send_all_to_address ( & addr_b, true ) . unwrap ( ) ;
312
+ generate_blocks_and_wait ( & bitcoind. client , & electrsd. client , 6 ) ;
313
+ wait_for_tx ( & electrsd. client , txid) ;
314
+
315
+ node_a. sync_wallets ( ) . unwrap ( ) ;
316
+ node_b. sync_wallets ( ) . unwrap ( ) ;
317
+
318
+ let node_b_balance_lower = node_b_balance_lower + node_a_balance;
319
+ let node_b_balance_upper = node_b_balance_upper + node_a_balance;
320
+ let node_a_balance = 0 ;
321
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, node_a_balance) ;
322
+ assert_eq ! ( node_a. list_balances( ) . total_onchain_balance_sats, reserve_amount_sat) ;
323
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > node_b_balance_lower) ;
324
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < node_b_balance_upper) ;
287
325
288
326
let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
289
327
let txid = node_a. onchain_payment ( ) . send_all_to_address ( & addr_b, false ) . unwrap ( ) ;
@@ -293,9 +331,14 @@ fn onchain_spend_receive() {
293
331
node_a. sync_wallets ( ) . unwrap ( ) ;
294
332
node_b. sync_wallets ( ) . unwrap ( ) ;
295
333
296
- assert_eq ! ( node_a. list_balances( ) . total_onchain_balance_sats, 0 ) ;
297
- assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > 99000 ) ;
298
- assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < 100000 ) ;
334
+ let node_b_balance_lower = node_b_balance_lower + reserve_amount_sat;
335
+ let node_b_balance_upper = node_b_balance_upper + reserve_amount_sat;
336
+ let node_a_balance = 0 ;
337
+
338
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, node_a_balance) ;
339
+ assert_eq ! ( node_a. list_balances( ) . total_onchain_balance_sats, node_a_balance) ;
340
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > node_b_balance_lower) ;
341
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < node_b_balance_upper) ;
299
342
}
300
343
301
344
#[ test]
0 commit comments