commit
8951a03db3
|
@ -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)
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -219,7 +219,7 @@ out:
|
||||||
|
|
||||||
func newLocalMinedBlock(blockNumber uint64, prevMinedBlocks *uint64RingBuffer) (minedBlocks *uint64RingBuffer) {
|
func newLocalMinedBlock(blockNumber uint64, prevMinedBlocks *uint64RingBuffer) (minedBlocks *uint64RingBuffer) {
|
||||||
if prevMinedBlocks == nil {
|
if prevMinedBlocks == nil {
|
||||||
minedBlocks = &uint64RingBuffer{next: 0, ints: make([]uint64, miningLogAtDepth + 1)}
|
minedBlocks = &uint64RingBuffer{next: 0, ints: make([]uint64, miningLogAtDepth+1)}
|
||||||
} else {
|
} else {
|
||||||
minedBlocks = prevMinedBlocks
|
minedBlocks = prevMinedBlocks
|
||||||
}
|
}
|
||||||
|
@ -244,15 +244,16 @@ func (self *worker) wait() {
|
||||||
}
|
}
|
||||||
self.mux.Post(core.NewMinedBlockEvent{block})
|
self.mux.Post(core.NewMinedBlockEvent{block})
|
||||||
|
|
||||||
var stale string
|
var stale, confirm string
|
||||||
canonBlock := self.chain.GetBlockByNumber(block.NumberU64())
|
canonBlock := self.chain.GetBlockByNumber(block.NumberU64())
|
||||||
if canonBlock != nil && canonBlock.Hash() != block.Hash() {
|
if canonBlock != nil && canonBlock.Hash() != block.Hash() {
|
||||||
stale = "stale-"
|
stale = "stale "
|
||||||
} else {
|
} else {
|
||||||
|
confirm = "Wait 5 blocks for confirmation"
|
||||||
self.current.localMinedBlocks = newLocalMinedBlock(block.Number().Uint64(), self.current.localMinedBlocks)
|
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{
|
jsonlogger.LogJson(&logger.EthMinerNewBlock{
|
||||||
BlockHash: block.Hash().Hex(),
|
BlockHash: block.Hash().Hex(),
|
||||||
|
@ -287,8 +288,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 +315,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