From ed34d1fee792528d1e95c9f776cae543cace527a Mon Sep 17 00:00:00 2001 From: Yucong Sun Date: Tue, 16 Oct 2018 03:24:47 -0700 Subject: [PATCH] Skip seal fields count check when --no-seal-check is used (#9757) * Skip seal fields count check when --no-seal-check is used * Remove trailing whitespace --- ethcore/src/verification/queue/kind.rs | 4 ++-- ethcore/src/verification/verification.rs | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/ethcore/src/verification/queue/kind.rs b/ethcore/src/verification/queue/kind.rs index 7d98aa943..5333cc7e3 100644 --- a/ethcore/src/verification/queue/kind.rs +++ b/ethcore/src/verification/queue/kind.rs @@ -209,8 +209,8 @@ pub mod headers { type Unverified = Header; type Verified = Header; - fn create(input: Self::Input, engine: &EthEngine, _check_seal: bool) -> Result { - match verify_header_params(&input, engine, true) { + fn create(input: Self::Input, engine: &EthEngine, check_seal: bool) -> Result { + match verify_header_params(&input, engine, true, check_seal) { Ok(_) => Ok(input), Err(err) => Err((input, err)) } diff --git a/ethcore/src/verification/verification.rs b/ethcore/src/verification/verification.rs index cc1ee1ad6..653813557 100644 --- a/ethcore/src/verification/verification.rs +++ b/ethcore/src/verification/verification.rs @@ -61,7 +61,7 @@ impl HeapSizeOf for PreverifiedBlock { /// Phase 1 quick block verification. Only does checks that are cheap. Operates on a single block pub fn verify_block_basic(block: &Unverified, engine: &EthEngine, check_seal: bool) -> Result<(), Error> { - verify_header_params(&block.header, engine, true)?; + verify_header_params(&block.header, engine, true, check_seal)?; verify_block_integrity(block)?; if check_seal { @@ -69,7 +69,7 @@ pub fn verify_block_basic(block: &Unverified, engine: &EthEngine, check_seal: bo } for uncle in &block.uncles { - verify_header_params(uncle, engine, false)?; + verify_header_params(uncle, engine, false, check_seal)?; if check_seal { engine.verify_block_basic(uncle)?; } @@ -261,12 +261,14 @@ pub fn verify_block_final(expected: &Header, got: &Header) -> Result<(), Error> } /// Check basic header parameters. -pub fn verify_header_params(header: &Header, engine: &EthEngine, is_full: bool) -> Result<(), Error> { - let expected_seal_fields = engine.seal_fields(header); - if header.seal().len() != expected_seal_fields { - return Err(From::from(BlockError::InvalidSealArity( - Mismatch { expected: expected_seal_fields, found: header.seal().len() } - ))); +pub fn verify_header_params(header: &Header, engine: &EthEngine, is_full: bool, check_seal: bool) -> Result<(), Error> { + if check_seal { + let expected_seal_fields = engine.seal_fields(header); + if header.seal().len() != expected_seal_fields { + return Err(From::from(BlockError::InvalidSealArity( + Mismatch { expected: expected_seal_fields, found: header.seal().len() } + ))); + } } if header.number() >= From::from(BlockNumber::max_value()) {