From 12650e16d3aa453a65417a79d79af5ce98cc4b01 Mon Sep 17 00:00:00 2001 From: obscuren Date: Wed, 27 May 2015 13:08:06 +0200 Subject: [PATCH] core, miner: fixed miner time issue and removed future blocks * Miner should no longer generate blocks with a time stamp less or equal than it's parent. * Future blocks are no longer processed and queued directly. Closes #1118 --- core/block_processor.go | 3 +-- miner/worker.go | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/block_processor.go b/core/block_processor.go index 037782407..454c40e27 100644 --- a/core/block_processor.go +++ b/core/block_processor.go @@ -306,8 +306,7 @@ func (sm *BlockProcessor) ValidateHeader(block, parent *types.Header, checkPow b return fmt.Errorf("GasLimit check failed for block %v (%v > %v)", block.GasLimit, a, b) } - // Allow future blocks up to 10 seconds - if int64(block.Time) > time.Now().Unix()+4 { + if int64(block.Time) > time.Now().Unix() { return BlockFutureErr } diff --git a/miner/worker.go b/miner/worker.go index 12ed65626..182b99398 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -287,8 +287,10 @@ func (self *worker) push() { func (self *worker) makeCurrent() { block := self.chain.NewBlock(self.coinbase) - if block.Time() == self.chain.CurrentBlock().Time() { - block.Header().Time++ + parent := self.chain.GetBlock(block.ParentHash()) + + if block.Time() <= parent.Time() { + block.Header().Time = parent.Header().Time + 1 } block.Header().Extra = self.extra @@ -312,7 +314,6 @@ func (self *worker) makeCurrent() { current.localMinedBlocks = self.current.localMinedBlocks } - parent := self.chain.GetBlock(current.block.ParentHash()) current.coinbase.SetGasPool(core.CalcGasLimit(parent)) self.current = current