Преглед изворни кода

core: retry block now also parellise nonce checks

obscuren пре 10 година
родитељ
комит
37111aa4bd
1 измењених фајлова са 8 додато и 2 уклоњено
  1. 8 2
      core/block_processor.go

+ 8 - 2
core/block_processor.go

@@ -151,11 +151,17 @@ func (sm *BlockProcessor) RetryProcess(block *types.Block) (logs state.Logs, err
 		return nil, ParentError(header.ParentHash)
 		return nil, ParentError(header.ParentHash)
 	}
 	}
 	parent := sm.bc.GetBlock(header.ParentHash)
 	parent := sm.bc.GetBlock(header.ParentHash)
-	if !sm.Pow.Verify(block) {
+
+	// FIXME Change to full header validation. See #1225
+	errch := make(chan bool)
+	go func() { errch <- sm.Pow.Verify(block) }()
+
+	logs, err = sm.processWithParent(block, parent)
+	if !<-errch {
 		return nil, ValidationError("Block's nonce is invalid (= %x)", block.Nonce)
 		return nil, ValidationError("Block's nonce is invalid (= %x)", block.Nonce)
 	}
 	}
 
 
-	return sm.processWithParent(block, parent)
+	return logs, err
 }
 }
 
 
 // Process block will attempt to process the given block's transactions and applies them
 // Process block will attempt to process the given block's transactions and applies them