create_transaction_for_addresses freezes spent utxos to prevent accidental double spends

This commit is contained in:
NicolasCantu 2025-01-17 09:41:27 +01:00
parent cd48128255
commit 4232f9aa62

View File

@ -1144,12 +1144,12 @@ fn create_transaction_for_addresses(addresses: Vec<String>, fee_rate: u32) -> an
let local_device = lock_local_device()?; let local_device = lock_local_device()?;
let sp_wallet = local_device.get_wallet(); let sp_wallet = local_device.get_wallet();
let freezed_utxos = lock_freezed_utxos()?; let mut freezed_utxos = lock_freezed_utxos()?;
let mut recipients = Vec::with_capacity(addresses.len()); let mut recipients = Vec::with_capacity(addresses.len());
for address in addresses { for address in addresses {
let recipient = Recipient { let recipient = Recipient {
address: address, address,
amount: DEFAULT_AMOUNT, amount: DEFAULT_AMOUNT,
nb_outputs: 1, nb_outputs: 1,
}; };
@ -1166,6 +1166,11 @@ fn create_transaction_for_addresses(addresses: Vec<String>, fee_rate: u32) -> an
None, None,
)?; )?;
// We add the used inputs in freezed utxos to prevent accidental double spends
for input in &signed_psbt.unsigned_tx.input {
freezed_utxos.insert(input.previous_output);
}
Ok(signed_psbt) Ok(signed_psbt)
} }