Skip to content

Commit 7442548

Browse files
committed
Move input_idx retrieval into closure
1 parent c906fac commit 7442548

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

lightning/src/sign/mod.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1539,9 +1539,10 @@ impl KeysManager {
15391539
pub fn sign_spendable_outputs_psbt<C: Signing>(&self, descriptors: &[&SpendableOutputDescriptor], mut psbt: PartiallySignedTransaction, secp_ctx: &Secp256k1<C>) -> Result<PartiallySignedTransaction, ()> {
15401540
let mut keys_cache: Option<(InMemorySigner, [u8; 32])> = None;
15411541
for outp in descriptors {
1542+
let get_input_idx = |outpoint: &OutPoint| psbt.unsigned_tx.input.iter().position(|i| i.previous_output == outpoint.into_bitcoin_outpoint()).ok_or(());
15421543
match outp {
15431544
SpendableOutputDescriptor::StaticPaymentOutput(descriptor) => {
1544-
let input_idx = psbt.unsigned_tx.input.iter().position(|i| i.previous_output == descriptor.outpoint.into_bitcoin_outpoint()).ok_or(())?;
1545+
let input_idx = get_input_idx(&descriptor.outpoint)?;
15451546
if keys_cache.is_none() || keys_cache.as_ref().unwrap().1 != descriptor.channel_keys_id {
15461547
let mut signer = self.derive_channel_keys(descriptor.channel_value_satoshis, &descriptor.channel_keys_id);
15471548
if let Some(channel_params) = descriptor.channel_transaction_parameters.as_ref() {
@@ -1553,7 +1554,7 @@ impl KeysManager {
15531554
psbt.inputs[input_idx].final_script_witness = Some(witness);
15541555
},
15551556
SpendableOutputDescriptor::DelayedPaymentOutput(descriptor) => {
1556-
let input_idx = psbt.unsigned_tx.input.iter().position(|i| i.previous_output == descriptor.outpoint.into_bitcoin_outpoint()).ok_or(())?;
1557+
let input_idx = get_input_idx(&descriptor.outpoint)?;
15571558
if keys_cache.is_none() || keys_cache.as_ref().unwrap().1 != descriptor.channel_keys_id {
15581559
keys_cache = Some((
15591560
self.derive_channel_keys(descriptor.channel_value_satoshis, &descriptor.channel_keys_id),
@@ -1563,7 +1564,7 @@ impl KeysManager {
15631564
psbt.inputs[input_idx].final_script_witness = Some(witness);
15641565
},
15651566
SpendableOutputDescriptor::StaticOutput { ref outpoint, ref output, .. } => {
1566-
let input_idx = psbt.unsigned_tx.input.iter().position(|i| i.previous_output == outpoint.into_bitcoin_outpoint()).ok_or(())?;
1567+
let input_idx = get_input_idx(outpoint)?;
15671568
let derivation_idx = if output.script_pubkey == self.destination_script {
15681569
1
15691570
} else {

0 commit comments

Comments
 (0)