@@ -277,32 +277,74 @@ fn onchain_spend_receive() {
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 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) ;
290312
291313 assert_eq ! (
292314 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 )
294316 ) ;
295317
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 ( ) ;
297335 generate_blocks_and_wait ( & bitcoind. client , & electrsd. client , 6 ) ;
298336 wait_for_tx ( & electrsd. client , txid) ;
299337
300338 node_a. sync_wallets ( ) . unwrap ( ) ;
301339 node_b. sync_wallets ( ) . unwrap ( ) ;
302340
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) ;
306348
307349 let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
308350 let txid = node_a. onchain_payment ( ) . send_all_to_address ( & addr_b, false ) . unwrap ( ) ;
@@ -312,9 +354,14 @@ fn onchain_spend_receive() {
312354 node_a. sync_wallets ( ) . unwrap ( ) ;
313355 node_b. sync_wallets ( ) . unwrap ( ) ;
314356
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) ;
318365}
319366
320367#[ test]
0 commit comments