From 6db07eb4ecfd38bc97fe75d055550e7c3b9c8cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Ludue=C3=B1a?= Date: Wed, 18 Mar 2026 18:31:33 -0300 Subject: [PATCH] fix: filter pool_set according to constraints --- crates/tx3-resolver/src/inputs/select/mod.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/crates/tx3-resolver/src/inputs/select/mod.rs b/crates/tx3-resolver/src/inputs/select/mod.rs index 78121d6..de49bca 100644 --- a/crates/tx3-resolver/src/inputs/select/mod.rs +++ b/crates/tx3-resolver/src/inputs/select/mod.rs @@ -81,11 +81,24 @@ impl PendingQuery { } fn build_candidates(&mut self, pool: &HashMap) { - let target = self.query.min_amount.clone().unwrap_or(CanonicalAssets::empty()); + let target = self + .query + .min_amount + .clone() + .unwrap_or(CanonicalAssets::empty()); let pool_set: UtxoSet = pool .values() - .filter(|utxo| !self.query.collateral || utxo.assets.is_only_naked()) + .filter(|utxo| { + let collateral_ok = !self.query.collateral || utxo.assets.is_only_naked(); + let address_ok = self + .query + .address + .as_ref() + .map_or(true, |a| utxo.address == *a); + let refs_ok = self.query.refs.is_empty() || self.query.refs.contains(&utxo.r#ref); + collateral_ok && address_ok && refs_ok + }) .cloned() .collect();