Skip to content

Commit 1b0cbb4

Browse files
author
Antoine Riard
committed
Add key_storage selection in ChannelMonitor insert_combine
Based on commitment_number
1 parent 3e8833a commit 1b0cbb4

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
@@ -548,6 +548,15 @@ impl ChannelMonitor {
548548
if our_min_secret > other_min_secret {
549549
self.provide_secret(other_min_secret, other.get_secret(other_min_secret).unwrap())?;
550550
}
551+
if let Some(ref local_tx) = self.current_local_signed_commitment_tx {
552+
if let Some(ref other_local_tx) = other.current_local_signed_commitment_tx {
553+
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);
554+
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);
555+
if our_commitment_number >= other_commitment_number {
556+
self.key_storage = other.key_storage;
557+
}
558+
}
559+
}
551560
// TODO: We should use current_remote_commitment_number and the commitment number out of
552561
// local transactions to decide how to merge
553562
if our_min_secret >= other_min_secret {
@@ -563,6 +572,7 @@ impl ChannelMonitor {
563572
}
564573
self.payment_preimages = other.payment_preimages;
565574
}
575+
566576
self.current_remote_commitment_number = cmp::min(self.current_remote_commitment_number, other.current_remote_commitment_number);
567577
Ok(())
568578
}

0 commit comments

Comments
 (0)