Skip to content

Commit 07895d0

Browse files
author
Antoine Riard
committed
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 4957250 commit 07895d0

File tree

3 files changed

+33
-25
lines changed

3 files changed

+33
-25
lines changed

src/ln/channel.rs

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

377+
#[cfg(test)]
378+
pub const ACCEPTED_HTLC_SCRIPT_WEIGHT: usize = 138; //Here we have a diff due to HTLC CLTV expiry being < 2^15 in test
379+
#[cfg(not(test))]
380+
pub const ACCEPTED_HTLC_SCRIPT_WEIGHT: usize = 139;
381+
pub const OFFERED_HTLC_SCRIPT_WEIGHT: usize = 133;
382+
377383
/// Used to return a simple Error back to ChannelManager. Will get converted to a
378384
/// msgs::ErrorAction::SendErrorMessage or msgs::ErrorAction::IgnoreError as appropriate with our
379385
/// channel_id in ChannelManager.

src/ln/channelmanager.rs

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2393,6 +2393,7 @@ mod tests {
23932393
use ln::router::{Route, RouteHop, Router};
23942394
use ln::msgs;
23952395
use ln::msgs::{ChannelMessageHandler,RoutingMessageHandler};
2396+
use ln::channel::{ACCEPTED_HTLC_SCRIPT_WEIGHT, OFFERED_HTLC_SCRIPT_WEIGHT};
23962397
use util::test_utils;
23972398
use util::events::{Event, EventsProvider};
23982399
use util::errors::APIError;
@@ -4049,7 +4050,7 @@ mod tests {
40494050
assert_eq!(revoked_local_txn[0].output.len(), 2); // Only HTLC and output back to 0 are present
40504051
assert_eq!(revoked_local_txn[1].input.len(), 1);
40514052
assert_eq!(revoked_local_txn[1].input[0].previous_output.txid, revoked_local_txn[0].txid());
4052-
assert_eq!(revoked_local_txn[1].input[0].witness.last().unwrap().len(), 133); // HTLC-Timeout
4053+
assert_eq!(revoked_local_txn[1].input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT); // HTLC-Timeout
40534054
// Revoke the old state
40544055
claim_payment(&nodes[0], &vec!(&nodes[1])[..], payment_preimage_3);
40554056

@@ -4129,7 +4130,7 @@ mod tests {
41294130
assert_eq!(revoked_local_txn[0].input[0].previous_output.txid, chan_1.3.txid());
41304131
assert_eq!(revoked_local_txn[1].input.len(), 1);
41314132
assert_eq!(revoked_local_txn[1].input[0].previous_output.txid, revoked_local_txn[0].txid());
4132-
assert_eq!(revoked_local_txn[1].input[0].witness.last().unwrap().len(), 133); // HTLC-Timeout
4133+
assert_eq!(revoked_local_txn[1].input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT); // HTLC-Timeout
41334134
check_spends!(revoked_local_txn[1], revoked_local_txn[0].clone());
41344135

41354136
//Revoke the old state
@@ -4155,16 +4156,16 @@ mod tests {
41554156
witness_lens.insert(node_txn[0].input[2].witness.last().unwrap().len());
41564157
assert_eq!(witness_lens.len(), 3);
41574158
assert_eq!(*witness_lens.iter().skip(0).next().unwrap(), 77); // revoked to_local
4158-
assert_eq!(*witness_lens.iter().skip(1).next().unwrap(), 133); // revoked offered HTLC
4159-
assert_eq!(*witness_lens.iter().skip(2).next().unwrap(), 138); // revoked received HTLC
4159+
assert_eq!(*witness_lens.iter().skip(1).next().unwrap(), OFFERED_HTLC_SCRIPT_WEIGHT); // revoked offered HTLC
4160+
assert_eq!(*witness_lens.iter().skip(2).next().unwrap(), ACCEPTED_HTLC_SCRIPT_WEIGHT); // revoked received HTLC
41604161

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

41654166
assert_eq!(node_txn[2].input.len(), 1);
41664167
let witness_script = node_txn[2].clone().input[0].witness.pop().unwrap();
4167-
assert_eq!(witness_script.len(), 133); //Spending an offered htlc output
4168+
assert_eq!(witness_script.len(), OFFERED_HTLC_SCRIPT_WEIGHT); //Spending an offered htlc output
41684169
assert_eq!(node_txn[2].input[0].previous_output.txid, node_txn[1].txid());
41694170
assert_ne!(node_txn[2].input[0].previous_output.txid, node_txn[0].input[0].previous_output.txid);
41704171
assert_ne!(node_txn[2].input[0].previous_output.txid, node_txn[0].input[1].previous_output.txid);
@@ -4227,15 +4228,15 @@ mod tests {
42274228
witness_lens.insert(node_txn[2].input[0].witness.last().unwrap().len());
42284229
assert_eq!(witness_lens.len(), 3);
42294230
assert_eq!(*witness_lens.iter().skip(0).next().unwrap(), 77); // revoked to_local
4230-
assert_eq!(*witness_lens.iter().skip(1).next().unwrap(), 133); // revoked offered HTLC
4231-
assert_eq!(*witness_lens.iter().skip(2).next().unwrap(), 138); // revoked received HTLC
4231+
assert_eq!(*witness_lens.iter().skip(1).next().unwrap(), OFFERED_HTLC_SCRIPT_WEIGHT); // revoked offered HTLC
4232+
assert_eq!(*witness_lens.iter().skip(2).next().unwrap(), ACCEPTED_HTLC_SCRIPT_WEIGHT); // revoked received HTLC
42324233

42334234
assert_eq!(node_txn[3].input.len(), 1);
42344235
check_spends!(node_txn[3], chan_1.3.clone());
42354236

42364237
assert_eq!(node_txn[4].input.len(), 1);
42374238
let witness_script = node_txn[4].input[0].witness.last().unwrap();
4238-
assert_eq!(witness_script.len(), 133); //Spending an offered htlc output
4239+
assert_eq!(witness_script.len(), OFFERED_HTLC_SCRIPT_WEIGHT); //Spending an offered htlc output
42394240
assert_eq!(node_txn[4].input[0].previous_output.txid, node_txn[3].txid());
42404241
assert_ne!(node_txn[4].input[0].previous_output.txid, node_txn[0].input[0].previous_output.txid);
42414242
assert_ne!(node_txn[4].input[0].previous_output.txid, node_txn[1].input[0].previous_output.txid);
@@ -4300,11 +4301,11 @@ mod tests {
43004301
let node_txn = nodes[2].tx_broadcaster.txn_broadcasted.lock().unwrap().clone(); // ChannelManager : 2 (commitment tx, HTLC-Success tx), ChannelMonitor : 1 (HTLC-Success tx)
43014302
assert_eq!(node_txn.len(), 3);
43024303
check_spends!(node_txn[0], commitment_tx[0].clone());
4303-
assert_eq!(node_txn[0].input[0].witness.clone().last().unwrap().len(), 138);
4304+
assert_eq!(node_txn[0].input[0].witness.clone().last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
43044305
check_spends!(node_txn[1], chan_2.3.clone());
43054306
check_spends!(node_txn[2], node_txn[1].clone());
43064307
assert_eq!(node_txn[1].input[0].witness.clone().last().unwrap().len(), 71);
4307-
assert_eq!(node_txn[2].input[0].witness.clone().last().unwrap().len(), 138);
4308+
assert_eq!(node_txn[2].input[0].witness.clone().last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
43084309

43094310
// Verify that B's ChannelManager is able to extract preimage from HTLC Success tx and pass it backward
43104311
nodes[1].chain_monitor.block_connected_with_filtering(&Block { header, txdata: node_txn}, 1);
@@ -4335,12 +4336,12 @@ mod tests {
43354336
assert_eq!(node_txn[0], node_txn[3]);
43364337
check_spends!(node_txn[0], commitment_tx[0].clone());
43374338
check_spends!(node_txn[3], commitment_tx[0].clone());
4338-
assert_eq!(node_txn[0].input[0].witness.clone().last().unwrap().len(), 138);
4339-
assert_eq!(node_txn[3].input[0].witness.clone().last().unwrap().len(), 138);
4339+
assert_eq!(node_txn[0].input[0].witness.clone().last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
4340+
assert_eq!(node_txn[3].input[0].witness.clone().last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
43404341
check_spends!(node_txn[1], chan_2.3.clone());
43414342
check_spends!(node_txn[2], node_txn[1].clone());
43424343
assert_eq!(node_txn[1].input[0].witness.clone().last().unwrap().len(), 71);
4343-
assert_eq!(node_txn[2].input[0].witness.clone().last().unwrap().len(), 133);
4344+
assert_eq!(node_txn[2].input[0].witness.clone().last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
43444345
node_txn.clear()
43454346
}
43464347

@@ -4359,9 +4360,9 @@ mod tests {
43594360
assert_eq!(node_txn.len(), 3);
43604361
assert_eq!(node_txn[0], node_txn[2]);
43614362
check_spends!(node_txn[0], commitment_tx[0].clone());
4362-
assert_eq!(node_txn[0].input[0].witness.clone().last().unwrap().len(), 133);
4363+
assert_eq!(node_txn[0].input[0].witness.clone().last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
43634364
check_spends!(node_txn[2], commitment_tx[0].clone());
4364-
assert_eq!(node_txn[2].input[0].witness.clone().last().unwrap().len(), 133);
4365+
assert_eq!(node_txn[2].input[0].witness.clone().last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
43654366
check_spends!(node_txn[1], chan_1.3.clone());
43664367
assert_eq!(node_txn[1].input[0].witness.clone().last().unwrap().len(), 71);
43674368
let commitment_tx = node_txn[1].clone();
@@ -4379,12 +4380,12 @@ mod tests {
43794380
assert_eq!(node_txn[0], node_txn[3]);
43804381
check_spends!(node_txn[0], commitment_tx.clone());
43814382
check_spends!(node_txn[3], commitment_tx.clone());
4382-
assert_eq!(node_txn[0].input[0].witness.clone().last().unwrap().len(), 138);
4383-
assert_eq!(node_txn[3].input[0].witness.clone().last().unwrap().len(), 138);
4383+
assert_eq!(node_txn[0].input[0].witness.clone().last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
4384+
assert_eq!(node_txn[3].input[0].witness.clone().last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
43844385
check_spends!(node_txn[1], chan_1.3.clone());
43854386
check_spends!(node_txn[2], node_txn[1].clone());
43864387
assert_eq!(node_txn[1].input[0].witness.clone().last().unwrap().len(), 71);
4387-
assert_eq!(node_txn[2].input[0].witness.clone().last().unwrap().len(), 133);
4388+
assert_eq!(node_txn[2].input[0].witness.clone().last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
43884389
}
43894390

43904391
#[test]
@@ -4454,15 +4455,15 @@ mod tests {
44544455
assert_eq!(node_txn[1], node_txn[6]);
44554456
assert_eq!(node_txn[2], node_txn[7]);
44564457
check_spends!(node_txn[0], commitment_tx[0].clone());
4457-
assert_eq!(node_txn[0].clone().input[0].witness.last().unwrap().len(), 138);
4458+
assert_eq!(node_txn[0].clone().input[0].witness.last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
44584459
check_spends!(node_txn[1], chan_2.3.clone());
44594460
check_spends!(node_txn[2], node_txn[1].clone());
44604461
assert_eq!(node_txn[1].clone().input[0].witness.last().unwrap().len(), 71);
4461-
assert_eq!(node_txn[2].clone().input[0].witness.last().unwrap().len(), 133);
4462+
assert_eq!(node_txn[2].clone().input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
44624463
check_spends!(node_txn[3], chan_2.3.clone());
44634464
check_spends!(node_txn[4], node_txn[3].clone());
44644465
assert_eq!(node_txn[3].input[0].witness.clone().last().unwrap().len(), 71);
4465-
assert_eq!(node_txn[4].input[0].witness.clone().last().unwrap().len(), 133);
4466+
assert_eq!(node_txn[4].input[0].witness.clone().last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
44664467
timeout_tx = node_txn[0].clone();
44674468
node_txn.clear();
44684469
}
@@ -4507,11 +4508,11 @@ mod tests {
45074508
assert_eq!(node_txn.len(), 4);
45084509
assert_eq!(node_txn[0], node_txn[3]);
45094510
check_spends!(node_txn[0], commitment_tx[0].clone());
4510-
assert_eq!(node_txn[0].clone().input[0].witness.last().unwrap().len(), 138);
4511+
assert_eq!(node_txn[0].clone().input[0].witness.last().unwrap().len(), ACCEPTED_HTLC_SCRIPT_WEIGHT);
45114512
check_spends!(node_txn[1], chan_1.3.clone());
45124513
check_spends!(node_txn[2], node_txn[1].clone());
45134514
assert_eq!(node_txn[1].clone().input[0].witness.last().unwrap().len(), 71);
4514-
assert_eq!(node_txn[2].clone().input[0].witness.last().unwrap().len(), 133);
4515+
assert_eq!(node_txn[2].clone().input[0].witness.last().unwrap().len(), OFFERED_HTLC_SCRIPT_WEIGHT);
45154516
}
45164517

45174518
#[test]

src/ln/channelmonitor.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ use secp256k1;
2828
use ln::msgs::{DecodeError, HandleError};
2929
use ln::chan_utils;
3030
use ln::chan_utils::HTLCOutputInCommitment;
31+
use ln::channel::{ACCEPTED_HTLC_SCRIPT_WEIGHT, OFFERED_HTLC_SCRIPT_WEIGHT};
3132
use chain::chaininterface::{ChainListener, ChainWatchInterface, BroadcasterInterface};
3233
use chain::transaction::OutPoint;
3334
use util::ser::{Readable, Writer};
@@ -1322,13 +1323,13 @@ impl ChannelMonitor {
13221323
}
13231324
}
13241325
if payment_data.1.is_some() {
1325-
if input.witness.len() == 5 && input.witness[4].len() == 138 {
1326+
if input.witness.len() == 5 && input.witness[4].len() == ACCEPTED_HTLC_SCRIPT_WEIGHT {
13261327
let mut payment_preimage = [0; 32];
13271328
for (arr, vec) in payment_preimage.iter_mut().zip(tx.input[0].witness[3].iter()) {
13281329
*arr = *vec;
13291330
}
13301331
payment_data = (Some(payment_preimage), payment_data.1);
1331-
} else if input.witness.len() == 3 && input.witness[2].len() == 133 {
1332+
} else if input.witness.len() == 3 && input.witness[2].len() == OFFERED_HTLC_SCRIPT_WEIGHT {
13321333
let mut payment_preimage = [0; 32];
13331334
for (arr, vec) in payment_preimage.iter_mut().zip(tx.input[0].witness[1].iter()) {
13341335
*arr = *vec;

0 commit comments

Comments
 (0)