Skip to content

Commit bfd9af3

Browse files
Antoine RiardTheBlueMatt
authored andcommitted
Add const ACCEPTED_HTLC_SCRIPT_WEIGHT and OFFERED_HTLC_SCRIPT_WEIGHT to
ease readability Conditionnal compilation for weight of second one to handle test special cltv values
1 parent 960c199 commit bfd9af3

File tree

3 files changed

+23
-15
lines changed

3 files changed

+23
-15
lines changed

src/ln/channel.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,12 @@ const B_OUTPUT_PLUS_SPENDING_INPUT_WEIGHT: u64 = 104; // prevout: 40, nSequence:
364364
/// it's 2^24.
365365
pub const MAX_FUNDING_SATOSHIS: u64 = (1 << 24);
366366

367+
#[cfg(test)]
368+
pub const ACCEPTED_HTLC_SCRIPT_WEIGHT: usize = 138; //Here we have a diff due to HTLC CLTV expiry being < 2^15 in test
369+
#[cfg(not(test))]
370+
pub const ACCEPTED_HTLC_SCRIPT_WEIGHT: usize = 139;
371+
pub const OFFERED_HTLC_SCRIPT_WEIGHT: usize = 133;
372+
367373
/// Used to return a simple Error back to ChannelManager. Will get converted to a
368374
/// msgs::ErrorAction::SendErrorMessage or msgs::ErrorAction::IgnoreError as appropriate with our
369375
/// channel_id in ChannelManager.

