Skip to content

Commit d3ed15d

Browse files
author
Antoine Riard
committed
Implement generation of SpendableOutput event for to_local output on
remote commitment tx Modify DynamicOutput descriptor to handle P2WPKH case on dynamic keys
1 parent b2f3efc commit d3ed15d

File tree

4 files changed

+86
-35
lines changed

4 files changed

+86
-35
lines changed

src/chain/keysinterface.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,21 @@ pub enum SpendableOutputDescriptor {
3737
/// The output which is referenced by the given outpoint
3838
output: TxOut,
3939
},
40-
/// Outpoint commits to a P2WSH, should be spend by the following witness :
40+
/// Outpoint commits to a P2WSH if witness_script is Some or P2WPKH
41+
/// P2WSH should be spend by the following witness :
4142
/// <local_delayedsig> 0 <witnessScript>
4243
/// With input nSequence set to_self_delay.
43-
/// Outputs from a HTLC-Success/Timeout tx
44+
/// P2WPKH should be spend by the following witness :
45+
/// <local_sig> <local_pubkey>
46+
/// Outputs from a HTLC-Success/Timeout tx/commitment tx
4447
DynamicOutput {
4548
/// Outpoint spendable by user wallet
4649
outpoint: OutPoint,
47-
/// local_delayedkey = delayed_payment_basepoint_secret + SHA256(per_commitment_point || delayed_payment_basepoint)
48-
local_delayedkey: SecretKey,
50+
/// local_delayedkey = delayed_payment_basepoint_secret + SHA256(per_commitment_point || delayed_payment_basepoint) OR
51+
/// localkey = payment_basepoint_secret + SHA256(per_commitment_point || payment_basepoint
52+
key: SecretKey,
4953
/// witness redeemScript encumbering output
50-
witness_script: Script,
54+
witness_script: Option<Script>,
5155
/// nSequence input must commit to self_delay to satisfy script's OP_CSV
5256
to_self_delay: u16,
5357
}

