Skip to content

Commit deacb3f

Browse files
author
Antoine Riard
committed
Add spendable output event to_remote output on remote tx
Modify DynamicOutput descriptor to handle P2WPKH on to_remote case which is encumbered by a key generated dynamically
1 parent 32fe9b2 commit deacb3f

File tree

4 files changed

+88
-35
lines changed

4 files changed

+88
-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
@@ -7519,7 +7519,7 @@ mod tests {
75197519
let spend_tx = match events[0] {
75207520
Event::SpendableOutputs { ref outputs } => {
75217521
match outputs[0] {
7522-
SpendableOutputDescriptor::DynamicOutput { ref outpoint, ref local_delayedkey, ref witness_script, ref to_self_delay } => {
7522+
SpendableOutputDescriptor::DynamicOutput { ref outpoint, ref key, ref witness_script, ref to_self_delay } => {
75237523
let input = TxIn {
75247524
previous_output: outpoint.clone(),
75257525
script_sig: Script::new(),
@@ -7536,14 +7536,18 @@ mod tests {
75367536
input: vec![input],
75377537
output: vec![output],
75387538
};
7539-
let sighash = Message::from_slice(&bip143::SighashComponents::new(&spend_tx).sighash_all(&spend_tx.input[0], witness_script, 99000)[..]).unwrap();
7540-
let secp_ctx = Secp256k1::new();
7541-
let local_delaysig = secp_ctx.sign(&sighash, local_delayedkey);
7542-
spend_tx.input[0].witness.push(local_delaysig.serialize_der(&secp_ctx).to_vec());
7543-
spend_tx.input[0].witness[0].push(SigHashType::All as u8);
7544-
spend_tx.input[0].witness.push(vec!(0));
7545-
spend_tx.input[0].witness.push(witness_script.clone().into_bytes());
7546-
spend_tx
7539+
if let Some(witness_script) = witness_script.clone() {
7540+
let sighash = Message::from_slice(&bip143::SighashComponents::new(&spend_tx).sighash_all(&spend_tx.input[0], &witness_script, 99000)[..]).unwrap();
7541+
let secp_ctx = Secp256k1::new();
7542+
let local_delaysig = secp_ctx.sign(&sighash, key);
7543+
spend_tx.input[0].witness.push(local_delaysig.serialize_der(&secp_ctx).to_vec());
7544+
spend_tx.input[0].witness[0].push(SigHashType::All as u8);
7545+
spend_tx.input[0].witness.push(vec!(0));
7546+
spend_tx.input[0].witness.push(witness_script.clone().into_bytes());
7547+
spend_tx
7548+
} else {
7549+
panic!("Unexpected event");
7550+
}
75477551
},
75487552
_ => panic!("Unexpected event"),
75497553
}

src/ln/channelmonitor.rs

Lines changed: 64 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, 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,24 @@ 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 { ref payment_base_key, .. } => {
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+
//TODO: we need to ensure an offline client will generate the event when it
933+
// cames back online after only the watchtower saw the transaction
934+
}
935+
}
915936
}
916937
}
917938

@@ -1049,6 +1070,28 @@ impl ChannelMonitor {
10491070
Some(their_htlc_base_key) => ignore_error!(chan_utils::derive_public_key(&self.secp_ctx, revocation_point, &their_htlc_base_key)),
10501071
};
10511072

1073+
1074+
for (idx, outp) in tx.output.iter().enumerate() {
1075+
if outp.script_pubkey.is_v0_p2wpkh() {
1076+
match self.key_storage {
1077+
KeyStorage::PrivMode { ref payment_base_key, .. } => {
1078+
if let Ok(local_key) = chan_utils::derive_private_key(&self.secp_ctx, &revocation_point, &payment_base_key) {
1079+
spendable_outputs.push(SpendableOutputDescriptor::DynamicOutput {
1080+
outpoint: BitcoinOutPoint { txid: commitment_txid, vout: idx as u32 },
1081+
key: local_key,
1082+
witness_script: None,
1083+
to_self_delay: 0,
1084+
});
1085+
}
1086+
}
1087+
KeyStorage::SigsMode { .. } => {
1088+
//TODO: we need to ensure an offline client will generate the event when it
1089+
// cames back online after only the watchtower saw the transaction
1090+
}
1091+
}
1092+
}
1093+
}
1094+
10521095
let mut total_value = 0;
10531096
let mut values = Vec::new();
10541097
let mut inputs = Vec::new();
@@ -1242,8 +1285,8 @@ impl ChannelMonitor {
12421285
if let Ok(local_delayedkey) = chan_utils::derive_private_key(&self.secp_ctx, per_commitment_point, delayed_payment_base_key) {
12431286
spendable_outputs.push(SpendableOutputDescriptor::DynamicOutput {
12441287
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),
1288+
key: local_delayedkey,
1289+
witness_script: Some(chan_utils::get_revokeable_redeemscript(&local_tx.revocation_key, self.our_to_self_delay, &local_tx.delayed_payment_key)),
12471290
to_self_delay: self.our_to_self_delay
12481291
});
12491292
}
@@ -1309,7 +1352,7 @@ impl ChannelMonitor {
13091352
if let &Some(ref local_tx) = &self.current_local_signed_commitment_tx {
13101353
if local_tx.txid == commitment_txid {
13111354
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 } => {
1355+
KeyStorage::PrivMode { ref delayed_payment_base_key, ref latest_per_commitment_point, .. } => {
13131356
return self.broadcast_by_local_state(local_tx, latest_per_commitment_point, &Some(*delayed_payment_base_key));
13141357
},
13151358
KeyStorage::SigsMode { .. } => {
@@ -1321,7 +1364,7 @@ impl ChannelMonitor {
13211364
if let &Some(ref local_tx) = &self.prev_local_signed_commitment_tx {
13221365
if local_tx.txid == commitment_txid {
13231366
match self.key_storage {
1324-
KeyStorage::PrivMode { revocation_base_key: _, htlc_base_key: _, ref delayed_payment_base_key, ref prev_latest_per_commitment_point, .. } => {
1367+
KeyStorage::PrivMode { ref delayed_payment_base_key, ref prev_latest_per_commitment_point, .. } => {
13251368
return self.broadcast_by_local_state(local_tx, prev_latest_per_commitment_point, &Some(*delayed_payment_base_key));
13261369
},
13271370
KeyStorage::SigsMode { .. } => {
@@ -1393,7 +1436,7 @@ impl ChannelMonitor {
13931436
if self.would_broadcast_at_height(height) {
13941437
broadcaster.broadcast_transaction(&cur_local_tx.tx);
13951438
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 } => {
1439+
KeyStorage::PrivMode { ref delayed_payment_base_key, ref latest_per_commitment_point, .. } => {
13971440
let (txs, mut outputs) = self.broadcast_by_local_state(&cur_local_tx, latest_per_commitment_point, &Some(*delayed_payment_base_key));
13981441
spendable_outputs.append(&mut outputs);
13991442
for tx in txs {
@@ -1481,6 +1524,7 @@ impl<R: ::std::io::Read> ReadableArgs<R, Arc<Logger>> for (Sha256dHash, ChannelM
14811524
let revocation_base_key = Readable::read(reader)?;
14821525
let htlc_base_key = Readable::read(reader)?;
14831526
let delayed_payment_base_key = Readable::read(reader)?;
1527+
let payment_base_key = Readable::read(reader)?;
14841528
let prev_latest_per_commitment_point = match <u8 as Readable<R>>::read(reader)? {
14851529
0 => None,
14861530
1 => Some(Readable::read(reader)?),
@@ -1495,6 +1539,7 @@ impl<R: ::std::io::Read> ReadableArgs<R, Arc<Logger>> for (Sha256dHash, ChannelM
14951539
revocation_base_key,
14961540
htlc_base_key,
14971541
delayed_payment_base_key,
1542+
payment_base_key,
14981543
prev_latest_per_commitment_point,
14991544
latest_per_commitment_point,
15001545
}
@@ -1724,7 +1769,7 @@ mod tests {
17241769

17251770
{
17261771
// 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());
1772+
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());
17281773
secrets.clear();
17291774

17301775
secrets.push([0; 32]);
@@ -1770,7 +1815,7 @@ mod tests {
17701815

17711816
{
17721817
// 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());
1818+
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());
17741819
secrets.clear();
17751820

17761821
secrets.push([0; 32]);
@@ -1786,7 +1831,7 @@ mod tests {
17861831

17871832
{
17881833
// 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());
1834+
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());
17901835
secrets.clear();
17911836

17921837
secrets.push([0; 32]);
@@ -1812,7 +1857,7 @@ mod tests {
18121857

18131858
{
18141859
// 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());
1860+
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());
18161861
secrets.clear();
18171862

18181863
secrets.push([0; 32]);
@@ -1838,7 +1883,7 @@ mod tests {
18381883

18391884
{
18401885
// 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());
1886+
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());
18421887
secrets.clear();
18431888

18441889
secrets.push([0; 32]);
@@ -1884,7 +1929,7 @@ mod tests {
18841929

18851930
{
18861931
// 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());
1932+
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());
18881933
secrets.clear();
18891934

18901935
secrets.push([0; 32]);
@@ -1920,7 +1965,7 @@ mod tests {
19201965

19211966
{
19221967
// 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());
1968+
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());
19241969
secrets.clear();
19251970

19261971
secrets.push([0; 32]);
@@ -1966,7 +2011,7 @@ mod tests {
19662011

19672012
{
19682013
// 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());
2014+
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());
19702015
secrets.clear();
19712016

19722017
secrets.push([0; 32]);
@@ -2012,7 +2057,7 @@ mod tests {
20122057

20132058
{
20142059
// 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());
2060+
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());
20162061
secrets.clear();
20172062

20182063
secrets.push([0; 32]);
@@ -2131,7 +2176,7 @@ mod tests {
21312176

21322177
// Prune with one old state and a local commitment tx holding a few overlaps with the
21332178
// 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());
2179+
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());
21352180
monitor.set_their_to_self_delay(10);
21362181

21372182
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)