aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-05-27 19:51:42 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-05-27 19:51:42 +0800
commit8951a03db39a2a877ada34c927d78352d465303e (patch)
tree36a8c7e50090337c9f8342594af82dd231c03ad0
parente13f413ef54ca84d3dfb999e18d64b361b98b60a (diff)
parent912ae80350c72a9cbefe60969fc9c88b1db302f3 (diff)
downloadgo-tangerine-8951a03db39a2a877ada34c927d78352d465303e.tar.gz
go-tangerine-8951a03db39a2a877ada34c927d78352d465303e.tar.zst
go-tangerine-8951a03db39a2a877ada34c927d78352d465303e.zip
Merge pull request #1121 from obscuren/miner_time_fix
Miner time fix
-rw-r--r--core/block_processor.go3
-rw-r--r--miner/worker.go16
2 files changed, 10 insertions, 9 deletions
diff --git a/core/block_processor.go b/core/block_processor.go
index e064cdd80..6cd1c8aa3 100644
--- a/core/block_processor.go
+++ b/core/block_processor.go
@@ -304,8 +304,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..bc6955169 100644
--- a/miner/worker.go
+++ b/miner/worker.go
@@ -219,7 +219,7 @@ out:
func newLocalMinedBlock(blockNumber uint64, prevMinedBlocks *uint64RingBuffer) (minedBlocks *uint64RingBuffer) {
if prevMinedBlocks == nil {
- minedBlocks = &uint64RingBuffer{next: 0, ints: make([]uint64, miningLogAtDepth + 1)}
+ minedBlocks = &uint64RingBuffer{next: 0, ints: make([]uint64, miningLogAtDepth+1)}
} else {
minedBlocks = prevMinedBlocks
}
@@ -244,15 +244,16 @@ func (self *worker) wait() {
}
self.mux.Post(core.NewMinedBlockEvent{block})
- var stale string
+ var stale, confirm string
canonBlock := self.chain.GetBlockByNumber(block.NumberU64())
if canonBlock != nil && canonBlock.Hash() != block.Hash() {
- stale = "stale-"
+ stale = "stale "
} else {
+ confirm = "Wait 5 blocks for confirmation"
self.current.localMinedBlocks = newLocalMinedBlock(block.Number().Uint64(), self.current.localMinedBlocks)
}
- glog.V(logger.Info).Infof("🔨 Mined %sblock #%v (%x)", stale, block.Number(), block.Hash().Bytes()[:4])
+ glog.V(logger.Info).Infof("🔨 Mined %sblock (#%v / %x). %s", stale, block.Number(), block.Hash().Bytes()[:4], confirm)
jsonlogger.LogJson(&logger.EthMinerNewBlock{
BlockHash: block.Hash().Hex(),
@@ -287,8 +288,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 +315,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