diff --git a/consensus/istanbul/backend/engine.go b/consensus/istanbul/backend/engine.go index 2be22d1d9..a8c756611 100644 --- a/consensus/istanbul/backend/engine.go +++ b/consensus/istanbul/backend/engine.go @@ -364,6 +364,12 @@ func (sb *backend) Prepare(chain consensus.ChainReader, header *types.Header) er return err } header.Extra = extra + + // set header's timestamp + header.Time = new(big.Int).Add(parent.Time, new(big.Int).SetUint64(sb.config.BlockPeriod)) + if header.Time.Int64() < time.Now().Unix() { + header.Time = big.NewInt(time.Now().Unix()) + } return nil } @@ -445,16 +451,7 @@ func (sb *backend) Seal(chain consensus.ChainReader, block *types.Block, stop <- // update timestamp and signature of the block based on its number of transactions func (sb *backend) updateBlock(parent *types.Header, block *types.Block) (*types.Block, error) { - // set block period based the number of tx - period := sb.config.BlockPeriod - - // set header timestamp header := block.Header() - header.Time = new(big.Int).Add(parent.Time, new(big.Int).SetUint64(period)) - time := now().Unix() - if header.Time.Int64() < time { - header.Time = big.NewInt(time) - } // sign the hash seal, err := sb.Sign(sigHash(header).Bytes()) if err != nil {