@@ -258,20 +258,39 @@ fn onchain_spend_receive() {
258258 let addr_a = node_a. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
259259 let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
260260
261+ let premine_amount_sat = 1_100_000 ;
261262 premine_and_distribute_funds (
262263 & bitcoind. client ,
263264 & 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 ) ,
266267 ) ;
267268
268269 node_a. sync_wallets ( ) . unwrap ( ) ;
269270 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) ;
271290
272291 assert_eq ! (
273292 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 )
275294 ) ;
276295
277296 let txid = node_b. onchain_payment ( ) . send_to_address ( & addr_a, 1000 ) . unwrap ( ) ;
@@ -281,9 +300,28 @@ fn onchain_spend_receive() {
281300 node_a. sync_wallets ( ) . unwrap ( ) ;
282301 node_b. sync_wallets ( ) . unwrap ( ) ;
283302
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) ;
287325
288326 let addr_b = node_b. onchain_payment ( ) . new_address ( ) . unwrap ( ) ;
289327 let txid = node_a. onchain_payment ( ) . send_all_to_address ( & addr_b, false ) . unwrap ( ) ;
@@ -293,9 +331,14 @@ fn onchain_spend_receive() {
293331 node_a. sync_wallets ( ) . unwrap ( ) ;
294332 node_b. sync_wallets ( ) . unwrap ( ) ;
295333
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) ;
299342}
300343
301344#[ test]
0 commit comments