Skip to content

Commit 98ede1c

Browse files
committed
Fix test_bump_penalty_txn_on_remote_commitment
1 parent 65c25ed commit 98ede1c

File tree

1 file changed

+32
-24
lines changed

1 file changed

+32
-24
lines changed

lightning/src/ln/functional_tests.rs

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7758,22 +7758,29 @@ fn test_bump_penalty_txn_on_remote_commitment() {
77587758
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
77597759
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
77607760

7761-
let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 59000000);
7762-
let (payment_preimage, payment_hash, ..) = route_payment(&nodes[0], &[&nodes[1]], 3_000_000);
7763-
route_payment(&nodes[1], &vec!(&nodes[0])[..], 3000000).0;
7764-
7765-
// Remote commitment txn with 4 outputs : to_local, to_remote, 1 outgoing HTLC, 1 incoming HTLC
7766-
let remote_txn = get_local_commitment_txn!(nodes[0], chan.2);
7767-
assert_eq!(remote_txn[0].output.len(), 4);
7768-
assert_eq!(remote_txn[0].input.len(), 1);
7769-
assert_eq!(remote_txn[0].input[0].previous_output.txid, chan.3.compute_txid());
7770-
7771-
// Claim a HTLC without revocation (provide B monitor with preimage)
7772-
nodes[1].node.claim_funds(payment_preimage);
7773-
expect_payment_claimed!(nodes[1], payment_hash, 3_000_000);
7774-
mine_transaction(&nodes[1], &remote_txn[0]);
7775-
check_added_monitors!(nodes[1], 2);
7776-
connect_blocks(&nodes[1], TEST_FINAL_CLTV); // Confirm blocks until the HTLC expires
7761+
let remote_txn = {
7762+
let htlc_value_a_msats = 847_000;
7763+
let htlc_value_b_msats = 546_000;
7764+
7765+
let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 59000000);
7766+
let (payment_preimage, payment_hash, ..) = route_payment(&nodes[0], &[&nodes[1]], htlc_value_a_msats);
7767+
route_payment(&nodes[1], &vec!(&nodes[0])[..], htlc_value_b_msats).0;
7768+
7769+
// Remote commitment txn with 4 outputs : to_local, to_remote, 1 outgoing HTLC, 1 incoming HTLC
7770+
let remote_txn = get_local_commitment_txn!(nodes[0], chan.2);
7771+
assert_eq!(remote_txn[0].output.len(), 4);
7772+
assert_eq!(remote_txn[0].input.len(), 1);
7773+
assert_eq!(remote_txn[0].input[0].previous_output.txid, chan.3.compute_txid());
7774+
7775+
// Claim a HTLC without revocation (provide B monitor with preimage)
7776+
nodes[1].node.claim_funds(payment_preimage);
7777+
expect_payment_claimed!(nodes[1], payment_hash, htlc_value_a_msats);
7778+
mine_transaction(&nodes[1], &remote_txn[0]);
7779+
check_added_monitors!(nodes[1], 2);
7780+
connect_blocks(&nodes[1], TEST_FINAL_CLTV); // Confirm blocks until the HTLC expires
7781+
7782+
remote_txn
7783+
};
77777784

77787785
// One or more claim tx should have been broadcast, check it
77797786
let timeout;
@@ -7783,9 +7790,11 @@ fn test_bump_penalty_txn_on_remote_commitment() {
77837790
let feerate_preimage;
77847791
{
77857792
let mut node_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap();
7786-
// 3 transactions including:
7793+
// 3-6 transactions including:
77877794
// preimage and timeout sweeps from remote commitment + preimage sweep bump
7788-
assert_eq!(node_txn.len(), 3);
7795+
// plus, depending on the block connection style, two further bumps
7796+
assert!(node_txn.len() >= 3);
7797+
assert!(node_txn.len() <= 6);
77897798
assert_eq!(node_txn[0].input.len(), 1);
77907799
assert_eq!(node_txn[1].input.len(), 1);
77917800
assert_eq!(node_txn[2].input.len(), 1);
@@ -7798,11 +7807,9 @@ fn test_bump_penalty_txn_on_remote_commitment() {
77987807
let fee = remote_txn[0].output[index as usize].value.to_sat() - node_txn[0].output[0].value.to_sat();
77997808
feerate_preimage = fee * 1000 / node_txn[0].weight().to_wu();
78007809

7801-
let (preimage_bump_tx, timeout_tx) = if node_txn[2].input[0].previous_output == node_txn[0].input[0].previous_output {
7802-
(node_txn[2].clone(), node_txn[1].clone())
7803-
} else {
7804-
(node_txn[1].clone(), node_txn[2].clone())
7805-
};
7810+
let preimage_tx = &node_txn[0];
7811+
let timeout_tx = node_txn.iter().skip(1).find(|t| t.input[0].previous_output != preimage_tx.input[0].previous_output).unwrap().clone();
7812+
let preimage_bump_tx = node_txn.iter().skip(1).find(|t| t.input[0].previous_output == preimage_tx.input[0].previous_output).unwrap().clone();
78067813

78077814
preimage_bump = preimage_bump_tx;
78087815
check_spends!(preimage_bump, remote_txn[0]);
@@ -7822,7 +7829,8 @@ fn test_bump_penalty_txn_on_remote_commitment() {
78227829
connect_blocks(&nodes[1], crate::chain::package::LOW_FREQUENCY_BUMP_INTERVAL);
78237830
{
78247831
let mut node_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap();
7825-
assert_eq!(node_txn.len(), 1);
7832+
assert!(node_txn.len() >= 1);
7833+
assert!(node_txn.len() <= 2);
78267834
assert_eq!(node_txn[0].input.len(), 1);
78277835
assert_eq!(preimage_bump.input.len(), 1);
78287836
check_spends!(node_txn[0], remote_txn[0]);

0 commit comments

Comments
 (0)