Skip to content

Commit 394b11c

Browse files
author
Antoine Riard
committed
Add key_storage selection in ChannelMonitor insert_combine
Based on commitment_number
1 parent b6b5dec commit 394b11c

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/ln/channelmonitor.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,15 @@ impl ChannelMonitor {
552552
if our_min_secret > other_min_secret {
553553
self.provide_secret(other_min_secret, other.get_secret(other_min_secret).unwrap())?;
554554
}
555+
if let Some(ref local_tx) = self.current_local_signed_commitment_tx {
556+
if let Some(ref other_local_tx) = other.current_local_signed_commitment_tx {
557+
let our_commitment_number = 0xffffffffffff - ((((local_tx.tx.input[0].sequence as u64 & 0xffffff) << 3*8) | (local_tx.tx.lock_time as u64 & 0xffffff)) ^ self.commitment_transaction_number_obscure_factor);
558+
let other_commitment_number = 0xffffffffffff - ((((other_local_tx.tx.input[0].sequence as u64 & 0xffffff) << 3*8) | (other_local_tx.tx.lock_time as u64 & 0xffffff)) ^ other.commitment_transaction_number_obscure_factor);
559+
if our_commitment_number >= other_commitment_number {
560+
self.key_storage = other.key_storage;
561+
}
562+
}
563+
}
555564
// TODO: We should use current_remote_commitment_number and the commitment number out of
556565
// local transactions to decide how to merge
557566
if our_min_secret >= other_min_secret {
@@ -567,6 +576,7 @@ impl ChannelMonitor {
567576
}
568577
self.payment_preimages = other.payment_preimages;
569578
}
579+
570580
self.current_remote_commitment_number = cmp::min(self.current_remote_commitment_number, other.current_remote_commitment_number);
571581
Ok(())
572582
}

0 commit comments

Comments
 (0)