add script error to TransactionError::Signature

This commit is contained in:
Svyatoslav Nikolsky 2017-08-23 17:26:19 +03:00
parent 7f14f9b40d
commit b791b92414
3 changed files with 5 additions and 3 deletions

View File

@ -271,6 +271,7 @@ pub mod tests {
use chain::{IndexedBlock, IndexedTransaction}; use chain::{IndexedBlock, IndexedTransaction};
use super::{Verifier, BlockVerificationSink, TransactionVerificationSink, AsyncVerifier, VerificationTask, ChainVerifierWrapper}; use super::{Verifier, BlockVerificationSink, TransactionVerificationSink, AsyncVerifier, VerificationTask, ChainVerifierWrapper};
use types::{BlockHeight, StorageRef, MemoryPoolRef}; use types::{BlockHeight, StorageRef, MemoryPoolRef};
use script::Error as ScriptError;
use VerificationParameters; use VerificationParameters;
#[derive(Default)] #[derive(Default)]
@ -417,7 +418,7 @@ pub mod tests {
verification_level: VerificationLevel::Full, verification_level: VerificationLevel::Full,
verification_edge: 1.into(), 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] #[test]

View File

@ -374,7 +374,7 @@ impl<'a> TransactionEval<'a> {
.verify_witness(self.verify_witness); .verify_witness(self.verify_witness);
try!(verify_script(&input, &output, &script_witness, &flags, &checker, self.signature_version) 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(()) Ok(())

View File

@ -1,6 +1,7 @@
use hash::H256; use hash::H256;
use compact::Compact; use compact::Compact;
use db::Error as DBError; use db::Error as DBError;
use script::Error as SignatureError;
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq)]
/// All possible verification errors /// All possible verification errors
@ -86,7 +87,7 @@ pub enum TransactionError {
/// Referenced coinbase output for the transaction input is not mature enough /// Referenced coinbase output for the transaction input is not mature enough
Maturity, Maturity,
/// Signature invalid for given input /// Signature invalid for given input
Signature(usize), Signature(usize, SignatureError),
/// Unknown previous transaction referenced /// Unknown previous transaction referenced
UnknownReference(H256), UnknownReference(H256),
/// Spends more than claims /// Spends more than claims