OSDN Git Service

fix block time (#2069)
authorwyjDoraemon <46176410+wyjDoraemon@users.noreply.github.com>
Mon, 9 Aug 2021 09:26:37 +0000 (04:26 -0500)
committerGitHub <noreply@github.com>
Mon, 9 Aug 2021 09:26:37 +0000 (17:26 +0800)
proposal/blockproposer/blockproposer.go

index dc3dffa..b29db8a 100644 (file)
@@ -57,9 +57,9 @@ func (b *BlockProposer) generateBlocks() {
                bestBlockHash := bestBlockHeader.Hash()
 
                now := uint64(time.Now().UnixNano() / 1e6)
-               base := now
-               if now < bestBlockHeader.Timestamp {
-                       base = bestBlockHeader.Timestamp
+               base := bestBlockHeader.Timestamp
+               if now > bestBlockHeader.Timestamp+consensus.ActiveNetParams.BlockTimeInterval+consensus.ActiveNetParams.BlockTimeInterval/10 {
+                       base = now - consensus.ActiveNetParams.BlockTimeInterval
                }
                minTimeToNextBlock := consensus.ActiveNetParams.BlockTimeInterval - base%consensus.ActiveNetParams.BlockTimeInterval
                nextBlockTime := base + minTimeToNextBlock
@@ -67,6 +67,10 @@ func (b *BlockProposer) generateBlocks() {
                        nextBlockTime += consensus.ActiveNetParams.BlockTimeInterval
                }
 
+               if nextBlockTime > now {
+                       continue
+               }
+
                validator, err := b.chain.GetValidator(&bestBlockHash, nextBlockTime)
                if err != nil {
                        log.WithFields(log.Fields{"module": logModule, "error": err, "pubKey": xpubStr}).Error("fail on check is next blocker")