Skip to content

Commit

Permalink
f: return global minimum
Browse files Browse the repository at this point in the history
  • Loading branch information
arik-so committed Feb 11, 2025
1 parent aa64a20 commit 56b73e7
Showing 1 changed file with 20 additions and 8 deletions.
28 changes: 20 additions & 8 deletions lightning/src/chain/channelmonitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2743,35 +2743,47 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
fn closure_conf_target(&self) -> ConfirmationTarget {
// Treat the sweep as urgent as long as there is at least one HTLC which is pending on a
// valid commitment transaction.
let mut minimum_expiry = None;
let update_minimum_expiry = |local_minimum: Option<u32>, global_minimum: &mut Option<u32>| {
if let Some(expiry) = local_minimum {
*global_minimum = Some(global_minimum.map_or(expiry, |m| cmp::min(expiry, m)));
}
};

if !self.current_holder_commitment_tx.htlc_outputs.is_empty() {
let minimum_expiry = self.current_holder_commitment_tx.htlc_outputs
let local_minimum_expiry = self.current_holder_commitment_tx.htlc_outputs
.iter()
.map(|o| o.0.cltv_expiry)
.min();
return ConfirmationTarget::UrgentOnChainSweep(minimum_expiry);
update_minimum_expiry(local_minimum_expiry, &mut minimum_expiry);
}
if self.prev_holder_signed_commitment_tx.as_ref().map(|t| !t.htlc_outputs.is_empty()).unwrap_or(false) {
let minimum_expiry = self.prev_holder_signed_commitment_tx.as_ref().map(|t| t.htlc_outputs
let local_minimum_expiry = self.prev_holder_signed_commitment_tx.as_ref().map(|t| t.htlc_outputs
.iter()
.map(|o| o.0.cltv_expiry)
.min()
).flatten();
return ConfirmationTarget::UrgentOnChainSweep(minimum_expiry);
update_minimum_expiry(local_minimum_expiry, &mut minimum_expiry);
}
if let Some(txid) = self.current_counterparty_commitment_txid {
let claimable_outpoints = self.counterparty_claimable_outpoints.get(&txid).unwrap();
if !claimable_outpoints.is_empty() {
let minimum_expiry = claimable_outpoints.iter().map(|o|o.0.cltv_expiry).min();
return ConfirmationTarget::UrgentOnChainSweep(minimum_expiry);
let local_minimum_expiry = claimable_outpoints.iter().map(|o|o.0.cltv_expiry).min();
update_minimum_expiry(local_minimum_expiry, &mut minimum_expiry);
}
}
if let Some(txid) = self.prev_counterparty_commitment_txid {
let claimable_outpoints = self.counterparty_claimable_outpoints.get(&txid).unwrap();
if !claimable_outpoints.is_empty() {
let minimum_expiry = claimable_outpoints.iter().map(|o|o.0.cltv_expiry).min();
return ConfirmationTarget::UrgentOnChainSweep(minimum_expiry);
let local_minimum_expiry = claimable_outpoints.iter().map(|o|o.0.cltv_expiry).min();
update_minimum_expiry(local_minimum_expiry, &mut minimum_expiry);
}
}

if let Some(global_minimum) = minimum_expiry {
return ConfirmationTarget::UrgentOnChainSweep(Some(global_minimum))
}

ConfirmationTarget::OutputSpendingFee
}

Expand Down

0 comments on commit 56b73e7

Please sign in to comment.