From b791b92414c208849e4fee52f44ba635d1d18392 Mon Sep 17 00:00:00 2001 From: Svyatoslav Nikolsky Date: Wed, 23 Aug 2017 17:26:19 +0300 Subject: [PATCH] add script error to TransactionError::Signature --- sync/src/synchronization_verifier.rs | 3 ++- verification/src/accept_transaction.rs | 2 +- verification/src/error.rs | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/sync/src/synchronization_verifier.rs b/sync/src/synchronization_verifier.rs index 67550801..2eb42716 100644 --- a/sync/src/synchronization_verifier.rs +++ b/sync/src/synchronization_verifier.rs @@ -271,6 +271,7 @@ pub mod tests { use chain::{IndexedBlock, IndexedTransaction}; use super::{Verifier, BlockVerificationSink, TransactionVerificationSink, AsyncVerifier, VerificationTask, ChainVerifierWrapper}; use types::{BlockHeight, StorageRef, MemoryPoolRef}; + use script::Error as ScriptError; use VerificationParameters; #[derive(Default)] @@ -417,7 +418,7 @@ pub mod tests { verification_level: VerificationLevel::Full, verification_edge: 1.into(), }); - assert_eq!(wrapper.verify_block(&bad_transaction_block), Err(VerificationError::Transaction(1, TransactionError::Signature(0)))); + assert_eq!(wrapper.verify_block(&bad_transaction_block), Err(VerificationError::Transaction(1, TransactionError::Signature(0, ScriptError::InvalidStackOperation)))); } #[test] diff --git a/verification/src/accept_transaction.rs b/verification/src/accept_transaction.rs index d86e1ffd..3bfcd1e9 100644 --- a/verification/src/accept_transaction.rs +++ b/verification/src/accept_transaction.rs @@ -374,7 +374,7 @@ impl<'a> TransactionEval<'a> { .verify_witness(self.verify_witness); try!(verify_script(&input, &output, &script_witness, &flags, &checker, self.signature_version) - .map_err(|_| TransactionError::Signature(index))); + .map_err(|e| TransactionError::Signature(index, e))); } Ok(()) diff --git a/verification/src/error.rs b/verification/src/error.rs index bc312260..98ec34a2 100644 --- a/verification/src/error.rs +++ b/verification/src/error.rs @@ -1,6 +1,7 @@ use hash::H256; use compact::Compact; use db::Error as DBError; +use script::Error as SignatureError; #[derive(Debug, PartialEq)] /// All possible verification errors @@ -86,7 +87,7 @@ pub enum TransactionError { /// Referenced coinbase output for the transaction input is not mature enough Maturity, /// Signature invalid for given input - Signature(usize), + Signature(usize, SignatureError), /// Unknown previous transaction referenced UnknownReference(H256), /// Spends more than claims