From: rajarshimaitra Date: Thu, 16 Dec 2021 15:23:16 +0000 (+0530) Subject: Add sync verification in `electrum` X-Git-Tag: v0.17.0~7^2~10 X-Git-Url: http://internal-gitweb-vhost/script/%22https:/struct.CodeLengthError.html?a=commitdiff_plain;h=4761155707a819c4db437e71a36621a027d5302a;p=bdk Add sync verification in `electrum` --- diff --git a/src/blockchain/electrum.rs b/src/blockchain/electrum.rs index cb079a87..9ebde989 100644 --- a/src/blockchain/electrum.rs +++ b/src/blockchain/electrum.rs @@ -175,6 +175,7 @@ impl Blockchain for ElectrumBlockchain { let full_details = full_transactions .into_iter() .map(|tx| { + let mut input_index = 0usize; let prev_outputs = tx .input .iter() @@ -189,6 +190,20 @@ impl Blockchain for ElectrumBlockchain { .output .get(input.previous_output.vout as usize) .ok_or_else(electrum_goof)?; + // Verify this input if requested via feature flag + #[cfg(feature = "verify")] + { + use crate::wallet::verify::VerifyError; + let serialized_tx = bitcoin::consensus::serialize(&tx); + bitcoinconsensus::verify( + txout.script_pubkey.to_bytes().as_ref(), + txout.value, + &serialized_tx, + input_index, + ) + .map_err(|e| VerifyError::from(e))?; + } + input_index += 1; Ok(Some(txout.clone())) }) .collect::, Error>>()?;