@@ -271,26 +271,45 @@ fn start_stop_reinit() {
271271#[ test]
272272fn onchain_spend_receive ( ) {
273273 let ( bitcoind, electrsd) = setup_bitcoind_and_electrsd ( ) ;
274- let chain_source = TestChainSource :: Esplora ( & electrsd ) ;
274+ let chain_source = TestChainSource :: BitcoindRpc ( & bitcoind ) ;
275275 let ( node_a, node_b) = setup_two_nodes ( & chain_source, false , true , false ) ;
276276
277277 let addr_a = node_a. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
278278 let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
279279
280+ let premine_amount_sat = 1_100_000 ;
280281 premine_and_distribute_funds (
281282 & bitcoind. client ,
282283 & 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 ) ,
285286 ) ;
286287
287288 node_a. sync_wallets ( ) . unwrap ( ) ;
288289 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) ;
290309
291310 assert_eq ! (
292311 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 )
294313 ) ;
295314
296315 let txid = node_b. onchain_payment ( ) . send_to_address ( & addr_a, 1000 ) . unwrap ( ) ;
@@ -300,9 +319,28 @@ fn onchain_spend_receive() {
300319 node_a. sync_wallets ( ) . unwrap ( ) ;
301320 node_b. sync_wallets ( ) . unwrap ( ) ;
302321
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) ;
306344
307345 let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
308346 let txid = node_a. onchain_payment ( ) . send_all_to_address ( & addr_b, false ) . unwrap ( ) ;
@@ -312,9 +350,14 @@ fn onchain_spend_receive() {
312350 node_a. sync_wallets ( ) . unwrap ( ) ;
313351 node_b. sync_wallets ( ) . unwrap ( ) ;
314352
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) ;
318361}
319362
320363#[ test]
0 commit comments