From: Wei Chen Date: Wed, 25 Jun 2025 22:01:53 +0000 (+0000) Subject: refactor(electrum): remove `unwrap()`s and `expect()`s X-Git-Tag: bitcoind_rpc-0.21.0~9^2~2 X-Git-Url: http://internal-gitweb-vhost/?a=commitdiff_plain;h=2b56f1a0487742d9a5a3043c8235c3ecca96a487;p=bdk refactor(electrum): remove `unwrap()`s and `expect()`s --- diff --git a/crates/electrum/src/bdk_electrum_client.rs b/crates/electrum/src/bdk_electrum_client.rs index b0b30ea6..6bbe2a65 100644 --- a/crates/electrum/src/bdk_electrum_client.rs +++ b/crates/electrum/src/bdk_electrum_client.rs @@ -579,8 +579,17 @@ impl BdkElectrumClient { let outpoint = vin.previous_output; let vout = outpoint.vout; let prev_tx = self.fetch_tx(outpoint.txid)?; - let txout = prev_tx.output[vout as usize].clone(); - let _ = tx_update.txouts.insert(outpoint, txout); + // Ensure server returns the expected txout. + let txout = prev_tx + .output + .get(vout as usize) + .ok_or_else(|| { + electrum_client::Error::Message(format!( + "prevout {outpoint} does not exist" + )) + })? + .clone(); + tx_update.txouts.insert(outpoint, txout); } } } @@ -652,11 +661,11 @@ fn fetch_tip_and_latest_blocks( }) .fold(agreement_cp, |prev_cp, block| { Some(match prev_cp { - Some(cp) => cp.push(block).expect("must extend checkpoint"), + Some(cp) => cp.push(block).ok()?, None => CheckPoint::new(block), }) }) - .expect("must have at least one checkpoint"); + .ok_or_else(|| Error::Message("failed to construct new checkpoint tip".to_string()))?; Ok((new_tip, new_blocks)) }