transaction verification
This commit is contained in:
parent
1176c62628
commit
d1c83bc724
|
@ -19,7 +19,13 @@ impl ChainVerifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn verify_transaction(&self, transaction: &chain::Transaction) -> Result<(), TransactionError> {
|
fn verify_transaction(&self, transaction: &chain::Transaction) -> Result<(), TransactionError> {
|
||||||
//use script::{TransactionInputSigner, TransactionSignatureChecker, VerificationFlags, verify_script};
|
use script::{
|
||||||
|
TransactionInputSigner,
|
||||||
|
TransactionSignatureChecker,
|
||||||
|
VerificationFlags,
|
||||||
|
Script,
|
||||||
|
verify_script,
|
||||||
|
};
|
||||||
|
|
||||||
for (input_index, input) in transaction.inputs().iter().enumerate() {
|
for (input_index, input) in transaction.inputs().iter().enumerate() {
|
||||||
let parent_transaction = match self.store.transaction(&input.previous_output.hash) {
|
let parent_transaction = match self.store.transaction(&input.previous_output.hash) {
|
||||||
|
@ -30,27 +36,22 @@ impl ChainVerifier {
|
||||||
return Err(TransactionError::Input(input_index));
|
return Err(TransactionError::Input(input_index));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// signature verification
|
// signature verification
|
||||||
|
let signer: TransactionInputSigner = transaction.clone().into();
|
||||||
|
let ref paired_output = parent_transaction.outputs[input.previous_output.index as usize];
|
||||||
|
let checker = TransactionSignatureChecker {
|
||||||
|
signer: signer,
|
||||||
|
input_index: input_index,
|
||||||
|
};
|
||||||
|
let input: Script = input.script_sig().to_vec().into();
|
||||||
|
let output: Script = paired_output.script_pubkey.to_vec().into();
|
||||||
|
let flags = VerificationFlags::default().verify_p2sh(true);
|
||||||
|
|
||||||
// let signer: TransactionInputSigner = transaction.clone().into();
|
if let Err(e) = verify_script(&input, &output, &flags, &checker) {
|
||||||
// let paired_output = parent_transaction.outputs[input.previous_output.index as usize];
|
println!("transaction signature verification failure: {:?}", e);
|
||||||
// let checker = TransactionSignatureChecker {
|
// todo: log error here
|
||||||
// signer: signer,
|
return Err(TransactionError::Signature(input_index))
|
||||||
// input_index: input_index,
|
}
|
||||||
// };
|
|
||||||
// let input: Script = input.script_sig().into();
|
|
||||||
// let output: Script = paired_output.script_pubkey.into();
|
|
||||||
// let flags = VerificationFlags::default().verify_p2sh(true);
|
|
||||||
//
|
|
||||||
// if !verify_script(&input, &output, &flags, &checker).unwrap_or(|e| {
|
|
||||||
// // todo: log error here
|
|
||||||
// println!("transaction signature verification failure: {:?}", e);
|
|
||||||
// false
|
|
||||||
// })
|
|
||||||
// {
|
|
||||||
// return Err(TransactionError::Signature(input_index))
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
Loading…
Reference in New Issue