[bug] correctly handle the case available funds are equal or just above target

This commit is contained in:
NicolasCantu 2025-01-06 15:35:15 +01:00
parent 326eb56b62
commit 8f1b4a9071

View File

@ -57,15 +57,17 @@ pub fn create_transaction(
inputs.insert(must_outpoint, must_output); inputs.insert(must_outpoint, must_output);
} }
let fee_provision = sum_outputs.checked_div(10).unwrap();
for (outpoint, output) in available_outpoints { 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; break;
} }
total_available += output.amount; total_available += output.amount;
inputs.insert(outpoint, output); 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")); return Err(Error::msg("Not enough available funds"));
} }