src/ln/channelmanager.rs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3355,6 +3355,7 @@ mod tests {
33553355
use ln::channel::{COMMITMENT_TX_BASE_WEIGHT, COMMITMENT_TX_WEIGHT_PER_HTLC};
33563356
use ln::channelmanager::{ChannelManager,ChannelManagerReadArgs,OnionKeys,PaymentFailReason,RAACommitmentOrder};
33573357
use ln::channelmonitor::{ChannelMonitor, ChannelMonitorUpdateErr, CLTV_CLAIM_BUFFER, HTLC_FAIL_TIMEOUT_BLOCKS, ManyChannelMonitor};
3358+
use ln::channel::{ACCEPTED_HTLC_SCRIPT_WEIGHT, OFFERED_HTLC_SCRIPT_WEIGHT};
33583359
use ln::router::{Route, RouteHop, Router};
33593360
use ln::msgs;
33603361
use ln::msgs::{ChannelMessageHandler,RoutingMessageHandler};
@@ -5887,7 +5888,7 @@ mod tests {
58875888
assert_eq!(revoked_local_txn[0].output.len(), 2); // Only HTLC and output back to 0 are present
58885889
assert_eq!(revoked_local_txn[1].input.len(), 1);
58895890
assert_eq!(revoked_local_txn[1].input[0].previous_output.txid, revoked_local_txn[0].txid());
5890-
assert_eq!(revoked_local_txn[1].input[0].witness.last().unwrap().len(), 133); // HTLC-Timeout
5891+
assert_eq!(revoked_local_txn[1].input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT); // HTLC-Timeout
58915892
// Revoke the old state
58925893
claim_payment(&nodes[0], &vec!(&nodes[1])[..], payment_preimage_3);
58935894

@@ -6006,7 +6007,7 @@ mod tests {
60066007
assert_eq!(revoked_local_txn[0].input[0].previous_output.txid, chan_1.3.txid());
60076008
assert_eq!(revoked_local_txn[1].input.len(), 1);
60086009
assert_eq!(revoked_local_txn[1].input[0].previous_output.txid, revoked_local_txn[0].txid());
6009-
assert_eq!(revoked_local_txn[1].input[0].witness.last().unwrap().len(), 133); // HTLC-Timeout
6010+
assert_eq!(revoked_local_txn[1].input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT); // HTLC-Timeout
60106011
check_spends!(revoked_local_txn[1], revoked_local_txn[0].clone());
60116012

60126013
//Revoke the old state
@@ -6040,16 +6041,16 @@ mod tests {
60406041
witness_lens.insert(node_txn[0].input[2].witness.last().unwrap().len());
60416042
assert_eq!(witness_lens.len(), 3);
60426043
assert_eq!(*witness_lens.iter().skip(0).next().unwrap(), 77); // revoked to_local
6043-
assert_eq!(*witness_lens.iter().skip(1).next().unwrap(), 133); // revoked offered HTLC
6044-
assert_eq!(*witness_lens.iter().skip(2).next().unwrap(), 138); // revoked received HTLC
6044+
assert_eq!(*witness_lens.iter().skip(1).next().unwrap(), OFFERED_HTLC_SCRIPT_WEIGHT); // revoked offered HTLC
6045+
assert_eq!(*witness_lens.iter().skip(2).next().unwrap(), ACCEPTED_HTLC_SCRIPT_WEIGHT); // revoked received HTLC
60456046

60466047
// Next nodes[1] broadcasts its current local tx state:
60476048
assert_eq!(node_txn[1].input.len(), 1);
60486049
assert_eq!(node_txn[1].input[0].previous_output.txid, chan_1.3.txid()); //Spending funding tx unique txouput, tx broadcasted by ChannelManager
60496050

60506051
assert_eq!(node_txn[2].input.len(), 1);
60516052
let witness_script = node_txn[2].clone().input[0].witness.pop().unwrap();
6052-
assert_eq!(witness_script.len(), 133); //Spending an offered htlc output
6053+
assert_eq!(witness_script.len(), OFFERED_HTLC_SCRIPT_WEIGHT); //Spending an offered htlc output
60536054
assert_eq!(node_txn[2].input[0].previous_output.txid, node_txn[1].txid());
60546055
assert_ne!(node_txn[2].input[0].previous_output.txid, node_txn[0].input[0].previous_output.txid);
60556056
assert_ne!(node_txn[2].input[0].previous_output.txid, node_txn[0].input[1].previous_output.txid);
@@ -6120,15 +6121,15 @@ mod tests {
61206121
witness_lens.insert(node_txn[2].input[0].witness.last().unwrap().len());
61216122
assert_eq!(witness_lens.len(), 3);
61226123
assert_eq!(*witness_lens.iter().skip(0).next().unwrap(), 77); // revoked to_local
6123-
assert_eq!(*witness_lens.iter().skip(1).next().unwrap(), 133); // revoked offered HTLC
6124-
assert_eq!(*witness_lens.iter().skip(2).next().unwrap(), 138); // revoked received HTLC
6124+
assert_eq!(*witness_lens.iter().skip(1).next().unwrap(), OFFERED_HTLC_SCRIPT_WEIGHT); // revoked offered HTLC
6125+
assert_eq!(*witness_lens.iter().skip(2).next().unwrap(), ACCEPTED_HTLC_SCRIPT_WEIGHT); // revoked received HTLC
61256126

61266127
assert_eq!(node_txn[3].input.len(), 1);
61276128
check_spends!(node_txn[3], chan_1.3.clone());
61286129

61296130
assert_eq!(node_txn[4].input.len(), 1);
61306131
let witness_script = node_txn[4].input[0].witness.last().unwrap();
6131-
assert_eq!(witness_script.len(), 133); //Spending an offered htlc output
6132+
assert_eq!(witness_script.len(), OFFERED_HTLC_SCRIPT_WEIGHT); //Spending an offered htlc output
61326133
assert_eq!(node_txn[4].input[0].previous_output.txid, node_txn[3].txid());
61336134
assert_ne!(node_txn[4].input[0].previous_output.txid, node_txn[0].input[0].previous_output.txid);
61346135
assert_ne!(node_txn[4].input[0].previous_output.txid, node_txn[1].input[0].previous_output.txid);
@@ -8408,7 +8409,7 @@ mod tests {
84088409
let node_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap(); // ChannelManager : 1 (local commitment tx), ChannelMonitor: 2 (1 preimage tx) * 2 (block-rescan)
84098410
check_spends!(node_txn[0], commitment_tx[0].clone());
84108411
assert_eq!(node_txn[0], node_txn[2]);
8411-
assert_eq!(node_txn[0].input[0].witness.last().unwrap().len(), 133);
8412+
assert_eq!(node_txn[0].input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
84128413
check_spends!(node_txn[1], chan_1.3.clone());
84138414

84148415
let spend_txn = check_spendable_outputs!(nodes[1], 1); // , 0, 0, 1, 1);
@@ -8476,7 +8477,7 @@ mod tests {
84768477
assert_eq!(revoked_htlc_txn.len(), 3);
84778478
assert_eq!(revoked_htlc_txn[0], revoked_htlc_txn[2]);
84788479
assert_eq!(revoked_htlc_txn[0].input.len(), 1);
8479-
assert_eq!(revoked_htlc_txn[0].input[0].witness.last().unwrap().len(), 133);
8480+
assert_eq!(revoked_htlc_txn[0].input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
84808481
check_spends!(revoked_htlc_txn[0], revoked_local_txn[0].clone());
84818482
check_spends!(revoked_htlc_txn[1], chan_1.3.clone());
84828483

@@ -8528,7 +8529,7 @@ mod tests {
85288529
assert_eq!(revoked_htlc_txn.len(), 3);
85298530
assert_eq!(revoked_htlc_txn[0], revoked_htlc_txn[2]);
85308531
assert_eq!(revoked_htlc_txn[0].input.len(), 1);
8531-
assert_eq!(revoked_htlc_txn[0].input[0].witness.last().unwrap().len(), 138);
8532+
assert_eq!(revoked_htlc_txn[0].input[0].witness.last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
85328533
check_spends!(revoked_htlc_txn[0], revoked_local_txn[0].clone());
85338534

85348535
// A will generate justice tx from B's revoked commitment/HTLC tx
@@ -8582,7 +8583,7 @@ mod tests {
85828583
}
85838584
let node_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap();
85848585
assert_eq!(node_txn[0].input.len(), 1);
8585-
assert_eq!(node_txn[0].input[0].witness.last().unwrap().len(), 138);
8586+
assert_eq!(node_txn[0].input[0].witness.last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
85868587
check_spends!(node_txn[0], local_txn[0].clone());
85878588

85888589
// Verify that B is able to spend its own HTLC-Success tx thanks to spendable output event given back by its ChannelMonitor
@@ -8614,7 +8615,7 @@ mod tests {
86148615
}
86158616
let node_txn = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap();
86168617
assert_eq!(node_txn[0].input.len(), 1);
8617-
assert_eq!(node_txn[0].input[0].witness.last().unwrap().len(), 133);
8618+
assert_eq!(node_txn[0].input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
86188619
check_spends!(node_txn[0], local_txn[0].clone());
86198620

86208621
// Verify that A is able to spend its own HTLC-Timeout tx thanks to spendable output event given back by its ChannelMonitor

src/ln/channelmonitor.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ use ln::msgs::DecodeError;
3030
use ln::chan_utils;
3131
use ln::chan_utils::HTLCOutputInCommitment;
3232
use ln::channelmanager::HTLCSource;
33+
use ln::channel::{ACCEPTED_HTLC_SCRIPT_WEIGHT, OFFERED_HTLC_SCRIPT_WEIGHT};
3334
use chain::chaininterface::{ChainListener, ChainWatchInterface, BroadcasterInterface};
3435
use chain::transaction::OutPoint;
3536
use chain::keysinterface::SpendableOutputDescriptor;
@@ -1812,10 +1813,10 @@ impl ChannelMonitor {
18121813
// to broadcast solving backward
18131814
if let Some((source, payment_hash)) = payment_data {
18141815
let mut payment_preimage = [0; 32];
1815-
if input.witness.len() == 5 && input.witness[4].len() == 138 {
1816+
if input.witness.len() == 5 && input.witness[4].len() == ACCEPTED_HTLC_SCRIPT_WEIGHT {
18161817
payment_preimage.copy_from_slice(&tx.input[0].witness[3]);
18171818
htlc_updated.push((source, Some(payment_preimage), payment_hash));
1818-
} else if input.witness.len() == 3 && input.witness[2].len() == 133 {
1819+
} else if input.witness.len() == 3 && input.witness[2].len() == OFFERED_HTLC_SCRIPT_WEIGHT {
18191820
payment_preimage.copy_from_slice(&tx.input[0].witness[1]);
18201821
htlc_updated.push((source, Some(payment_preimage), payment_hash));
18211822
} else {

0 commit comments

Comments
 (0)