@@ -2522,6 +2522,7 @@ fn test_justice_tx_htlc_timeout() {
25222522 assert_eq!(tx.input.len(), 1);
25232523 check_spends!(tx, revoked_local_txn[0]);
25242524 }
2525+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[1].input[0].previous_output);
25252526 node_txn.clear();
25262527 }
25272528 check_added_monitors!(nodes[1], 1);
@@ -2746,6 +2747,9 @@ fn claim_htlc_outputs() {
27462747 assert_eq!(node_txn[1].input.len(), 2); // Claims both pinnable, revoked HTLC outputs separately.
27472748 check_spends!(node_txn[0], revoked_local_txn[0]);
27482749 check_spends!(node_txn[1], revoked_local_txn[0]);
2750+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[1].input[0].previous_output);
2751+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[1].input[1].previous_output);
2752+ assert_ne!(node_txn[1].input[0].previous_output, node_txn[1].input[1].previous_output);
27492753
27502754 let mut witness_lens = BTreeSet::new();
27512755 witness_lens.insert(node_txn[0].input[0].witness.last().unwrap().len());
@@ -2917,15 +2921,22 @@ fn test_htlc_on_chain_success() {
29172921 let mut node_txn = $node.tx_broadcaster.txn_broadcasted.lock().unwrap();
29182922 // HTLC timeout claims for non-anchor channels are only aggregated when claimed from the
29192923 // remote commitment transaction.
2920- assert_eq!(node_txn.len(), if $htlc_offered { 2 } else { 1 });
2921- check_spends!(node_txn[0], $commitment_tx);
2922- assert_ne!(node_txn[0].lock_time, LockTime::ZERO);
29232924 if $htlc_offered {
2924- assert_eq!(node_txn[0].input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
2925- assert!(node_txn[0].output[0].script_pubkey.is_p2wsh()); // revokeable output
2925+ assert_eq!(node_txn.len(), 2);
2926+ for tx in node_txn.iter() {
2927+ check_spends!(tx, $commitment_tx);
2928+ assert_ne!(tx.lock_time, LockTime::ZERO);
2929+ assert_eq!(tx.input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
2930+ assert!(tx.output[0].script_pubkey.is_p2wsh()); // revokeable output
2931+ }
2932+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[1].input[0].previous_output);
29262933 } else {
2934+ assert_eq!(node_txn.len(), 1);
2935+ check_spends!(node_txn[0], $commitment_tx);
2936+ assert_ne!(node_txn[0].lock_time, LockTime::ZERO);
29272937 assert_eq!(node_txn[0].input[0].witness.last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
29282938 assert!(node_txn[0].output[0].script_pubkey.is_p2wpkh()); // direct payment
2939+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[0].input[1].previous_output);
29292940 }
29302941 node_txn.clear();
29312942 } }
@@ -2949,6 +2960,7 @@ fn test_htlc_on_chain_success() {
29492960 } else {
29502961 // Certain `ConnectStyle`s will cause RBF bumps of the previous HTLC transaction to be broadcast.
29512962 // FullBlockViaListen
2963+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[1].input[0].previous_output);
29522964 if node_txn[0].input[0].previous_output.txid == node_a_commitment_tx[0].compute_txid() {
29532965 check_spends!(node_txn[1], commitment_tx[0]);
29542966 &node_txn[0]
@@ -4686,6 +4698,7 @@ fn test_static_spendable_outputs_justice_tx_revoked_commitment_tx() {
46864698 assert_eq!(tx.input.len(), 1);
46874699 check_spends!(tx, revoked_local_txn[0]);
46884700 }
4701+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[1].input[0].previous_output);
46894702
46904703 mine_transaction(&nodes[1], &node_txn[0]);
46914704 connect_blocks(&nodes[1], ANTI_REORG_DELAY - 1);
@@ -4743,10 +4756,13 @@ fn test_static_spendable_outputs_justice_tx_revoked_htlc_timeout_tx() {
47434756 assert_eq!(node_txn.len(), 2);
47444757 assert_eq!(node_txn[0].input.len(), 2);
47454758 check_spends!(node_txn[0], revoked_local_txn[0], revoked_htlc_txn[0]);
4759+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[0].input[1].previous_output);
47464760
47474761 assert_eq!(node_txn[1].input.len(), 1);
47484762 check_spends!(node_txn[1], revoked_local_txn[0]);
47494763 assert_eq!(node_txn[1].input[0].previous_output, revoked_htlc_txn[0].input[0].previous_output);
4764+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[1].input[0].previous_output);
4765+ assert_ne!(node_txn[0].input[1].previous_output, node_txn[1].input[0].previous_output);
47504766
47514767 mine_transaction(&nodes[1], &node_txn[0]);
47524768 connect_blocks(&nodes[1], ANTI_REORG_DELAY - 1);
@@ -4806,7 +4822,7 @@ fn test_static_spendable_outputs_justice_tx_revoked_htlc_success_tx() {
48064822 let node_txn = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().clone();
48074823 assert_eq!(node_txn.len(), 2);
48084824
4809- // TThe first transaction generated will become out-of-date as it spends the output already spent
4825+ // The first transaction generated will become out-of-date as it spends the output already spent
48104826 // by revoked_htlc_txn[0]. That's OK, we'll spend with valid transactions next...
48114827 assert_eq!(node_txn[0].input.len(), 1);
48124828 check_spends!(node_txn[0], revoked_local_txn[0]);
@@ -7449,6 +7465,8 @@ fn test_bump_penalty_txn_on_revoked_commitment() {
74497465 $penalty_txids.insert(input.previous_output, tx.compute_txid());
74507466 }
74517467 }
7468+ assert_eq!($fee_rates.len(), 3);
7469+ assert_eq!($penalty_txids.len(), 3);
74527470 node_txn.clear();
74537471 }
74547472 }
@@ -7834,7 +7852,12 @@ fn test_bump_txn_sanitize_tracking_maps() {
78347852 let mut node_txn = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap();
78357853 assert_eq!(node_txn.len(), 2); //ChannelMonitor: justice txn * 2
78367854 check_spends!(node_txn[0], revoked_local_txn[0]);
7855+ assert_eq!(node_txn[0].input.len(), 1);
78377856 check_spends!(node_txn[1], revoked_local_txn[0]);
7857+ assert_eq!(node_txn[1].input.len(), 2);
7858+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[1].input[0].previous_output);
7859+ assert_ne!(node_txn[0].input[0].previous_output, node_txn[1].input[1].previous_output);
7860+ assert_ne!(node_txn[1].input[0].previous_output, node_txn[1].input[1].previous_output);
78387861 let penalty_txn = vec![node_txn[0].clone(), node_txn[1].clone()];
78397862 node_txn.clear();
78407863 penalty_txn
0 commit comments