From c626851e36fdd5fe293f75bf7de8dd67d5e81c74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Fri, 8 Dec 2017 11:43:31 +0100 Subject: [PATCH] Reduce max block timestamp drift to 15 seconds (#7240) * reduce max block timestamp drift to 15 seconds * add test for block timestamp validation within allowed drift --- ethcore/src/verification/verification.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ethcore/src/verification/verification.rs b/ethcore/src/verification/verification.rs index a6e586c02cb..d220d42209e 100644 --- a/ethcore/src/verification/verification.rs +++ b/ethcore/src/verification/verification.rs @@ -230,7 +230,7 @@ pub fn verify_header_params(header: &Header, engine: &Engine, is_full: bool) -> return Err(From::from(BlockError::ExtraDataOutOfBounds(OutOfBounds { min: None, max: Some(maximum_extra_data_size), found: header.extra_data().len() }))); } if is_full { - let max_time = get_time().sec as u64 + 30; + let max_time = get_time().sec as u64 + 15; if header.timestamp() > max_time { return Err(From::from(BlockError::InvalidTimestamp(OutOfBounds { max: Some(max_time), min: None, found: header.timestamp() }))) } @@ -564,9 +564,15 @@ mod tests { check_fail_timestamp(basic_test(&create_test_block_with_data(&header, &good_transactions, &good_uncles), engine)); header = good.clone(); - header.set_timestamp(get_time().sec as u64 + 40); + header.set_timestamp(get_time().sec as u64 + 20); check_fail_timestamp(basic_test(&create_test_block_with_data(&header, &good_transactions, &good_uncles), engine)); + header = good.clone(); + header.set_timestamp(get_time().sec as u64 + 10); + header.set_uncles_hash(good_uncles_hash.clone()); + header.set_transactions_root(good_transactions_root.clone()); + check_ok(basic_test(&create_test_block_with_data(&header, &good_transactions, &good_uncles), engine)); + header = good.clone(); header.set_number(9); check_fail(family_test(&create_test_block_with_data(&header, &good_transactions, &good_uncles), engine, &bc),