use bitcoin::blockdata::transaction::Transaction;
use bitcoin::hashes::{sha256d, Hash};
pub fn verify_merkle_proof(
tx: &Transaction,
proof: &[&[u8]],
tx_index: usize,
root: &sha256d::Hash,
) -> bool {
let mut current_hash = *tx.compute_txid().as_raw_hash();
for (i, next_hash) in proof.iter().enumerate() {
let mut concat = vec![];
if ((tx_index >> i) & 1) == 1 {
concat.extend_from_slice(next_hash);
concat.extend_from_slice(¤t_hash[..]);
} else {
concat.extend_from_slice(¤t_hash[..]);
concat.extend_from_slice(next_hash);
}
current_hash = sha256d::Hash::hash(&concat);
}
¤t_hash == root
}