@@ -7781,4 +7781,36 @@ mod tests {
7781
7781
let spend_tx = check_static_output ! ( events, nodes, 0 , 0 , 1 , 1 ) ;
7782
7782
check_spends ! ( spend_tx, node_txn[ 0 ] . clone( ) ) ;
7783
7783
}
7784
+
7785
+ #[ test]
7786
+ fn test_static_spendable_outputs_justice_tx_revoked_commitment_tx ( ) {
7787
+ let nodes = create_network ( 2 ) ;
7788
+
7789
+ // Create some initial channels
7790
+ let chan_1 = create_announced_chan_between_nodes ( & nodes, 0 , 1 ) ;
7791
+
7792
+ let payment_preimage = route_payment ( & nodes[ 0 ] , & vec ! ( & nodes[ 1 ] ) [ ..] , 3000000 ) . 0 ;
7793
+ let revoked_local_txn = nodes[ 0 ] . node . channel_state . lock ( ) . unwrap ( ) . by_id . iter ( ) . next ( ) . unwrap ( ) . 1 . last_local_commitment_txn . clone ( ) ;
7794
+ assert_eq ! ( revoked_local_txn[ 0 ] . input. len( ) , 1 ) ;
7795
+ assert_eq ! ( revoked_local_txn[ 0 ] . input[ 0 ] . previous_output. txid, chan_1. 3 . txid( ) ) ;
7796
+
7797
+ claim_payment ( & nodes[ 0 ] , & vec ! ( & nodes[ 1 ] ) [ ..] , payment_preimage) ;
7798
+
7799
+ let header = BlockHeader { version : 0x20000000 , prev_blockhash : Default :: default ( ) , merkle_root : Default :: default ( ) , time : 42 , bits : 42 , nonce : 42 } ;
7800
+ nodes[ 1 ] . chain_monitor . block_connected_with_filtering ( & Block { header, txdata : vec ! [ revoked_local_txn[ 0 ] . clone( ) ] } , 1 ) ;
7801
+ let events = nodes[ 1 ] . node . get_and_clear_pending_msg_events ( ) ;
7802
+ match events[ 0 ] {
7803
+ MessageSendEvent :: BroadcastChannelUpdate { .. } => { } ,
7804
+ _ => panic ! ( "Unexpected event" ) ,
7805
+ }
7806
+ let mut node_txn = nodes[ 1 ] . tx_broadcaster . txn_broadcasted . lock ( ) . unwrap ( ) ;
7807
+ assert_eq ! ( node_txn. len( ) , 3 ) ;
7808
+ assert_eq ! ( node_txn. pop( ) . unwrap( ) , node_txn[ 0 ] ) ;
7809
+ assert_eq ! ( node_txn[ 0 ] . input. len( ) , 2 ) ;
7810
+ check_spends ! ( node_txn[ 0 ] , revoked_local_txn[ 0 ] . clone( ) ) ;
7811
+
7812
+ let events = nodes[ 1 ] . chan_monitor . simple_monitor . get_and_clear_pending_events ( ) ;
7813
+ let spend_tx = check_static_output ! ( events, nodes, 0 , 0 , 1 , 1 ) ;
7814
+ check_spends ! ( spend_tx, node_txn[ 0 ] . clone( ) ) ;
7815
+ }
7784
7816
}
0 commit comments