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
This commit is contained in:
parent
34729c365b
commit
12650e16d3
@ -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)
|
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() {
|
||||||
if int64(block.Time) > time.Now().Unix()+4 {
|
|
||||||
return BlockFutureErr
|
return BlockFutureErr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -287,8 +287,10 @@ func (self *worker) push() {
|
|||||||
|
|
||||||
func (self *worker) makeCurrent() {
|
func (self *worker) makeCurrent() {
|
||||||
block := self.chain.NewBlock(self.coinbase)
|
block := self.chain.NewBlock(self.coinbase)
|
||||||
if block.Time() == self.chain.CurrentBlock().Time() {
|
parent := self.chain.GetBlock(block.ParentHash())
|
||||||
block.Header().Time++
|
|
||||||
|
if block.Time() <= parent.Time() {
|
||||||
|
block.Header().Time = parent.Header().Time + 1
|
||||||
}
|
}
|
||||||
block.Header().Extra = self.extra
|
block.Header().Extra = self.extra
|
||||||
|
|
||||||
@ -312,7 +314,6 @@ func (self *worker) makeCurrent() {
|
|||||||
current.localMinedBlocks = self.current.localMinedBlocks
|
current.localMinedBlocks = self.current.localMinedBlocks
|
||||||
}
|
}
|
||||||
|
|
||||||
parent := self.chain.GetBlock(current.block.ParentHash())
|
|
||||||
current.coinbase.SetGasPool(core.CalcGasLimit(parent))
|
current.coinbase.SetGasPool(core.CalcGasLimit(parent))
|
||||||
|
|
||||||
self.current = current
|
self.current = current
|
||||||
|
Loading…
Reference in New Issue
Block a user