From 4761155707a819c4db437e71a36621a027d5302a Mon Sep 17 00:00:00 2001 From: rajarshimaitra Date: Thu, 16 Dec 2021 20:53:16 +0530 Subject: [PATCH] Add sync verification in `electrum` --- src/blockchain/electrum.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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>>()?;