Просмотр исходного кода

darkfid/task/sync: break the retrieve_blocks loop if block timestamp is invalid

darkfi 1 неделя назад
Родитель
Сommit
922b57633c
2 измененных файлов с 5 добавлено и 1 удалено
  1. 4 0
      bin/darkfid/src/task/sync.rs
  2. 1 1
      src/validator/verification.rs

+ 4 - 0
bin/darkfid/src/task/sync.rs

@@ -562,6 +562,10 @@ async fn retrieve_blocks(
                         .await
                     {
                         Ok(()) | Err(Error::ProposalAlreadyExists) => continue,
+                        Err(Error::PoWInvalidTimestamp) => {
+                            debug!(target: "darkfid::task::sync::retrieve_blocks", "Block {} timestamp is invalid, likely caused by a stale timestamp bound", block.hash());
+                            break 'blocks_loop
+                        }
                         Err(e) => {
                             debug!(target: "darkfid::task::sync::retrieve_blocks", "Error while appending proposal: {e}");
                             continue 'peers_loop

+ 1 - 1
src/validator/verification.rs

@@ -183,7 +183,7 @@ pub fn validate_block(
 
     // Check timestamp validity (4)
     if !module.verify_timestamp_by_median(block.header.timestamp, timestamp_bound)? {
-        return Err(Error::BlockIsInvalid(block.hash().as_string()))
+        return Err(Error::PoWInvalidTimestamp)
     }
 
     // Check PoW data validty (5)