From c3de300bd0363ac9393a7027c6365733e2e9290c Mon Sep 17 00:00:00 2001 From: Thibault Martinez Date: Tue, 5 Dec 2023 18:31:14 +0100 Subject: [PATCH] ISA: disallow unrequired implicit accounts from being selected --- .../client/api/block_builder/input_selection/mod.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sdk/src/client/api/block_builder/input_selection/mod.rs b/sdk/src/client/api/block_builder/input_selection/mod.rs index dd4c60fd6f..437cb962d6 100644 --- a/sdk/src/client/api/block_builder/input_selection/mod.rs +++ b/sdk/src/client/api/block_builder/input_selection/mod.rs @@ -31,6 +31,7 @@ use crate::{ }; /// Working state for the input selection algorithm. +#[derive(Debug)] pub struct InputSelection { available_inputs: Vec, required_inputs: HashSet, @@ -245,9 +246,12 @@ impl InputSelection { match required_address { Address::Anchor(_) => false, - Address::ImplicitAccountCreation(implicit_account_creation) => self - .addresses - .contains(&Address::from(*implicit_account_creation.ed25519_address())), + Address::ImplicitAccountCreation(implicit_account_creation) => { + self.required_inputs.contains(input.output_id()) + && self + .addresses + .contains(&Address::from(*implicit_account_creation.ed25519_address())) + } _ => self.addresses.contains(&required_address), } })