src/ln/channel.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ impl Channel {
438438

439439
let secp_ctx = Secp256k1::new();
440440
let channel_monitor = ChannelMonitor::new(&chan_keys.revocation_base_key, &chan_keys.delayed_payment_base_key,
441-
&chan_keys.htlc_base_key, BREAKDOWN_TIMEOUT,
441+
&chan_keys.htlc_base_key, &chan_keys.payment_base_key, BREAKDOWN_TIMEOUT,
442442
keys_provider.get_destination_script(), logger.clone());
443443

444444
Ok(Channel {
@@ -626,7 +626,7 @@ impl Channel {
626626

627627
let secp_ctx = Secp256k1::new();
628628
let mut channel_monitor = ChannelMonitor::new(&chan_keys.revocation_base_key, &chan_keys.delayed_payment_base_key,
629-
&chan_keys.htlc_base_key, BREAKDOWN_TIMEOUT,
629+
&chan_keys.htlc_base_key, &chan_keys.payment_base_key, BREAKDOWN_TIMEOUT,
630630
keys_provider.get_destination_script(), logger.clone());
631631
channel_monitor.set_their_base_keys(&msg.htlc_basepoint, &msg.delayed_payment_basepoint);
632632
channel_monitor.provide_their_next_revocation_point(Some((INITIAL_COMMITMENT_NUMBER, msg.first_per_commitment_point)));

src/ln/channelmanager.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7089,7 +7089,7 @@ mod tests {
70897089
let spend_tx = match events[0] {
70907090
Event::SpendableOutputs { ref outputs } => {
70917091
match outputs[0] {
7092-
SpendableOutputDescriptor::DynamicOutput { ref outpoint, ref local_delayedkey, ref witness_script, ref to_self_delay } => {
7092+
SpendableOutputDescriptor::DynamicOutput { ref outpoint, ref key, ref witness_script, ref to_self_delay } => {
70937093
let input = TxIn {
70947094
previous_output: outpoint.clone(),
70957095
script_sig: Script::new(),
@@ -7106,14 +7106,18 @@ mod tests {
71067106
input: vec![input],
71077107
output: vec![output],
71087108
};
7109-
let sighash = Message::from_slice(&bip143::SighashComponents::new(&spend_tx).sighash_all(&spend_tx.input[0], witness_script, 99000)[..]).unwrap();
7110-
let secp_ctx = Secp256k1::new();
7111-
let local_delaysig = secp_ctx.sign(&sighash, local_delayedkey);
7112-
spend_tx.input[0].witness.push(local_delaysig.serialize_der(&secp_ctx).to_vec());
7113-
spend_tx.input[0].witness[0].push(SigHashType::All as u8);
7114-
spend_tx.input[0].witness.push(vec!(0));
7115-
spend_tx.input[0].witness.push(witness_script.clone().into_bytes());
7116-
spend_tx
7109+
if let Some(witness_script) = witness_script {
7110+
let sighash = Message::from_slice(&bip143::SighashComponents::new(&spend_tx).sighash_all(&spend_tx.input[0], witness_script, 99000)[..]).unwrap();
7111+
let secp_ctx = Secp256k1::new();
7112+
let local_delaysig = secp_ctx.sign(&sighash, key);
7113+
spend_tx.input[0].witness.push(local_delaysig.serialize_der(&secp_ctx).to_vec());
7114+
spend_tx.input[0].witness[0].push(SigHashType::All as u8);
7115+
spend_tx.input[0].witness.push(vec!(0));
7116+
spend_tx.input[0].witness.push(witness_script.clone().into_bytes());
7117+
spend_tx
7118+
} else {
7119+
panic!("Unexpected event");
7120+
}
71177121
},
71187122
_ => panic!("Unexpected event"),
71197123
}

src/ln/channelmonitor.rs

Lines changed: 62 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ enum KeyStorage {
221221
revocation_base_key: SecretKey,
222222
htlc_base_key: SecretKey,
223223
delayed_payment_base_key: SecretKey,
224+
payment_base_key: SecretKey,
224225
prev_latest_per_commitment_point: Option<PublicKey>,
225226
latest_per_commitment_point: Option<PublicKey>,
226227
},
@@ -340,7 +341,7 @@ impl PartialEq for ChannelMonitor {
340341
}
341342

342343
impl ChannelMonitor {
343-
pub(super) fn new(revocation_base_key: &SecretKey, delayed_payment_base_key: &SecretKey, htlc_base_key: &SecretKey, our_to_self_delay: u16, destination_script: Script, logger: Arc<Logger>) -> ChannelMonitor {
344+
pub(super) fn new(revocation_base_key: &SecretKey, delayed_payment_base_key: &SecretKey, htlc_base_key: &SecretKey, payment_base_key: &SecretKey, our_to_self_delay: u16, destination_script: Script, logger: Arc<Logger>) -> ChannelMonitor {
344345
ChannelMonitor {
345346
funding_txo: None,
346347
commitment_transaction_number_obscure_factor: 0,
@@ -349,6 +350,7 @@ impl ChannelMonitor {
349350
revocation_base_key: revocation_base_key.clone(),
350351
htlc_base_key: htlc_base_key.clone(),
351352
delayed_payment_base_key: delayed_payment_base_key.clone(),
353+
payment_base_key: payment_base_key.clone(),
352354
prev_latest_per_commitment_point: None,
353355
latest_per_commitment_point: None,
354356
},
@@ -512,11 +514,12 @@ impl ChannelMonitor {
512514
feerate_per_kw,
513515
htlc_outputs,
514516
});
515-
self.key_storage = if let KeyStorage::PrivMode { ref revocation_base_key, ref htlc_base_key, ref delayed_payment_base_key, prev_latest_per_commitment_point: _, ref latest_per_commitment_point } = self.key_storage {
517+
self.key_storage = if let KeyStorage::PrivMode { ref revocation_base_key, ref htlc_base_key, ref delayed_payment_base_key, ref payment_base_key, prev_latest_per_commitment_point: _, ref latest_per_commitment_point } = self.key_storage {
516518
KeyStorage::PrivMode {
517519
revocation_base_key: *revocation_base_key,
518520
htlc_base_key: *htlc_base_key,
519521
delayed_payment_base_key: *delayed_payment_base_key,
522+
payment_base_key: *payment_base_key,
520523
prev_latest_per_commitment_point: *latest_per_commitment_point,
521524
latest_per_commitment_point: Some(local_keys.per_commitment_point),
522525
}
@@ -642,11 +645,12 @@ impl ChannelMonitor {
642645
U48(self.commitment_transaction_number_obscure_factor).write(writer)?;
643646

644647
match self.key_storage {
645-
KeyStorage::PrivMode { ref revocation_base_key, ref htlc_base_key, ref delayed_payment_base_key, ref prev_latest_per_commitment_point, ref latest_per_commitment_point } => {
648+
KeyStorage::PrivMode { ref revocation_base_key, ref htlc_base_key, ref delayed_payment_base_key, ref payment_base_key, ref prev_latest_per_commitment_point, ref latest_per_commitment_point } => {
646649
writer.write_all(&[0; 1])?;
647650
writer.write_all(&revocation_base_key[..])?;
648651
writer.write_all(&htlc_base_key[..])?;
649652
writer.write_all(&delayed_payment_base_key[..])?;
653+
writer.write_all(&payment_base_key[..])?;
650654
if let Some(ref prev_latest_per_commitment_point) = *prev_latest_per_commitment_point {
651655
writer.write_all(&[1; 1])?;
652656
writer.write_all(&prev_latest_per_commitment_point.serialize())?;
@@ -911,7 +915,23 @@ impl ChannelMonitor {
911915
htlc_idxs.push(None);
912916
values.push(outp.value);
913917
total_value += outp.value;
914-
break; // There can only be one of these
918+
} else if outp.script_pubkey.is_v0_p2wpkh() {
919+
match self.key_storage {
920+
KeyStorage::PrivMode { revocation_base_key: _, htlc_base_key: _, delayed_payment_base_key: _, ref payment_base_key, prev_latest_per_commitment_point: _, latest_per_commitment_point: _ } => {
921+
let per_commitment_point = PublicKey::from_secret_key(&self.secp_ctx, &per_commitment_key);
922+
if let Ok(local_key) = chan_utils::derive_private_key(&self.secp_ctx, &per_commitment_point, &payment_base_key) {
923+
spendable_outputs.push(SpendableOutputDescriptor::DynamicOutput {
924+
outpoint: BitcoinOutPoint { txid: commitment_txid, vout: idx as u32 },
925+
key: local_key,
926+
witness_script: None,
927+
to_self_delay: 0,
928+
});
929+
}
930+
}
931+
KeyStorage::SigsMode { .. } => {
932+
unimplemented!();
933+
}
934+
}
915935
}
916936
}
917937

@@ -1049,6 +1069,27 @@ impl ChannelMonitor {
10491069
Some(their_htlc_base_key) => ignore_error!(chan_utils::derive_public_key(&self.secp_ctx, revocation_point, &their_htlc_base_key)),
10501070
};
10511071

1072+
1073+
for (idx, outp) in tx.output.iter().enumerate() {
1074+
if outp.script_pubkey.is_v0_p2wpkh() {
1075+
match self.key_storage {
1076+
KeyStorage::PrivMode { revocation_base_key: _, htlc_base_key: _, delayed_payment_base_key: _, ref payment_base_key, prev_latest_per_commitment_point: _, latest_per_commitment_point: _ } => {
1077+
if let Ok(local_key) = chan_utils::derive_private_key(&self.secp_ctx, &revocation_point, &payment_base_key) {
1078+
spendable_outputs.push(SpendableOutputDescriptor::DynamicOutput {
1079+
outpoint: BitcoinOutPoint { txid: commitment_txid, vout: idx as u32 },
1080+
key: local_key,
1081+
witness_script: None,
1082+
to_self_delay: 0,
1083+
});
1084+
}
1085+
}
1086+
KeyStorage::SigsMode { .. } => {
1087+
unimplemented!();
1088+
}
1089+
}
1090+
}
1091+
}
1092+
10521093
let mut total_value = 0;
10531094
let mut values = Vec::new();
10541095
let mut inputs = Vec::new();
@@ -1242,8 +1283,8 @@ impl ChannelMonitor {
12421283
if let Ok(local_delayedkey) = chan_utils::derive_private_key(&self.secp_ctx, per_commitment_point, delayed_payment_base_key) {
12431284
spendable_outputs.push(SpendableOutputDescriptor::DynamicOutput {
12441285
outpoint: BitcoinOutPoint { txid: $father_tx.txid(), vout: $vout },
1245-
local_delayedkey,
1246-
witness_script: chan_utils::get_revokeable_redeemscript(&local_tx.revocation_key, self.our_to_self_delay, &local_tx.delayed_payment_key),
1286+
key: local_delayedkey,
1287+
witness_script: Some(chan_utils::get_revokeable_redeemscript(&local_tx.revocation_key, self.our_to_self_delay, &local_tx.delayed_payment_key)),
12471288
to_self_delay: self.our_to_self_delay
12481289
});
12491290
}
@@ -1309,7 +1350,7 @@ impl ChannelMonitor {
13091350
if let &Some(ref local_tx) = &self.current_local_signed_commitment_tx {
13101351
if local_tx.txid == commitment_txid {
13111352
match self.key_storage {
1312-
KeyStorage::PrivMode { revocation_base_key: _, htlc_base_key: _, ref delayed_payment_base_key, prev_latest_per_commitment_point: _, ref latest_per_commitment_point } => {
1353+
KeyStorage::PrivMode { revocation_base_key: _, htlc_base_key: _, ref delayed_payment_base_key, payment_base_key: _, prev_latest_per_commitment_point: _, ref latest_per_commitment_point } => {
13131354
return self.broadcast_by_local_state(local_tx, latest_per_commitment_point, &Some(*delayed_payment_base_key));
13141355
},
13151356
KeyStorage::SigsMode { .. } => {
@@ -1321,7 +1362,7 @@ impl ChannelMonitor {
13211362
if let &Some(ref local_tx) = &self.prev_local_signed_commitment_tx {
13221363
if local_tx.txid == commitment_txid {
13231364
match self.key_storage {
1324-
KeyStorage::PrivMode { revocation_base_key: _, htlc_base_key: _, ref delayed_payment_base_key, ref prev_latest_per_commitment_point, .. } => {
1365+
KeyStorage::PrivMode { revocation_base_key: _, htlc_base_key: _, ref delayed_payment_base_key, payment_base_key: _, ref prev_latest_per_commitment_point, .. } => {
13251366
return self.broadcast_by_local_state(local_tx, prev_latest_per_commitment_point, &Some(*delayed_payment_base_key));
13261367
},
13271368
KeyStorage::SigsMode { .. } => {
@@ -1393,7 +1434,7 @@ impl ChannelMonitor {
13931434
if self.would_broadcast_at_height(height) {
13941435
broadcaster.broadcast_transaction(&cur_local_tx.tx);
13951436
match self.key_storage {
1396-
KeyStorage::PrivMode { revocation_base_key: _, htlc_base_key: _, ref delayed_payment_base_key, prev_latest_per_commitment_point: _, ref latest_per_commitment_point } => {
1437+
KeyStorage::PrivMode { revocation_base_key: _, htlc_base_key: _, ref delayed_payment_base_key, payment_base_key: _, prev_latest_per_commitment_point: _, ref latest_per_commitment_point } => {
13971438
let (txs, mut outputs) = self.broadcast_by_local_state(&cur_local_tx, latest_per_commitment_point, &Some(*delayed_payment_base_key));
13981439
spendable_outputs.append(&mut outputs);
13991440
for tx in txs {
@@ -1481,6 +1522,7 @@ impl<R: ::std::io::Read> ReadableArgs<R, Arc<Logger>> for (Sha256dHash, ChannelM
14811522
let revocation_base_key = Readable::read(reader)?;
14821523
let htlc_base_key = Readable::read(reader)?;
14831524
let delayed_payment_base_key = Readable::read(reader)?;
1525+
let payment_base_key = Readable::read(reader)?;
14841526
let prev_latest_per_commitment_point = match <u8 as Readable<R>>::read(reader)? {
14851527
0 => None,
14861528
1 => Some(Readable::read(reader)?),
@@ -1495,6 +1537,7 @@ impl<R: ::std::io::Read> ReadableArgs<R, Arc<Logger>> for (Sha256dHash, ChannelM
14951537
revocation_base_key,
14961538
htlc_base_key,
14971539
delayed_payment_base_key,
1540+
payment_base_key,
14981541
prev_latest_per_commitment_point,
14991542
latest_per_commitment_point,
15001543
}
@@ -1724,7 +1767,7 @@ mod tests {
17241767

17251768
{
17261769
// insert_secret correct sequence
1727-
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
1770+
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
17281771
secrets.clear();
17291772

17301773
secrets.push([0; 32]);
@@ -1770,7 +1813,7 @@ mod tests {
17701813

17711814
{
17721815
// insert_secret #1 incorrect
1773-
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
1816+
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
17741817
secrets.clear();
17751818

17761819
secrets.push([0; 32]);
@@ -1786,7 +1829,7 @@ mod tests {
17861829

17871830
{
17881831
// insert_secret #2 incorrect (#1 derived from incorrect)
1789-
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
1832+
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
17901833
secrets.clear();
17911834

17921835
secrets.push([0; 32]);
@@ -1812,7 +1855,7 @@ mod tests {
18121855

18131856
{
18141857
// insert_secret #3 incorrect
1815-
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
1858+
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
18161859
secrets.clear();
18171860

18181861
secrets.push([0; 32]);
@@ -1838,7 +1881,7 @@ mod tests {
18381881

18391882
{
18401883
// insert_secret #4 incorrect (1,2,3 derived from incorrect)
1841-
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
1884+
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
18421885
secrets.clear();
18431886

18441887
secrets.push([0; 32]);
@@ -1884,7 +1927,7 @@ mod tests {
18841927

18851928
{
18861929
// insert_secret #5 incorrect
1887-
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
1930+
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
18881931
secrets.clear();
18891932

18901933
secrets.push([0; 32]);
@@ -1920,7 +1963,7 @@ mod tests {
19201963

19211964
{
19221965
// insert_secret #6 incorrect (5 derived from incorrect)
1923-
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
1966+
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
19241967
secrets.clear();
19251968

19261969
secrets.push([0; 32]);
@@ -1966,7 +2009,7 @@ mod tests {
19662009

19672010
{
19682011
// insert_secret #7 incorrect
1969-
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
2012+
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
19702013
secrets.clear();
19712014

19722015
secrets.push([0; 32]);
@@ -2012,7 +2055,7 @@ mod tests {
20122055

20132056
{
20142057
// insert_secret #8 incorrect
2015-
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
2058+
monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
20162059
secrets.clear();
20172060

20182061
secrets.push([0; 32]);
@@ -2131,7 +2174,7 @@ mod tests {
21312174

21322175
// Prune with one old state and a local commitment tx holding a few overlaps with the
21332176
// old state.
2134-
let mut monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
2177+
let mut monitor = ChannelMonitor::new(&SecretKey::from_slice(&secp_ctx, &[42; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[43; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), &SecretKey::from_slice(&secp_ctx, &[44; 32]).unwrap(), 0, Script::new(), logger.clone());
21352178
monitor.set_their_to_self_delay(10);
21362179

21372180
monitor.provide_latest_local_commitment_tx_info(dummy_tx.clone(), dummy_keys!(), 0, preimages_to_local_htlcs!(preimages[0..10]));

0 commit comments

Comments
 (0)