- nextBlockTime := uint64(time.Now().UnixNano() / 1e6)
- if minNextBlockTime := bestBlockHeader.Timestamp + consensus.BlockTimeInterval; nextBlockTime < minNextBlockTime {
- nextBlockTime = minNextBlockTime
+
+ now := uint64(time.Now().UnixNano() / 1e6)
+ base := now
+ if now < bestBlockHeader.Timestamp {
+ base = bestBlockHeader.Timestamp
+ }
+ minTimeToNextBlock := consensus.ActiveNetParams.BlockTimeInterval - base%consensus.ActiveNetParams.BlockTimeInterval
+ nextBlockTime := base + minTimeToNextBlock
+ if (nextBlockTime - now) < consensus.ActiveNetParams.BlockTimeInterval/10 {
+ nextBlockTime += consensus.ActiveNetParams.BlockTimeInterval
+ }
+
+ blocker, err := b.chain.GetBlocker(&bestBlockHash, nextBlockTime)
+ if err != nil {
+ log.WithFields(log.Fields{"module": logModule, "error": err, "pubKey": xpubStr}).Error("fail on check is next blocker")
+ continue