From 01664986e2fcb9463a7911c8a963005c5da9e43f Mon Sep 17 00:00:00 2001 From: Shawn <44221603+shaspitz@users.noreply.github.com> Date: Sun, 5 Nov 2023 01:25:37 -0700 Subject: [PATCH] logs + handle delay being shorter than period --- consensus/clique/clique.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/consensus/clique/clique.go b/consensus/clique/clique.go index 11cb60d830..ed4e95bdc4 100644 --- a/consensus/clique/clique.go +++ b/consensus/clique/clique.go @@ -500,6 +500,7 @@ func (c *Clique) verifySeal(snap *Snapshot, header *types.Header, parents []*typ // Prepare implements consensus.Engine, preparing all the consensus fields of the // header for running the transactions on top. func (c *Clique) Prepare(chain consensus.ChainHeaderReader, header *types.Header) error { + log.Trace("start of prepare") // If the block isn't a checkpoint, cast a random vote (good enough for now) header.Coinbase = common.Address{} header.Nonce = types.BlockNonce{} @@ -602,6 +603,7 @@ func (c *Clique) Authorize(signer common.Address, signFn SignerFn) { // Seal implements consensus.Engine, attempting to create a sealed block using // the local signing credentials. func (c *Clique) Seal(chain consensus.ChainHeaderReader, block *types.Block, results chan<- *types.Block, stop <-chan struct{}) error { + log.Trace("start of seal") header := block.Header() // Sealing the genesis block is not supported @@ -650,6 +652,14 @@ func (c *Clique) Seal(chain consensus.ChainHeaderReader, block *types.Block, res return err } copy(header.Extra[len(header.Extra)-extraSeal:], sighash) + + // Don't let delay be longer than target block period + if delay.Milliseconds() > int64(c.config.PeriodMs) { + log.Trace("old delay", "delay", common.PrettyDuration(delay)) + delay = time.Millisecond*time.Duration(c.config.PeriodMs) - 20*time.Millisecond + log.Trace("new delay", "delay", common.PrettyDuration(delay)) + } + // Wait until sealing is terminated or delay timeout. log.Trace("Waiting for slot to sign and propagate", "delay", common.PrettyDuration(delay)) go func() {