From ab132ab0b389e8ab40364b6258eff4dbe2573758 Mon Sep 17 00:00:00 2001 From: Fuyin Date: Fri, 6 Jun 2025 17:07:24 +0800 Subject: [PATCH] Ensure package output is not less than dust limit When bumping an HTLC sweep transaction, if the feerate remains unchanged, `feerate_bump` doesn't check whether the output amount is below the dust limit. However, this situation can occur if the transaction's inputs are modified. See also: #3831 --- lightning/src/chain/package.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lightning/src/chain/package.rs b/lightning/src/chain/package.rs index 9c0a19a187d..1d660c86989 100644 --- a/lightning/src/chain/package.rs +++ b/lightning/src/chain/package.rs @@ -1365,11 +1365,11 @@ impl PackageTemplate { predicted_weight, input_amounts, dust_limit_sats, self.feerate_previous, feerate_strategy, conf_target, fee_estimator, logger, ) { - return Some((input_amounts.saturating_sub(new_fee), feerate)); + return Some((cmp::max(input_amounts.saturating_sub(new_fee), dust_limit_sats), feerate)); } } else { if let Some((new_fee, feerate)) = compute_fee_from_spent_amounts(input_amounts, predicted_weight, conf_target, fee_estimator, logger) { - return Some((cmp::max(input_amounts as i64 - new_fee as i64, dust_limit_sats as i64) as u64, feerate)); + return Some((cmp::max(input_amounts.saturating_sub(new_fee), dust_limit_sats), feerate)); } } None