@@ -271,26 +271,45 @@ fn start_stop_reinit() {
271
271
#[ test]
272
272
fn onchain_spend_receive ( ) {
273
273
let ( bitcoind, electrsd) = setup_bitcoind_and_electrsd ( ) ;
274
- let chain_source = TestChainSource :: Esplora ( & electrsd ) ;
274
+ let chain_source = TestChainSource :: BitcoindRpc ( & bitcoind ) ;
275
275
let ( node_a, node_b) = setup_two_nodes ( & chain_source, false , true , false ) ;
276
276
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 node_a_balance = premine_amount_sat - reserve_amount_sat;
304
+ let node_b_balance_lower = premine_amount_sat - channel_amount_sat - reserve_amount_sat - 1000 ;
305
+ let node_b_balance_upper = premine_amount_sat - channel_amount_sat - reserve_amount_sat;
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) ;
290
309
291
310
assert_eq ! (
292
311
Err ( NodeError :: InsufficientFunds ) ,
293
- node_a. onchain_payment( ) . send_to_address( & addr_b, 1000 )
312
+ node_a. onchain_payment( ) . send_to_address( & addr_b, node_a_balance + 1 )
294
313
) ;
295
314
296
315
let txid = node_b. onchain_payment ( ) . send_to_address ( & addr_a, 1000 ) . unwrap ( ) ;
@@ -300,9 +319,28 @@ fn onchain_spend_receive() {
300
319
node_a. sync_wallets ( ) . unwrap ( ) ;
301
320
node_b. sync_wallets ( ) . unwrap ( ) ;
302
321
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 ) ;
322
+ let node_a_balance = node_a_balance + 1000 ;
323
+ let node_b_balance_lower = node_b_balance_lower - 1000 ;
324
+ let node_b_balance_upper = node_b_balance_upper - 1000 ;
325
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, node_a_balance) ;
326
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > node_b_balance_lower) ;
327
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < node_b_balance_upper) ;
328
+
329
+ let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
330
+ let txid = node_a. onchain_payment ( ) . send_all_to_address ( & addr_b, true ) . unwrap ( ) ;
331
+ generate_blocks_and_wait ( & bitcoind. client , & electrsd. client , 6 ) ;
332
+ wait_for_tx ( & electrsd. client , txid) ;
333
+
334
+ node_a. sync_wallets ( ) . unwrap ( ) ;
335
+ node_b. sync_wallets ( ) . unwrap ( ) ;
336
+
337
+ let node_b_balance_lower = node_b_balance_lower + node_a_balance;
338
+ let node_b_balance_upper = node_b_balance_upper + node_a_balance;
339
+ let node_a_balance = 0 ;
340
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, node_a_balance) ;
341
+ assert_eq ! ( node_a. list_balances( ) . total_onchain_balance_sats, reserve_amount_sat) ;
342
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > node_b_balance_lower) ;
343
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < node_b_balance_upper) ;
306
344
307
345
let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
308
346
let txid = node_a. onchain_payment ( ) . send_all_to_address ( & addr_b, false ) . unwrap ( ) ;
@@ -312,9 +350,14 @@ fn onchain_spend_receive() {
312
350
node_a. sync_wallets ( ) . unwrap ( ) ;
313
351
node_b. sync_wallets ( ) . unwrap ( ) ;
314
352
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 ) ;
353
+ let node_b_balance_lower = node_b_balance_lower + reserve_amount_sat;
354
+ let node_b_balance_upper = node_b_balance_upper + reserve_amount_sat;
355
+ let node_a_balance = 0 ;
356
+
357
+ assert_eq ! ( node_a. list_balances( ) . spendable_onchain_balance_sats, node_a_balance) ;
358
+ assert_eq ! ( node_a. list_balances( ) . total_onchain_balance_sats, node_a_balance) ;
359
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats > node_b_balance_lower) ;
360
+ assert ! ( node_b. list_balances( ) . spendable_onchain_balance_sats < node_b_balance_upper) ;
318
361
}
319
362
320
363
#[ test]
0 commit comments