From 8f1b4a9071421f5e5ae599cd2e293cb9b3ce87c9 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Mon, 6 Jan 2025 15:35:15 +0100 Subject: [PATCH] [bug] correctly handle the case available funds are equal or just above target --- src/silentpayments.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/silentpayments.rs b/src/silentpayments.rs index ed921f5..c338bf6 100644 --- a/src/silentpayments.rs +++ b/src/silentpayments.rs @@ -57,15 +57,17 @@ pub fn create_transaction( inputs.insert(must_outpoint, must_output); } + let fee_provision = sum_outputs.checked_div(10).unwrap(); + for (outpoint, output) in available_outpoints { - if total_available > sum_outputs.checked_add(sum_outputs.checked_div(10).unwrap()).unwrap() { + if total_available > sum_outputs.checked_add(fee_provision).unwrap() { break; } total_available += output.amount; inputs.insert(outpoint, output); } - if total_available < sum_outputs { + if total_available <= sum_outputs.checked_add(fee_provision).unwrap() { return Err(Error::msg("Not enough available funds")); }